alt text

Diy-LLM

简体中文 English

GitHub stars GitHub forks Language GitHub Project

📚 在线阅读地址

📚 带你系统性学习大语言模型

一座为中文学习者量身打造的"LLM炼丹工坊"

我们希望这门 CS336 中文课程,不只是斯坦福原版的"汉化版",而是一座为中文学习者量身打造的"LLM炼丹工坊"。在这里,你亲手锻造理解、打磨代码、调控火候,最终炼出属于自己的大模型真丹。 ## 📋 前置要求 - **Python 编程**:熟练掌握 Python 和软件工程能力 - **深度学习基础**:熟悉 PyTorch,了解神经网络基本原理 - **数学基础**:线性代数、概率统计、微积分 - **机器学习**:需对机器学习与深度学习的基础知识有扎实掌握 - **GPU 编程(可选)**:了解 CUDA 基础概念会更佳,不懂也没关系,本项目也有入门教程 ## 📚 课程愿景 - **硬核理论与动手实战并重**:我们会完整保留原版课程的技术深度,但会用更符合中文学习者思维的方式重构知识体系。对于必要的数学、深度学习前置知识,我们会帮你补齐,确保学习曲线平滑,让每个认真投入的人都能跟上。 - **搭建一套循序渐进的知识体系**:将构建LLM这个庞大工程,拆解成一个个可以上手、可以理解的模块。学完后,你将拥有一个关于LLM的完整知识图谱。 - **代码驱动,知行合一**:课程的核心是"用代码思考"。所有作业,我们不仅会提供实现代码,更会分享写下每一行代码时的思考过程。 - **贴近国内环境的本土化改造**:考虑到国内的网络环境、大家手头的计算资源以及独特的开源生态,我们会提供更接地气的解决方案和案例(比如,多聊聊Qwen、DeepSeek等国产优秀模型)。 ## 🎯 项目意义 学完这门课,你能得到什么? - **扎实的技术地基**:你将能亲手"造"出自己的LLM,对每个核心组件都了然于胸。 - **宝贵的工程经验**:掌握从数据处理、模型训练到部署优化,堪比大厂的全流程实战技能。 - **突出的行业竞争力**:具备大模型研发的核心能力,为你进入心仪的大厂或团队铺平道路。 - **清晰的科研视野**:对LLM领域有体系化的认知,为未来深入研究打下坚实的基础。 ## 📖 课程目录 | 章节 | 关键内容 | 配套作业 | 状态 | |------|----------|----------|------| | [前言](docs/zh/前言.md) | 项目背景、学习路线、前置知识 | - | ✅ | | [第1章 工具使用](docs/zh/chapter1) | W&B 实验追踪、超参数搜索、可视化面板 | - | 📝 | | [第2章 分词器](docs/zh/chapter2/chapter2_分词器.md) | BPE 算法原理、Unicode 规范化、手写 tokenizer 训练代码 | [作业1](coursework/assignment1-basics/) | ✅ | | [第3章 PyTorch 与资源核算](docs/zh/chapter3/chapter3_pytorch与资源核算.md) | 混合精度训练、梯度累积、FLOPs/显存估算 | - | ✅ | | [第4章 语言模型架构与训练细节](docs/zh/chapter4/chapter4_第四章语言模型架构和训练的技术细节.md) | RoPE、RMSNorm、SwiGLU、AdamW、Pre-Norm vs Post-Norm、学习率调度 | [作业1](coursework/assignment1-basics/) | ✅ | | [第5章 混合专家模型](docs/zh/chapter5/chapter5_混合专家模型.md) | Top-K 路由、负载均衡、辅助损失、Expert Parallelism、DeepSeekMoE | - | ✅ | | [第6章 GPU 与相关优化](docs/zh/chapter6/chapter6_第六章GPU和GPU相关的优化.md) | 显存带宽与计算强度、Flash Attention、Kernel Fusion、混合精度、BF16/TF32 | [作业2](coursework/assignment2-systems/) | ✅ | | [第7章 GPU 高性能编程](docs/zh/chapter7/chapter7_第七章GPU高性能编程.md) | CUDA 编程模型、Tensor Cores、Shared Memory、Triton 入门 | [作业2](coursework/assignment2-systems/) | ✅ | | [第8章 分布式训练](docs/zh/chapter8/chapter8_第八章分布式训练.md) | 数据并行/模型并行/流水线并行、ZeRO-1/2/3、FSDP、梯度累积、All-Reduce | [作业2](coursework/assignment2-systems/) | ✅ | | [第9章 Scaling Laws](docs/zh/chapter9/chapter9_Scaling_Laws.md) | Chinchilla 定律、计算最优配置、Scaling 实验设计、Extrapolation | [作业3](coursework/assignment3-scaling/) | ✅ | | [第10章 推理](docs/zh/chapter10/推理.md) | KV Cache、投机解码、量化 (GPTQ/AWQ)、PagedAttention、Continuous Batching | [作业6](coursework/assignment6-evaluation/) | ✅ | | [第11章 数据工程](docs/zh/chapter11/chapter11_数据工程.md) | 数据质量过滤、MinHash 去重、PII 脱敏、数据配比、Data Curriculum | [作业4](coursework/assignment4-data/) | ✅ | | [第12章 评估与基准测试](docs/zh/chapter12/chapter12_评估与基准测试.md) | MMLU、HumanEval、HELM、CEval、AlpacaEval、Arena 排名 | [作业6](coursework/assignment6-evaluation/) | ✅ | | [第13章 大模型的基本训练流程](docs/zh/chapter13/chapter13_第十三章大模型的基本训练流程.md) | Pre-training、SFT、DPO、RLHF PPO 流程、Alignment Tax | [作业5](coursework/assignment5-alignment/) | ✅ | | [第14章 可验证奖励的强化学习](docs/zh/chapter14/chapter14_可验证奖励的强化学习.md) | GRPO、Rule-based Verifier、Outcome/Process Reward、RLVR 与 R1 训练方案 | [作业5](coursework/assignment5-alignment/) | ✅ | | [第15章 多模态模型](docs/zh/chapter15/chapter15_多模态模型.md) | 从 CLIP 到 Omni Model:CLIP/SigLIP、LLaVA、Qwen-VL、Chameleon | - | ✅ | | [第16章 扩展内容](docs/zh/chapter16/) | 1. 什么是LLM推理?(黎又榛)
2. LLM 的未来 - Lecun(黎又榛、jiangyinhe、李盛康、徐虎)| - | 🔄 | > 状态图例说明:✅ 已完成 🔄 更新中 📝 待完善 🚧 筹备中 ⏸️ 暂缓 ## 📝 作业概览 | 作业 | 核心任务 |状态 | |------|----------|------| | [作业1:手搓大模型](coursework/assignment1-basics/) | 实现 tokenizer、model architecture、optimizer,训练一个极简语言模型 | ✅ | | [作业2:系统优化](coursework/assignment2-systems/) | 性能分析与基准测试;用 Triton 实现 FlashAttention-2;构建分布式训练代码 | ✅ | | [作业3:扩展定律](coursework/assignment3-scaling/) | 理解 Transformer 各组件功能;拟合 scaling law 预测模型扩展效果 | ✅ | | [作业4:数据处理](coursework/assignment4-data/) | 将 Common Crawl 原始数据转换为预训练数据集,执行过滤与去重 | ✅ | | [作业5:模型对齐](coursework/assignment5-alignment/) | 应用 SFT 与强化学习(如 GRPO)训练模型解决数学问题 | ✅ | | [作业6:模型评估](coursework/assignment6-evaluation/) | 使用 lm-evaluation-harness 和 evalscope 进行多维度评测(语言理解、常识推理、代码、数学推理) | ✅ | ## 🚀 快速开始 ```bash # 克隆仓库 git clone https://github.com/datawhalechina/diy-llm.git cd diy-llm # 安装基础依赖(根据具体作业需求安装) ``` ### 学习路径 1️⃣ 理论学习 → 按章节顺序阅读 `docs/zh/` 目录下的中文文档(English version in `docs/en/`) 2️⃣ 实践练习 → 完成 `coursework/` 目录下的 6 个作业 3️⃣ 深入理解 → 阅读代码实现,理解每个组件的设计 ### 项目结构 ``` diy-llm/ ├── docs/ # 在线文档 │ ├── zh/ # 中文文档(默认) │ │ ├── 前言.md │ │ ├── chapter1/ # 工具使用 │ │ ├── chapter2/ # 分词器 │ │ ├── chapter3/ # PyTorch 与资源核算 │ │ ├── chapter4/ # 语言模型架构与训练细节 │ │ ├── chapter5/ # 混合专家模型 │ │ ├── chapter6/ # GPU 与相关优化 │ │ ├── chapter7/ # GPU 高性能编程 │ │ ├── chapter8/ # 分布式训练 │ │ ├── chapter9/ # Scaling Laws │ │ ├── chapter10/ # 推理 │ │ ├── chapter11/ # 数据工程 │ │ ├── chapter12/ # 评估与基准测试 │ │ ├── chapter13/ # 大模型的基本训练流程 │ │ ├── chapter14/ # 可验证奖励的强化学习 │ │ ├── chapter15/ # 多模态模型 │ │ └── chapter16/ # 前沿扩展内容 │ ├── en/ # English documentation │ │ └── ... │ └── .vitepress/ # VitePress 配置 ├── coursework/ # 实践作业 │ ├── assignment1-basics/ # 作业1:手搓大模型 │ ├── assignment2-systems/ # 作业2:系统优化 │ ├── assignment3-scaling/ # 作业3:扩展定律 │ ├── assignment4-data/ # 作业4:预训练数据处理 │ ├── assignment5-alignment/ # 作业5:对齐 │ └── assignment6-evaluation/ # 作业6:评估 ├── README.md # 中文项目说明 ├── README_EN.md # English project overview └── .gitignore # Git忽略配置 ``` ### PDF 版本下载 本教程提供 PDF 版本,方便离线阅读和打印学习。为防止各类营销号加水印后贩卖给 LLM 的读者,我们特地在 PDF 文件中添加了不影响阅读的 Datawhale 开源标志水印,敬请谅解~ > 📥 **Diy-LLM 课程讲义 PDF**: [https://github.com/datawhalechina/diy-llm/releases/latest/](https://github.com/datawhalechina/diy-llm/releases/latest/) ## 🔗 相关链接 - **仓库地址**:https://github.com/datawhalechina/diy-llm - **在线阅读地址**:https://datawhalechina.github.io/diy-llm/ - **原版课程主页**:[Stanford CS336 (Spring 2026)](https://cs336.stanford.edu/) - **原版课程项目**:https://github.com/stanford-cs336/lectures/tree/main ## ❓ 常见问题
Q: 没有 GPU 可以学习吗? 理论部分可以正常学习,作业中的部分内容可以在 CPU 上调试,但完整训练需要 GPU。建议使用云服务平台。
Q: 与原版 CS336 有什么区别? 我们在保留原版技术深度的基础上,针对中文学习者进行了本土化改造,包括中文讲解、作业实现、更详细的参考内容来源、国产模型案例等。
## 💬 读者交流群 欢迎加入 Diy-LLM 读者交流群,与大家一起交流学习、答疑解惑:
读者交流群1二维码
读者交流群1
读者交流群2二维码
读者交流群2
群1满员后可加入群2。如果两个群二维码都过期或已满,可以添加以下任一负责人的微信(备注「diy-llm」),由我们拉你入群: | 负责人 | 微信号 | |--------|--------| | 徐虎 | `xuhu96736` | | 黎又榛 | `zydsx111` | | 李盛康 | `muzichengminguangli` | ## 👥 贡献者 ### 贡献者名单
pic
徐虎

