datawhalechina/diy-llm
🎓 系统性大语言模型构建课程|🛠️ 覆盖预训练数据工程、Tokenizer、Transformer、MoE、GPU 编程 (CUDA/Triton)、分布式训练、Scaling Laws、推理优化及对齐 (SFT/RLHF/GRPO)|🚀 6 个渐进式作业 + 代码驱动,建立 LLM 全栈认知体系
Diy‑LLM – 构建大语言模型的实战中文课程
内容简介 – 一个开源的大学级别课程(基于 Stanford CS336),引导学习者完成创建、训练和评估大语言模型 (LLM) 的每一个阶段。该仓库包含:
- 结构化的讲义(中英双语),涵盖理论、系统级优化、缩放法则 (Scaling Laws)、多模态模型和对齐 (Alignment)。
- 六个评分编程作业,实现核心组件,如 tokenizer、最小化 Transformer、FlashAttention、分布式训练、数据预处理和基于 RL 的对齐。
- 可在单 GPU 上运行或扩展到多节点集群的示例代码、脚本和工具(基于 PyTorch)。
- PDF 链接、在线 VitePress 站点以及对中国本土模型(Qwen, DeepSeek 等)的引用。
重要意义 – 虽然许多 LLM 教程止步于“运行预训练模型”,但 Diy‑LLM 让你可以从零开始构建模型,带给你与大型 AI 实验室相同的工程经验。它专为中文母语学生定制,提供本地化解释、资源友好型提示以及适用于国内开源生态系统的示例。
核心组件
| 组件 | 你将学习/获得的内容 |
|---|---|
| Tokenizer 章节 | BPE 算法、Unicode 归一化、手写 tokenizer 训练器。 |
| 模型架构 | RoPE, RMSNorm, SwiGLU, AdamW, pre‑norm/post‑norm, 学习率调度。 |
| 系统优化 | 混合精度、梯度累积、FLOPs/VRAM 估算、FlashAttention, Triton kernels。 |
| GPU 编程 | CUDA 基础、Tensor Cores、共享内存、Triton 入门。 |
| 分布式训练 | 数据并行、模型并行、流水线并行、ZeRO‑1/2/3, FSDP, All‑Reduce。 |
| 缩放法则 | Chinchilla law,如何预测计算最优的模型规模。 |
| 推理 | KV‑cache, speculative decoding, 量化 (GPTQ/AWQ), PagedAttention, continuous batching。 |
| 数据工程 | 过滤、MinHash 去重、PII 清洗、课程学习 (Curriculum Learning)。 |
| 评估 | MMLU, HumanEval, HELM, CEval, AlpacaEval, 通过 lm‑evaluation‑harness 和 evalscope 进行 Arena 排名。 |
| 对齐 | 有监督微调 (SFT), GRPO, 基于规则的验证器, 基于 RL 的奖励模型。 |
| 多模态 | CLIP, LLaVA, Qwen‑VL, Chameleon 流水线。 |
如何开始
# 克隆仓库
git clone https://github.com/datawhalechina/diy-llm.git
cd diy-llm
# 遵循学习路径
# 1️⃣ 阅读 docs/zh/ (或 docs/en/) 中的文档
# 2️⃣ 选择一个作业,例如 assignment1-basics,并运行其训练脚本
# (安装作业 README 中列出的所需 Python 包)
# 3️⃣ 逐步完成各章节,扩展到分布式训练和 RL‑HF。
README 中提到,理论学习和小型规模调试可以使用仅 CPU 模式,但全模型训练需要 GPU(建议使用云实例)。
适用人群
- 希望深入理解 LLM 实现细节的本科生或研究生。
- 需要端到端经验(数据准备 → 训练 → 推理 → 对齐)并准备加入 AI 研发团队的工程师。
- 正在寻找反映 Stanford CS336 大纲的中文教学资源的科研人员。
许可证 – 知识共享署名-非商业性使用-相同方式共享 4.0 (CC‑BY‑NC‑SA 4.0)。
贡献 – 我们欢迎通过标准的 fork‑branch‑PR 工作流进行文档改进、错误修复和新增章节。
Diy‑LLM 旨在将“阅读关于 LLM 的内容”转变为“构建你自己的 LLM”,为中文学习者提供完整且可在本地运行的课程。
相关
- Dispatch
- 项目
- 项目
- 项目
- Dispatch