Auzdora Lan
Love Coding & AI & Systems

What I cannot create, I do not understand.












CUDA Basics

最近打算实现一个支持CPU/GPU后端计算的大模型推理框架,写GPU的算子需要一些CUDA编程的基础。虽然之前自己写过一个简单的类似Pytorch的基于Python前端,CUDA后端的AI训练框架,在当时学过一点CUDA,同时硕士期间也上过有关CUDA的课程,但由于都是几年前的知识,而且当时也没有即使做笔记记录,导致现在已经全部忘光了。这篇博客的主要目的就是记录一下有关GPU/CUDA的基础知识...

Build your own tokenizer in LLM

Tokenization对于基于Transformer的大语言模型来说至关重要。由于物理硬件的限制,大语言模型只能理解binary类型的数据,所以tokenizer充当着字符串string到integer的翻译工具。但是tokenizer并非只是保存着字符与数字的映射这么简单。这篇文章是对自己学习tokenizer过程的一个总结,参考Andrej Karpathy的视频"Let's build ...

Networking TCP Reciever

在checkpoint0中,实现了一个流控制的byte stream抽象。在checkpoint1中,实现了一个reassembler,它可以将接受到的数据按照原来的数据流顺序组装起来。在本实验中需要实现一个TCP Reciever,这是TCP协议中的一个组件。 TCP Reciver在接受peer’s sender的信息后,也会向peer’s sender发送一个消息,通过send()方法。...

Networking Reassembler

最近在疯狂科研中,无数次尝试不同的方法,调各种各样的参数。闲暇之余想了解一下TCP内部的原理,看到CS144的Lab有这个实验,开一个新的坑,不知道在忙碌的研二期间能不能完成... Task Lab的任务是基于上一个lab实现的stream抽象,实现一个TCP receiver:将接受到的datagram变成一个可靠有序的字节流。从TCP sender的角度讲,它会把字节流分割成segment...

MapReduce Implementation

Introduction Google的研发人员在过去处理大数据任务时,经常需要手写实现很多不同的拥有特定功能的程序,比如爬去文档、网络日志等等。这些任务经常需要将任务分布到很多台计算机处理,以提升处理的性能和速度;但在这个前提下,如何实现并行、分布数据、处理异常机器和失败的任务、保证系统正确运行是一个较为复杂和综合性的问题。 为了解决这样的问题,Google的研发人员开发了一套系统——Mapre...