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 R&D 團隊的工程師。
- 正在尋找反映 Stanford CS336 大綱的中文教學資源的科研人員。
授權 – 姓名標示-非商業性使用-相同方式分享 4.0 (CC‑BY‑NC‑SA 4.0)。
貢獻 – 我們歡迎透過標準的 fork‑branch‑PR 工作流進行文件改進、錯誤修復與新增章節。
Diy‑LLM 旨在將「閱讀關於 LLM 的內容」轉變為「構建你自己的 LLM」,為中文學習者提供完整且可在本地運行的課程。
相關
- Dispatch
- 專案
- 專案
- 專案
- Dispatch