项目负责人
Datawhale 成员
上海交通大学
负责内容:第1、3、9、12、14、15章;作业5、6;全文内容审核

pic
李盛康

项目负责人
Datawhale 成员
西安邮电大学
负责内容:第4、6、7、8、13章;作业2、4

pic
黎又榛

项目负责人
Datawhale 成员
负责内容:第2、5、10、11、13章;作业1、3;

### 社区贡献 - 感谢 [@aimetrics](https://github.com/aimetrics) 在[作业1 的 train.py](https://github.com/datawhalechina/diy-llm/blob/main/coursework/assignment1-basics/train.py) 中,增加了在 Macbook 设备上的 MPS 支持 - 感谢[@FuTseYi](https://github.com/FuTseYi)(Datawhale成员)对网站迁移、部署和重构的支持 - 感谢[@jiangyinhe](https://github.com/jiangyinhe)参与第 16 章扩展内容《LLM 的未来 - Lecun》的整理;基于中文版内容实现了第一章、前言的英文版翻译; - 感谢[@Excelius-Wang](https://github.com/Excelius-Wang) 补充 C-EVAL 中文 benchmark 的介绍,并接入到 assignment6 中 *注:我们感谢每一位为项目做出贡献的开发者,也欢迎社区的小伙伴积极参与贡献!* 我们欢迎所有形式的贡献!无论是文档改进、代码优化、bug修复还是新内容添加,都是对项目的宝贵支持。 ### 如何贡献 1. **报告问题**:如果发现文档错误、代码bug或改进建议,欢迎提交 [Issue](https://github.com/datawhalechina/diy-llm/issues) 2. **提交代码**:Fork 本仓库,创建你的特性分支,提交更改后发起 Pull Request 3. **完善文档**:帮助改进文档、翻译内容或添加示例 4. **分享经验**:在讨论区分享学习心得和实践经验 ### 贡献指南 - 提交代码前请确保代码风格一致 - 添加新内容时请遵循现有的文档格式 - 提交PR时请提供清晰的描述和变更说明 - 欢迎在Issue中讨论大的改动方案 ## 📝 更新日志 项目持续更新中,最新进展请查看 [GitHub Releases](https://github.com/datawhalechina/diy-llm/releases) 或提交记录。 ## 📄 许可证 知识共享许可协议 本作品采用 [知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议](http://creativecommons.org/licenses/by-nc-sa/4.0/) 进行许可。 ## 🙏 致谢 - 感谢 Stanford CS336 课程团队提供优秀的原版课程 - 特别感谢[@Sm1les](https://github.com/Sm1les)对本项目的帮助与支持 - 感谢所有为项目做出贡献的开发者 - 感谢开源社区的支持与反馈 ## ⭐ Star History 如果这个项目对你有帮助,欢迎给个 Star ⭐️! Star History Chart ---

让更多人能够系统性地学习大语言模型构建技术

Made with ❤️ by the Datawhale