前言
在学习大语言模型的时候,总会遇到各种各样的名词,像自注意力
、多头
、因果
、自回归
、掩码
、残差连接
、归一化
等等。这些名词会让学习者听的云里雾里,觉得门槛太高而放弃。
本教程将会带你从零开始,一步一步的去构建每一个组件,揭开它们的神秘面纱,并最终用这些组件组装成一个迷你版的大语言模型。在构建过程中,我们会从实现原理的角度去剖析这些组件都是做什么的,又是怎么被设计出来的,做到知其然,知其所以然。
不仅如此,本专栏还会带你从零开始一步一步训练这个语言模型,经过预训练(Pretrain)、监督微调(SFT)、偏好学习(DPO)最终训练出一个可以进行对话聊天的大语言模型。整个过程会像探宝一样,你会因为将一个又一个新知识收入囊中而充满惊喜,也会因为弄懂了一个又一个的内部原理而持续收获到原来如此
。
专栏内容
本教程大体上可以分为四部分,分别如下:
- 第一部分是关于语言模型的基本认识、分词器和嵌入;
- 第二部分是关于多头因果自注意力、transformer块、GPT模型构建;
- 第三部分是关于预训练、监督微调、偏好学习以及相关训练的数据集处理;
- 最后一部分是关于自回归文本生成、kvcache、推理加速相关的内容;
教程具有清晰的章节结构,完整目录如下:
- ScratchLLMStepByStep:带你从零认识语言模型
- ScratchLLMStepByStep:带你从零认识Tokenizer
- ScratchLLMStepByStep:带你从零训练tokenizer
- ScratchLLMStepByStep:词嵌入和位置嵌入
- ScratchLLMStepByStep:带你从零认识自注意力
- ScratchLLMStepByStep:带你实现因果注意力机制
- ScratchLLMStepByStep:带你实现多头注意力
- ScratchLLMStepByStep:带你构建TransformerBlock
- ScratchLLMStepByStep:带你构建MiniGPT
- ScratchLLMStepByStep:带你构建高效数据加载器
- ScratchLLMStepByStep:带你进行模型预训练(制作中)
- ScratchLLMStepByStep:带你进行分类监督微调(制作中)
- ScratchLLMStepByStep:带你进行指令监督微调(制作中)
- ScratchLLMStepByStep:带你开始DPO偏好学习(制作中)
- ScratchLLMStepByStep:带你评估模型推理性能(制作中)
- ScratchLLMStepByStep:带你压测模型推理性能(制作中)
- ScratchLLMStepByStep:带你实现选词算法(制作中)
- ScratchLLMStepByStep:带你加速模型推理(制作中)
前面几章带链接的已经制作完成,剩下的将会以每周两篇的频率更新。
本系列教程有如下特点:
-
可运行的代码示例:每个章节都附有运行示例,帮助您更好地理解理论与实践的结合。
-
一步一步的演示:课程中对每个组件的实现过程都进行了逐步拆解和演示。
- -
详细的解释:对每一步用到的相关深度学习知识,都进行了解读和拓展说明。
如何开始?
如果没有模型基础
,可以先从认识模型开始,这篇教程会带你逐层解剖模型生成文本的过程:
- 带你从零认识模型
如果不会搭建环境
,可以参考下面两篇教程来搭建自己的环境:
- conda&pytorch环境搭建笔记
- vLLM&cuda安装笔记
如果没有使用过jupyter
,这里有一篇笔记可以带你入门:
- jupyter学习笔记
最后,感谢你的阅读。这个专栏能够帮助到你,欢迎订阅、评论和转发,如果你有任何问题或需要进一步的帮助,欢迎随时交流!