CS336 语言模型从零构建知识地图:一张图拆开 Stanford LLM 训练课
Stanford CS336《Language Modeling from Scratch》不是那种“讲一堆 Transformer 概念就结束”的课。
它真正有价值的地方在于:它把一个语言模型从零做出来所需的几条主线放到了一起——模型结构、训练系统、算力效率、数据工程、Scaling Laws、评测、推理和对齐。如果你不是只想调用 API,而是想理解大模型为什么这样训练、哪里贵、哪里难、哪里容易踩坑,这门课很适合当作路线图。
但课程原网页是按日期排的。对自学者来说,按时间顺序看不一定最友好:你很容易今天看 tokenizer,明天跳到 GPU,再过几天突然 scaling law,脑子里缺少一张总图。
所以这篇文章不做逐课翻译,而是把 CS336 拆成一张中文知识地图:每一块告诉你学什么、为什么重要、对应哪几节课、该做哪份作业。等你有时间,就可以按模块点进去看。
先看总图:从一个 Token 到一个可用模型
flowchart TD
A[文本进入模型] --> B[Tokenization 与基础训练代码]
B --> C[Transformer 架构与超参数]
C --> D[GPU / Kernel / Triton]
D --> E[并行训练系统]
E --> F[Scaling Laws 与训练预算]
F --> G[数据工程与数据质量]
G --> H[评测与推理]
H --> I[SFT / RLHF / RLVR 对齐]
I --> J[可用、可评估、可迭代的语言模型]
这张图可以理解为 CS336 的学习顺序:
- 先能跑起来:tokenizer、PyTorch、Transformer、训练循环。
- 再让它跑得动:GPU、kernel、Triton、并行训练。
- 然后知道该训练多大:Scaling Laws、资源预算、训练曲线。
- 接着处理真实世界问题:数据质量、评测体系、推理成本。
- 最后让模型更像产品:SFT、RLHF、RLVR、对齐与反馈学习。
如果只想快速建立框架,先看总图和每块的“学习目标”;如果想动手,优先做 5 个 assignment。
模块一:从文本到训练样本
这一块解决最基础、也最容易被低估的问题:模型到底吃进去的是什么?
很多人学语言模型时会直接从 Transformer 开始,但实际训练里,tokenization 会影响词表、序列长度、训练效率、长尾字符处理,甚至影响多语言能力。CS336 第一节课把入口放在 tokenization,是很合理的。
你要建立的概念
- 原始文本不会直接进入模型,而是先被切成 token。
- tokenizer 不是纯工程细节,它会改变训练分布和上下文利用率。
- 从零训练模型时,数据清洗、编码方式、batch 构造都属于基础设施。
对应资料
- Lecture 1:Overview, tokenization
lecture_01.py
对应作业
这一份作业最适合当“入门门槛”:如果你能把它认真做完,后面的系统优化、扩展规律、对齐训练才不只是听概念。
模块二:Transformer 架构与训练基本功
有了 token 和数据流,下一步才是模型本体。
这里的重点不是背诵“Attention is All You Need”,而是理解训练一个语言模型时,架构选择和超参数会怎样影响容量、稳定性和成本。比如层数、宽度、attention 形式、MoE、学习率、batch size、上下文长度,都会在训练预算里互相牵制。
你要建立的概念
- Transformer 是语言模型的核心计算图,但不是唯一决策点。
- 超参数不是“调参玄学”,而是和算力预算、数据规模、模型大小绑定。
- MoE 的价值不只是“参数更多”,而是用稀疏激活改变计算和容量的关系。
对应资料
- Lecture 2:PyTorch, resource accounting
lecture_02.py - Lecture 3:Architectures, hyperparameters
lecture 3.pdf - Lecture 4:Attention alternatives and Mixture of Experts
lecture 4.pdf
推荐学习方式
先看 Lecture 2,把 PyTorch 和资源记账补起来;再看 Lecture 3 理解标准 Transformer 训练;最后看 Lecture 4 的 MoE。这样顺序更自然:先密集模型,再理解为什么需要稀疏模型。
模块三:GPU、Kernel 与训练系统
这是 CS336 和很多普通 LLM 课程最大的差别之一:它不把“系统”当作附录。
真实的大模型训练不是“写个 PyTorch 脚本然后等它跑完”。瓶颈经常来自显存、带宽、通信、kernel launch、并行策略,而不是模型公式本身。你如果只懂 Transformer 不懂系统,就很难判断训练为什么慢、为什么爆显存、为什么扩 GPU 后效率反而下降。
你要建立的概念
- GPU 不是“更快的 CPU”,它有自己的内存层级和并行计算模型。
- Kernel 优化的核心是减少无效访存、提高并行度、降低调度开销。
- Triton 的意义在于让研究者能写接近底层性能的 GPU kernel。
- 并行训练不是只有 data parallel,还有 tensor/pipeline/sequence 等维度。
对应资料
- Lecture 5:GPUs, TPUs
lecture 5.pdf - Lecture 6:Kernels, Triton
lecture_06.py - Lecture 7:Parallelism basics
lecture 7.pdf - Lecture 8:Parallelism
lecture_08.py
对应作业
如果你想走 LLM Infra、训练框架、推理引擎、GPU kernel 方向,这一块值得反复啃。它比“会调 API”难得多,但也更有护城河。
模块四:Scaling Laws 与训练预算
模型做大以后,最重要的问题会变成:我到底该训练多大的模型、用多少数据、花多少算力?
Scaling Laws 的价值就在这里。它不是为了画漂亮曲线,而是为了让训练决策从拍脑袋变成可估算:在固定预算下,模型参数、数据 token、训练步数应该如何分配?什么时候继续加数据更划算?什么时候加参数更划算?什么时候只是浪费 GPU?
你要建立的概念
- loss 会随模型规模、数据规模、计算量呈现可预测趋势。
- 训练预算不是单独看参数量,而是看 compute、data、model 的组合。
- 小规模实验可以用于预测大规模训练,但前提是实验设计靠谱。
- Scaling law 是工程决策工具,不只是论文里的经验公式。
对应资料
- Lecture 9:Scaling laws basics
lecture 9.pdf - Lecture 10:Inference
lecture_10.py - Lecture 11:Scaling details
lecture 11.pdf
对应作业
这一块建议和推理一起看,因为训练成本和推理成本最后都会回到同一个问题:模型能力不是免费的,系统账必须算清楚。
模块五:评测、数据与模型质量
当模型可以训练、可以扩展之后,下一个问题是:它真的变好了吗?
这也是很多项目最容易翻车的地方。训练 loss 降了,不代表用户体验变好;benchmark 涨了,不代表真实任务可用;数据更多,也不代表质量更高。CS336 把 Evaluation 和 Data 放在 scaling 之后,非常符合真实研发节奏:当你开始认真扩模型时,数据和评测会变成最关键的杠杆。
你要建立的概念
- 评测不是最后打分,而是训练过程中的反馈系统。
- 数据质量、去重、过滤、混合比例,会直接影响模型能力边界。
- 好的 benchmark 应该和目标能力相关,否则容易优化错方向。
- 数据工程是 LLM 能力的一部分,不是“脏活外包”。
对应资料
- Lecture 12:Evaluation
lecture_12.py - Lecture 13:Data
lecture_13.py - Lecture 14:Data
lecture_14.py
对应作业
如果你未来想做 Agent、RAG、垂直模型或企业 AI,这一块尤其重要。很多时候,模型效果差不是因为“模型不够大”,而是数据和评测闭环没有搭起来。
模块六:SFT、RLHF 与 RLVR 对齐
预训练模型学会的是“预测下一个 token”,但用户想要的是“按我的意图完成任务”。这中间的落差,就是对齐要解决的问题。
CS336 后半部分进入 SFT、RLHF、RLVR。这里不应该只把它理解成“让模型更听话”,更准确地说,它是在构建一个反馈系统:用示范数据、偏好信号、奖励模型或可验证奖励,把基础模型推向更适合任务和产品的行为分布。
你要建立的概念
- SFT 让模型模仿高质量示范,是从预训练到可用助手的第一步。
- RLHF 用人类偏好构造优化目标,但会引入奖励建模和稳定性问题。
- RLVR 更强调可验证奖励,在数学、代码、推理任务里尤其重要。
- 对齐不是魔法,它仍然受数据、评测、训练稳定性和系统成本约束。
对应资料
- Lecture 15:Mid/post-training - SFT/RLHF
lecture 15.pdf - Lecture 16:Alignment - RL / RLVR
lecture 16.pdf - Lecture 17:Alignment - multimodality
lecture_17.py
对应作业
对齐部分建议放在最后学。因为如果前面的训练系统、数据、评测没建立起来,RLHF 很容易被误解成一套孤立算法,而不是完整模型工程链条里的最后几步。
模块七:前沿讲座与行业视角
CS336 后面还有两场 guest lecture,适合作为扩展阅读。它们不一定是“基础必修”,但适合用来连接工业界的真实问题。
对应资料
- Guest Lecture:Daniel Selsam
- Guest Lecture:Dan Fu
这类讲座最适合在你完成前六个模块后再看:前面建立底层地图,后面再看行业专家怎么取舍,收获会更大。
如果只想自学,推荐三条路径
不同目标的人不必按同一条路线学。可以按自己的方向选择重点。
路径 A:想理解 LLM 从零训练
推荐顺序:
- Lecture 1:Tokenization
- Lecture 2:PyTorch 与资源记账
- Lecture 3:架构与超参数
- Assignment 1 Basics
- Lecture 12-14:Evaluation 与 Data
这条路适合想补齐基础的人。目标不是马上训练大模型,而是理解一个语言模型训练项目有哪些必要组件。
路径 B:想走 LLM Infra / Systems
推荐顺序:
- Lecture 5:GPUs
- Lecture 6:Kernels, Triton
- Lecture 7-8:Parallelism
- Assignment 2 Systems
- Lecture 10:Inference
这条路更偏工程和性能优化。它不会像做 prompt 那样立刻有“可见成果”,但长期价值很高。
路径 C:想做模型训练策略与对齐
推荐顺序:
- Lecture 9 / 11:Scaling Laws
- Assignment 3 Scaling
- Lecture 12-14:Evaluation 与 Data
- Lecture 15-17:SFT、RLHF、RLVR
- Assignment 5 Alignment
这条路适合对 post-training、推理模型、奖励建模、评测体系感兴趣的人。
五份作业入口汇总
如果只能收藏一部分,我建议优先收藏作业。课件让你理解,作业逼你真的动手。
- Assignment 1 Basics:
代码仓库 / 作业 PDF - Assignment 2 Systems:
代码仓库 / 作业 PDF - Assignment 3 Scaling:
代码仓库 / 作业 PDF - Assignment 4 Data:
代码仓库 / 作业 PDF - Assignment 5 Alignment:
代码仓库 / 作业 PDF
最后:这门课最值得学的不是“知识点”,而是工程视角
CS336 最好的地方,不是它覆盖了多少新概念,而是它把语言模型放回了真实工程链条里:
flowchart LR
A[数据] --> B[训练目标]
B --> C[模型架构]
C --> D[系统实现]
D --> E[训练预算]
E --> F[评测反馈]
F --> G[对齐优化]
G --> H[推理与产品]
H --> A
很多 LLM 学习材料会把这些拆散:模型结构归模型结构,GPU 归 GPU,RLHF 归 RLHF,评测归评测。但真实的大模型研发不是这样运转的。一个看似算法层面的选择,可能会改变系统瓶颈;一个看似数据层面的过滤规则,可能会改变评测结果;一个看似后训练的问题,可能最后还是回到数据和奖励设计。
所以这篇知识地图的使用方式也很简单:
- 想快速入门,就按模块一到模块六顺序看。
- 想补系统能力,就重点看 GPU、Kernel、Parallelism 和 Inference。
- 想理解模型能力增长,就重点看 Scaling、Data、Evaluation。
- 想研究对齐和推理模型,就把 SFT、RLHF、RLVR 放到最后精读。
别急着一次看完。收藏这张地图,等有时间了,一块一块点进去就行。
CS336 语言模型从零构建知识地图:一张图拆开 Stanford LLM 训练课
一位华盛顿大学NLP博士的OpenAI求职复盘:57场面试之后