diy-llm
从零构建大语言模型的全栈课程,手把手实现 Tokenizer→Transformer→分布式训练→R
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
从零构建大语言模型的全栈课程,手把手实现 Tokenizer→Transformer→分布式训练→R
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你想深入理解大语言模型的工作原理,翻遍了论文和博客,却发现"纸上得来终觉浅"——那些公式和架构图总是缺了点什么。Diy-LLM 正是为解决这个痛点而生:它不是又一篇综述文章,而是一座专为中文学习者打造的"LLM 炼丹工坊",带你从代码层面亲手锻造每一个核心组件,从 Tokenizer 到 Transformer,从分布式训练到 RLHF 对齐,亲手"炼"出一个完整的语言模型。
2023 年以来,大语言模型迅速崛起,GPT-4、Claude、DeepSeek、Qwen 等模型不断刷新能力上限。然而,对于普通开发者而言,这些模型始终是一个"黑盒":你可以在 API 调用的另一端使用它,却无法真正理解其内部机理。斯坦福大学 CS336(Scaling Language Models)是该领域的经典课程,但全英文授课、作业难度大、与国内实际环境脱节等问题,让许多中文学习者望而却步。
Datawhale 团队敏锐地捕捉到了这个需求。Datawhale 是国内知名的 AI 开源学习社区,以"学习 AI,一起进步"为理念,已产出大量高质量开源学习资料。Diy-LLM 正是他们在 LLM 领域的最新力作,对 CS336 进行了深度本土化改造:不仅翻译了原版内容,更加入了大量中文解读、国产模型案例(DeepSeek、Qwen),并针对国内网络环境和计算资源提供了更接地气的解决方案。
项目目前已获得 966 颗 GitHub Stars,课程涵盖 15 个章节、6 个渐进式编程作业,从理论到代码,覆盖 LLM 全生命周期。
图1:GRPO(Group Relative Policy Optimization)算法示意图——DeepSeek-R1 的核心技术之一
Diy-LLM 的课程体系设计得非常精妙,按照 LLM 开发流程的逻辑顺序编排,从底层基础设施逐步递进到上层应用。整体分为五大模块:
模块一:基础工具链(第1-2章)
从这里起步。第1章介绍实验追踪工具 W&B(Weights & Biases)、超参数搜索和可视化面板,帮助学习者建立规范的实验管理习惯。第2章深入 Tokenizer(分词器)原理,手把手实现 BPE(Byte Pair Encoding)算法,理解 GPT 系列模型如何将文本转化为数字输入。作业1要求从头训练一个 tokenizer 并实现一个极简语言模型。
模块二:模型架构(第3-5章)
这是课程的核心地带。第3章讲解 PyTorch 高级技巧——混合精度训练(FP16/BF16)、梯度累积和 FLOPs/显存估算,这些是训练 LLM 的必备技能。第4章深入语言模型架构的技术细节:RoPE 位置编码、RMSNorm 归一化、SwiGLU 激活函数、AdamW 优化器、Pre-Norm vs Post-Norm,这些都是 GPT-4、DeepSeek 等主流模型的核心设计。第5章专门讲解混合专家模型(MoE),包括 Top-K 路由、负载均衡、Expert Parallelism,以及 DeepSeekMoE 的实现细节。
模块三:GPU 性能工程(第6-8章)
这一模块是课程的精华之一,也是区别于大多数 LLM 教程的独特之处。第6章从硬件视角分析问题:显存带宽与计算强度的关系、Flash Attention 的原理与实现、Kernel Fusion(算子融合)、混合精度背后的科学。第7章进入 CUDA 编程的世界——从编程模型到 Tensor Cores、Shared Memory,手写 Triton 实现 FlashAttention-2,真正"看到" GPU 在做什么。第8章讲解分布式训练:数据并行、模型并行、流水线并行、ZeRO-1/2/3、FSDP、梯度累积和 All-Reduce,这是训练 GPT-3/4 级别模型的必备技能。作业2要求实现上述所有优化手段。
图2:GRPO 训练过程中的损失曲线变化,展示强化学习优化策略的效果
模块四:扩展定律与推理优化(第9-10章)
第9章讲解 Scaling Laws(扩展定律)—— Chinchilla 定律、计算最优配置、如何设计 Scaling 实验并预测模型扩展效果,这是 OpenAI、DeepMind 等机构训练基础模型的理论依据。第10章进入推理环节:KV Cache、投机解码(Speculative Decoding)、量化技术(GPTQ/AWQ)、PagedAttention 和 Continuous Batching,这些技术决定了模型部署的效率和成本。
模块五:对齐与评估(第11-14章)
这是课程的最后一块拼图。第11章数据工程:Common Crawl 原始数据的清洗、MinHash 去重、PII 脱敏、数据配比和 Data Curriculum。第12章模型评估:MMLU、HumanEval、CEval、AlpacaEval、Arena 等主流基准测试工具的使用。第13章训练流程:Pre-training、SFT(监督微调)、DPO、RLHF PPO 流程,理解"Alignment Tax"现象。第14章深入 RL 的前沿——GRPO,这是 DeepSeek-R1 的核心技术,课程提供了完整的实现代码和实验对比。
图3:计算资源与模型规模的关系曲线,展示 Scaling Laws 的核心规律
Diy-LLM 的代码组织极为清晰,以模块化方式构建,便于学习和复用。
项目根目录下的 coursework/ 目录包含 6 个作业模块,每个模块对应课程的一个核心主题:
assignment1-basics/:基础模块,包含 BPE 分词器实现(bpe_tokenizer/)、Transformer 模型(model.py)和训练脚本(train.py),以及消融实验代码(Assignment1_Ablations/)。核心代码约 400-500 行,注释详尽,覆盖从数据加载到模型训练的完整流程。
assignment2-systems/:系统优化模块,是代码量最大的作业之一。cs336_systems/ 目录包含分布式数据并行(DDP)的完整实现:梯度分片(sharded_optimizer.py)、混合精度训练、flash_attention_triton.py 中手写的 Triton Kernel,以及 my_profile.py 性能分析脚本。src/cs336_basics/ 目录提供了参考实现,tests/ 目录包含完整的单元测试和集成测试。
assignment3-scaling/:Scaling Laws 实验模块,包含数据拟合脚本(fit_scaling.py)、实验记录(scaling_records_70M.npy)和可视化图表。
assignment4-data/:数据处理模块,pyproject.toml 定义了数据处理管道的依赖,从 Common Crawl 原始数据到清洗后的训练语料。
assignment5-alignment/:对齐训练模块,包含了 SFT、DPO、GRPO 等主流对齐技术的实现代码和对比实验图片,是课程的前沿内容。
assignment6-evaluation/:模型评估模块,集成 lm-evaluation-harness 和 evalscope,支持多维度评测。
文档方面,项目采用 VitePress 构建静态文档站(package.json + pnpm),docs/ 目录下有完整的中英文双语文档。Python 代码依赖通过 pyproject.toml 管理,统一使用 uv 作为包管理器,现代化的依赖锁定机制确保环境可复现。
图4:模型训练过程中的 Perplexity 曲线,展示了不同训练配置下的收敛效果
Diy-LLM 对学习者的硬件条件有一定要求。课程明确列出前置要求:Python 编程能力、深度学习基础(熟悉 PyTorch)、线性代数/概率统计/微积分,以及可选的 CUDA 基础。
在硬件层面,作业2(分布式训练)和作业3/4(大规模预训练模拟)需要 GPU 环境。课程推荐 24GB+ 显存的 NVIDIA GPU(如 A100/A6000),16GB 显存也可运行部分作业,但复杂实验会受到限制。课程贴心地提供了资源估算公式(第3章):帮助学习者在有限的硬件条件下合理规划实验规模。
学习路径方面,课程设计了"理论 → 实践 → 深入"三阶段:先按章节阅读文档,再完成编程作业,最后阅读参考实现和原版论文。对于没有 GPU 的学习者,可以通过阅读代码和实验报告来理解核心概念,但动手实践环节需要云端 GPU(如 AutoDL、阿里云 GPU)。
图5:作业2的系统设计总览,展示了从模型实现到分布式优化的完整工程路径
尽管 Diy-LLM 质量上乘,但并非完美。首先,没有现成的 Dockerfile 或 Docker Compose,这意味着从零配置 Python + CUDA 环境对于新手来说有一定门槛。其次,课程主要面向有一定基础的开发者——如果你是深度学习零基础,建议先完成 Fast.ai 或李沐《动手学深度学习》等入门课程再入手。
此外,由于课程内容非常密集(15 章 + 6 个作业),完整学完需要相当的时间投入——Datawhale 官方建议的学习周期约为 4-8 周。对于只是想"浅浅了解" LLM 的读者,这个投入成本可能偏高。
最后,课程的部分作业依赖特定的计算资源和软件版本(如 Triton、PyTorch 特定版本),在 macOS 或 Windows 环境下部分功能可能无法正常运行。
Diy-LLM 的出现填补了中文 LLM 教育领域的空白。在它之前,斯坦福 CS336 几乎是大模型训练的唯一系统性课程资源,但语言和环境的门槛让很多人止步。Diy-LLM 不仅翻译了内容,更加入了中国开发者的独特视角——DeepSeek 的 MoE 设计、国产开源模型的案例、以及针对国内网络环境的适配。
从更宏观的视角看,Diy-LLM 代表了 AI 教育的一个重要趋势:从"使用模型"到"理解模型"的转变。随着 LLM API 越来越便宜、越来越易用,"调 API"的壁垒正在降低,而"训练模型"的能力正在成为下一阶段 AI 人才的核心竞争力。Diy-LLM 正是帮助开发者构建这一能力的系统性路径。
课程仍在活跃更新中(状态显示部分章节为"更新中"),Datawhale 团队持续维护着这个项目。随着 LLM 技术的快速迭代——新的架构、新一代对齐技术、更高效的推理方案——Diy-LLM 的内容也在同步进化。对于想深入理解大语言模型的开发者来说,这是一座值得投入时间和精力的"炼丹工坊"。