datawhalechina/diy-llm

Covers pre-training data, Tokenizer, Transformer, MoE,distributed training, Scaling Laws, inference & alignment .6 progressive code assignments for full-stack LLM learning | 涵盖预训练数据、分词器、Transformer、MoE、分布式训练、缩放定律、推理与对齐,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