Skip to content

Diy-LLM带你系统性学习大语言模型

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

Diy-LLM

我们希望这门 CS336 中文课程,不只是斯坦福原版的"汉化版",而是一座为中文学习者量身打造的"LLM炼丹工坊"。在这里,你亲手锻造理解、打磨代码、调控火候,最终炼出属于自己的大模型真丹。

📋 前置要求

  • Python 编程:熟练掌握 Python 和软件工程能力
  • 深度学习基础:熟悉 PyTorch,了解神经网络基本原理
  • 数学基础:线性代数、概率统计、微积分
  • 机器学习:需对机器学习与深度学习的基础知识有扎实掌握
  • GPU 编程(可选):了解 CUDA 基础概念会更佳,不懂也没关系,本项目也有入门教程

📚 课程愿景

  • 硬核理论与动手实战并重:我们会完整保留原版课程的技术深度,但会用更符合中文学习者思维的方式重构知识体系。对于必要的数学、深度学习前置知识,我们会帮你补齐,确保学习曲线平滑,让每个认真投入的人都能跟上。
  • 搭建一套循序渐进的知识体系:将构建LLM这个庞大工程,拆解成一个个可以上手、可以理解的模块。学完后,你将拥有一个关于LLM的完整知识图谱。
  • 代码驱动,知行合一:课程的核心是"用代码思考"。所有作业,我们不仅会提供实现代码,更会分享写下每一行代码时的思考过程。
  • 贴近国内环境的本土化改造:考虑到国内的网络环境、大家手头的计算资源以及独特的开源生态,我们会提供更接地气的解决方案和案例(比如,多聊聊Qwen、DeepSeek等国产优秀模型)。

🎯 项目意义

学完这门课,你能得到什么?

  • 扎实的技术地基:你将能亲手"造"出自己的LLM,对每个核心组件都了然于胸。
  • 宝贵的工程经验:掌握从数据处理、模型训练到部署优化,堪比大厂的全流程实战技能。
  • 突出的行业竞争力:具备大模型研发的核心能力,为你进入心仪的大厂或团队铺平道路。
  • 清晰的科研视野:对LLM领域有体系化的认知,为未来深入研究打下坚实的基础。

📖 课程目录

章节关键内容配套作业状态
前言项目由来、背景及学习建议-
第1章 工具使用W&B 使用与实验追踪-📝
第2章 分词器分词器原理与 BPE 实现作业1
第3章 PyTorch 与资源核算训练原语、算力/显存估算-
第4章 语言模型架构与训练细节Transformer 架构与训练要点作业1
第5章 混合专家模型MoE 原理、路由与工程实践-
第6章 GPU 与相关优化GPU 基础与优化技巧作业2
第7章 GPU 高性能编程CUDA 与高性能编程作业2
第8章 分布式训练并行范式与跨机训练作业2
第9章 Scaling Laws扩展定律与实验作业3
第10章 推理推理性能与落地优化作业6
第11章 数据工程数据清洗、构建与管理作业4
第12章 评估与基准测试指标体系与评测方法作业6
第13章 大模型的基本训练流程预训练、SFT、RL 流程作业5
第14章 可验证奖励的强化学习RLVR 思想与实践作业5
第15章 扩展内容- 什么是LLM推理?-🔄

状态图例说明:✅ 已完成 🔄 更新中 📝 待完善 🚧 筹备中 ⏸️ 暂缓

📝 作业概览

作业核心任务状态
作业1:手搓大模型实现 tokenizer、model architecture、optimizer,训练一个极简语言模型
作业2:系统优化性能分析与基准测试;用 Triton 实现 FlashAttention-2;构建分布式训练代码
作业3:扩展定律理解 Transformer 各组件功能;拟合 scaling law 预测模型扩展效果
作业4:数据处理将 Common Crawl 原始数据转换为预训练数据集,执行过滤与去重
作业5:模型对齐应用 SFT 与强化学习(如 GRPO)训练模型解决数学问题
作业6:模型评估使用 lm-evaluation-harness 和 evalscope 进行多维度评测(语言理解、常识推理、代码、数学推理)

