从头开始手写一个Qwen的Naive CUDA Kernel推理引擎(三)
为了加快文档编写速度,我们加快描述。 首先是RMSNorm的实现。我们这里的实现是遍历Embedding_batch中的每个Embedding的Token,对其做RMSNorm的操作: embedding_batch RMSNorm(const embedding_batch &token_embe
01
为了加快文档编写速度,我们加快描述。 首先是RMSNorm的实现。我们这里的实现是遍历Embedding_batch中的每个Embedding的Token,对其做RMSNorm的操作: embedding_batch RMSNorm(const embedding_batch &token_embe
02
Tokenizer 概述 下一步是Tokenizer(分词器),Tokenizer是Embedding之前最重要的一步。 它是用来将本文拆分成模型或机器可以处理的小单位,并分配一个唯一的标识符(Token)。 分词流程 分词流程包括Normalization, Pre-tokenization, M
03
在上学期的课程中,我们的任务是对修改后的llama2.c项目(移除了kv-cache和编译器优化)进行优化。因为这个项目强制按组分配,所以我没有机会完整的从头来编写并优化LLM的推理引擎。因此在这里尝试手动从头使用CPU,Naive CUDA Kernel,写一个Qwen的推理引擎。 在这里我们首先