🚀 快速开始

bash
# 克隆仓库
git clone https://github.com/datawhalechina/diy-llm.git
cd diy-llm

# 安装基础依赖(根据具体作业需求安装)

学习路径

1️⃣ 理论学习 → 按章节顺序阅读 docs/ 目录下的文档
2️⃣ 实践练习 → 完成 coursework/ 目录下的 6 个作业
3️⃣ 深入理解 → 阅读代码实现,理解每个组件的设计

项目结构

text
CS336-Chinese-co-construction/
├── docs/                    # 理论章节文档
│   ├── 前言/
│   ├── chapter1/           # 工具使用
│   ├── chapter2/           # 分词器
│   ├── chapter3/           # PyTorch 与资源核算
│   ├── chapter4/           # 语言模型架构与训练细节
│   ├── chapter5/           # 混合专家模型
│   ├── chapter6/           # GPU 与相关优化
│   ├── chapter7/           # GPU 高性能编程
│   ├── chapter8/           # 分布式训练
│   ├── chapter9/           # Scaling Laws
│   ├── chapter10/          # 推理
│   ├── chapter11/          # 数据工程
│   ├── chapter12/          # 评估与基准测试
│   ├── chapter13/          # 大模型的基本训练流程
│   ├── chapter14/          # 可验证奖励的强化学习
│   └── chapter15/          # 前沿扩展内容
├── coursework/              # 实践作业
│   ├── assignment1-basics/        # 作业1:手搓大模型
│   ├── assignment2-systems/       # 作业2:系统优化
│   ├── assignment3-scaling/       # 作业3:扩展定律
│   ├── assignment4-data/          # 作业4:预训练数据处理
│   ├── assignment5-alignment/     # 作业5:对齐
│   └── assignment6-evaluation/    # 作业6:评估
├── README.md               # 项目说明
└── .gitignore              # Git忽略配置

🔗 相关链接

❓ 常见问题

Q: 没有 GPU 可以学习吗?

理论部分可以正常学习,作业中的部分内容可以在 CPU 上调试,但完整训练需要 GPU。建议使用云服务平台。

Q: 与原版 CS336 有什么区别?

我们在保留原版技术深度的基础上,针对中文学习者进行了本土化改造,包括中文讲解、作业实现、更详细的参考内容来源、国产模型案例等。

👥 贡献者

贡献者名单

pic
徐虎

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

pic
李盛康

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

pic
黎又榛

项目负责人
Datawhale-鲸英助教
负责内容:第2、5、10、11、13章;作业1、3

注:我们感谢每一位为项目做出贡献的开发者!

我们欢迎所有形式的贡献!无论是文档改进、代码优化、bug修复还是新内容添加,都是对项目的宝贵支持。

如何贡献

  1. 报告问题:如果发现文档错误、代码bug或改进建议,欢迎提交 Issue
  2. 提交代码:Fork 本仓库,创建你的特性分支,提交更改后发起 Pull Request
  3. 完善文档:帮助改进文档、翻译内容或添加示例
  4. 分享经验:在讨论区分享学习心得和实践经验

贡献指南

  • 提交代码前请确保代码风格一致
  • 添加新内容时请遵循现有的文档格式
  • 提交PR时请提供清晰的描述和变更说明
  • 欢迎在Issue中讨论大的改动方案

📝 更新日志

项目持续更新中,最新进展请查看 GitHub Releases 或提交记录。

📄 许可证

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

🙏 致谢

  • 感谢 Stanford CS336 课程团队提供优秀的原版课程
  • 特别感谢@Sm1les对本项目的帮助与支持
  • 感谢所有为项目做出贡献的开发者
  • 感谢开源社区的支持与反馈

⭐ Star History

如果这个项目对你有帮助,欢迎给个 Star ⭐️!

Star History Chart


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

Made with ❤️ by the Datawhale