CS336 作业说明与学习路线

课程:Stanford CS336 Language Modeling from Scratch(Spring 2026) 年份要分清(课程每年都在变 ✗):课程年份 = 2026(官方主页写 Spring 2026,往年还有 Spring 2025 / Spring 2024)✓; 视频年份 = 与电子书各讲页首标注的一致 ✓(公开播放列表是往年录像 ✗,只作参考 ✓); 作业年份 = 2026(题面 PDF 文件名带 spring2026 ✓,另有一份 2025 的 A5 安全对齐补充 ✓)。 这份文档解决一个具体问题:第一次上 Stanford 的课,连作业入口都找不到。 它给出:官方入口、5 个作业的全景、作业与讲次/电子书的对应、环境与算力准备、以及官方的合作与 AI 政策。 生成:2026-10-15 · 续修:2026-10-16(接入 assignments/ 模块 ✓)· 配套读物:上级目录的讲次电子书(../001-概览与分词/book.html 等)

一题一页(中文版 + 英文版 ✓)

每份作业都有一页自己的页面 ✓:中文版是官方题面的逐页中译(编号 = PDF 页码 ✓,方便对号 ✓), 英文版是官方原文照排 ✓;右上角一键切换 ✓。本项目不提供答案 ✗(官方 AI 政策也禁止用它直接解题 ✓)。

# 作业 中文版 英文版 官方题面(本地原件)
A1 Basics A1.html A1.en.html _local/A1/cs336_assignment1_basics.pdf
A2 Systems A2.html A2.en.html _local/A2/cs336_assignment2_systems.pdf
A3 Scaling A3.html A3.en.html _local/A3/cs336_assignment3_scaling.pdf
A4 Data A4.html A4.en.html _local/A4/cs336_assignment4_data.pdf
A5 Alignment and Reasoning RL A5.html A5.en.html _local/A5/cs336_spring2026_assignment5_alignment.pdf

⚠️ CS336 的题面是几十页的 PDF ✗(A1 47 页、A2 48 页、A5 39 页 ✓)—— 翻译是分批做的 ✓,每批译完都会逐页核对“有没有漏页” ✓(少了就拒绝写盘 ✗)。 页数这么长的题面,建议按需读:先看那一页的目录,再跳到你正在做的那一节 ✓。


0. 先读这一段:关于「用 AI 学」

我(读者)的立场:我用 AI,不代表我要让 AI 替我写作业、替我完成作业思路。 AI 只用于三件事:① 解释我看不懂的概念;② 帮我定位作业入口与官方资料; ③ 给出学习路线指引(例如「这一步该看哪讲、该读哪份讲义」)。 具体的代码、推到一半的公式、该自己想的解法,仍然自己做。

这与 CS336 官方政策并不冲突,反而一致。课程主页原文(Honor Code → AI tools):

Prompting LLMs such as ChatGPT is permitted for low-level programming questions or high-level conceptual questions about language models, but using it directly to solve the problem is prohibited. We strongly encourage you to disable AI autocomplete (e.g., Cursor Tab, GitHub Copilot) in your IDE when completing assignments — non-AI autocomplete (autocompleting function names) is totally fine.

翻译与操作含义:

一句话:卡住先自己想;想了 20 分钟还卡,再去问「概念」而不是要「答案」。 这和课程想教你的「从零构建」是同一件事。


1. 三个官方入口(先收藏)

用途 链接
课程主页(日程、作业链接、讲义、政策都在这里) https://stanford-cs336.github.io/
GitHub 组织(5 个作业仓库都在这里) https://github.com/stanford-cs336
YouTube 播放列表(全部课程录像,含客座讲座) https://www.youtube.com/playlist?list=PLoROMvodv4rMqXOcazWaTUHhq-yembLCV

自学者最容易卡住的一点:CS336 没有给自学者用的在线提交系统(Gradescope 只对注册学生开放)。 对自学者而言,作业就是公开的 GitHub 仓库:fork / clone 下来,用仓库自带的 pytest 测试当验收。 「作业入口」= 课程主页 Schedule 表里每一行末尾的 [code](仓库)和 [preview](PDF 题面)。


2. 作业全景表

时间以官网 Schedule 为准(官方标注为 tentative / 暂定)。「对应讲次」是按内容组织的,不是硬性规定。

# 作业 发布 截止 一句话内容 主要对应讲次 算力
A1 Basics Mar 30(L1) Apr 15(L6) 实现 tokenizer、Transformer 架构、优化器,训练一个最小语言模型 L1–L6 训练需 1×GPU
A2 Systems Apr 15 Apr 29(L10) profiling/benchmark、自己写 Triton 版 FlashAttention2、显存的分布式训练 L5–L8 基准测试需 1×GPU
A3 Scaling Apr 29 May 6(L12) 初始化与权重/激活动力学;拟合缩放定律并外推 L9、L11 训练 API(云端)
A4 Data May 6 May 20(L16) 把 Common Crawl 原始转储做成预训练数据,做过滤与去重 L13、L14 训练需 GPU
A5 Alignment & Reasoning RL May 20 Jun 3(L19) SFT + 强化学习,让模型学会做数学推理;选做 Part 2 L15–L17 GPU
— A5 Optional Part 2 同 A5 同 A5 安全对齐方法(如 DPO) L15–L17 GPU

作业仓库与题面(直接可点)

# 代码仓库 题面 PDF
A1 https://github.com/stanford-cs336/assignment1-basics cs336_assignment1_basics.pdf
A2 https://github.com/stanford-cs336/assignment2-systems cs336_assignment2_systems.pdf
A3 https://github.com/stanford-cs336/assignment3-scaling cs336_assignment3_scaling.pdf
A4 https://github.com/stanford-cs336/assignment4-data cs336_assignment4_data.pdf
A5 https://github.com/stanford-cs336/assignment5-alignment cs336_spring2026_assignment5_alignment.pdf
A5 选做 同上 safety_rlhf / DPO 补充

3. 每个作业要做什么(简述)

详细题面一定以 PDF handout 为准,这里只帮你先建立地图,知道它和哪几讲对应。

A1 · Basics —— 把「语言模型」整套地基搭出来

课程描述原文:Implement all of the components (tokenizer, model architecture, optimizer) necessary to train a standard Transformer language model. Train a minimal language model.

大块内容(按教学顺序):

  1. Tokenizer:BPE 训练与编解码(对讲 L1「分词」)。
  2. Transformer 架构:embedding、RMSNorm、位置编码(RoPE)、attention、前馈、残差;用 einops 把张量维度写清楚(对 L2、L3)。
  3. 优化器与训练循环:AdamW、余弦学习率、梯度裁剪;交叉熵损失(对 L2 的资源核算)。
  4. 训练一个最小语言模型:在 TinyStories / OpenWebText 子集上真训练(对整门课的「资源核算」心态)。

作业仓库的使用方式(很重要,第一次做尤其容易懵):

A2 · Systems —— 让模型跑得又快又省

课程描述原文:Profile and benchmark … optimize Attention with your own Triton implementation of FlashAttention2. Build a memory-efficient, distributed version …

A3 · Scaling —— 理解初始化、动力学与缩放定律

课程描述原文:Study and understand model initializations and weight + activation dynamics. … Query a training API to fit a scaling law to project model scaling.

A4 · Data —— 决定语言模型上限的其实是数据

课程描述原文:Convert raw Common Crawl dumps into usable pretraining data. Perform filtering and deduplication to improve model performance.

A5 · Alignment & Reasoning RL —— 从「会接话」到「会推理」

课程描述原文:Apply supervised finetuning and reinforcement learning to train LMs to reason when solving math problems. Optional Part 2: implement and apply safety alignment methods such as DPO.


4. 环境与算力准备

4.1 软件:官方用 uv,不要自己 pip 装

作业仓库的 README(以 A1 为例)说:所有环境用 uv 管理。

# 安装 uv(推荐官方脚本,或 pip install uv)
# 然后在作业仓库根目录:
uv run pytest <你的测试>
uv run python <你的脚本>

uv run 会自动解析并激活环境,不用你手动建 venv / 装依赖。

4.2 数据(A1 用得到)

A1 官方 README 提供了数据下载命令(TinyStories + OpenWebText 子采样):

mkdir -p data
cd data
wget https://huggingface.co/datasets/roneneldan/TinyStories/resolve/main/TinyStoriesV2-GPT4-train.txt
wget https://huggingface.co/datasets/roneneldan/TinyStories/resolve/main/TinyStoriesV2-GPT4-valid.txt
wget https://huggingface.co/datasets/stanford-cs336/owt-sample/resolve/main/owt_train.txt.gz
gunzip owt_train.txt.gz
wget https://huggingface.co/datasets/stanford-cs336/owt-sample/resolve/main/owt_valid.txt.gz
gunzip owt_valid.txt.gz
cd ..

国内网络下载 HuggingFace 可能需要代理或镜像(本机走 Windows 系统代理)。数据文件不小,先确认磁盘空间。

4.3 GPU:自学者用云

课程主页给了自学者云 GPU 的选项(2026-03-28 公开价格,单张 B200):

提供商 价格 备注
Modal(课程赞助) $6.25/小时 每月 $30 免费额度;只按实际计算计费(无空闲资源);本地开发 ↔ 大规模 GPU 实验切换方便
Lambda Labs $6.69/小时
RunPod $4.99/小时 最便宜
Nebius $5.50/小时(抢占式 $3.05) 抢占式最省
Together $7.49/小时 最少 8 卡,长期合约更便宜

官方建议(务必照做,能省很多钱):

先在 CPU 上把实现的「正确性」调通,再用 GPU(按作业建议的卡数)去跑训练(A1/A4/A5)或基准测试(A2)。

也就是说:A1 的大部分(tokenizer、架构、前向/反向的正确性测试)都可以在 CPU 上完成,只有最后的「真训练一个 LM」才需要 GPU。

4.4 先修要求(官方原文)

这是一门 5 学分、实现极重的课。官方原话:please allocate enough time for it.


5. 建议的学习路线

目标(你的话):了解 LLM 的底层原理。那就按「讲次 → 电子书 → 作业」三条线并行走,一次只推进一小块。

阶段 讲次(电子书) 作业 里程碑
0. 环境 — — 装 uv;fork A1;uv run pytest 能看到「预期内的失败」
1. 分词 L1 概览与分词 A1.1 Tokenizer 自己训出 BPE,encode→decode 往返一致
2. 张量与核算 L2 PyTorch 与资源核算 配合 A1;练「信封背面」估算 能手算一段计算的 FLOPs/显存
3. 架构 L3 架构与超参数 · L4 注意力替代与 MoE A1.2 Transformer 写出 RMSNorm/RoPE/attention,过单测
4. 训练 L5 GPU/TPU · L6 内核与 Triton A1.3 优化器与训练 → 交 A1;开 A2 在 TinyStories 上真训出一个会写小故事的小模型
5. 系统 L7/L8 并行 A2 Systems 写出 Triton FlashAttention2;跑通数据并行
6. 缩放 L9/L11 缩放定律 A3 Scaling 拟合幂律并外推
7. 推理与评测 L10 推理 · L12 评测 巩固 A3 理解 KV cache、采样、benchmark
8. 数据 L13/L14 数据 A4 Data Common Crawl → 去重 → 训练对比
9. 对齐 L15/L16/L17 后训练与对齐 A5 Alignment SFT + RLVR 让模型会做数学题

每一讲我都会配一本中文电子书(见下一节的进度表),做作业卡住时先回电子书对应章节。


6. 官方 Honor Code 全文(附中文)

原文(课程主页):

Collaboration: Study groups are allowed, but students must understand and complete their own assignments, and hand in one assignment per student. If you worked in a group, please put the names of the members of your study group at the top of your assignment.

AI tools: Prompting LLMs such as ChatGPT is permitted for low-level programming questions or high-level conceptual questions about language models, but using it directly to solve the problem is prohibited. We strongly encourage you to disable AI autocomplete … See the AI policy (inspired by this [gist]).

Existing code: Implementations for many of the things you will implement…

中文要点:

  1. 可以组队学习,但必须自己理解并完成,一人交一份;组队了就在作业开头写组员名字。
  2. 可以用 LLM 问底层编程/高层概念问题,但不能让它直接解题;强烈建议关掉 AI 自动补全。
  3. 对「已有代码」的使用有明确限制(抄现成实现同样违规)——题面 PDF 里有细则。

给自学者的现实提醒:你不是注册学生、没有 Gradescope,所以没有人会给你的作业打分。 自律的方式就是:把 pytest 全绿当作及格线,把「能给别人讲明白」当作优秀线。


7. 常见困惑 FAQ

Q1:我到底在哪里提交作业? A:注册学生用 Gradescope(不在本仓库任务范围)。自学者没有提交入口——你的「提交」是: fork 作业仓库 → 实现 → uv run pytest 全过 → 推到自己的 GitHub。

Q2:作业仓库是哪个分支/哪一版? A:课程主页 [code] 指向的就是作业仓库 main。每年题面会有微调(比如 A5 PDF 文件名带 spring2026),以你当年 Schedule 里的链接为准。

Q3:我没有 GPU 怎么办? A:① 先确认这道题是不是必须 GPU(A1 大部分不用,A2 的基准测试要,A3/A4/A5 训练要); ② 用 Modal(有 $30/月免费额度)等云服务,先在 CPU 调正确性再上 GPU。

Q4:电子书和视频、作业是什么关系? A:电子书是视频的中文书面临摹,帮你在不看视频时也能复习;作业是动手验证。三者对应关系见第 5 节表格。

Q5:卡住了应该问 AI 什么? A:问概念(「KV cache 为什么能省计算」)和定位(「A2 的 FlashAttention 对应讲义哪一页」),不要问答案(「帮我写出 Triton kernel」)。这既是政策要求,也是唯一能真正学会的方式。


8. 电子书补全进度

17 讲 + 客座讲座全部完成(2026-10-15)。 「图」= 书内图片引用数。

讲 标题 视频 ID 电子书(图)
01 概览与分词 JuoVZkPBiKk ✅ 40 图 + 导览/疑点(2026-10-15 补)
02 PyTorch 与资源核算 kuYAsz7zspQ ✅ 38 图 + 导览/疑点(2026-10-15 补)
03 架构与超参数 lVynu4bo1rY ✅ 18 图(12 官方幻灯片)
04 注意力替代方案与混合专家 cKSwj_qZ8Jg ✅ 21 图(17 官方幻灯片)
05 GPU 与 TPU izZba4UA7iY ✅ 5 图
06 内核与 Triton xnDHaNUvHBg ✅ 15 图
07 并行 SzpOcwdIL0Y ✅ 6 图
08 并行(续) 6-cXp-aOmdg ✅ 73 图(全量官方幻灯片)
09 缩放定律 Q15rhEWZPQ4 ✅ 57 图(全量官方幻灯片)
10 推理 EfM546A79aM ✅ 9 图
11 缩放定律(续) vTfEyOyzV9E ✅ 60 图(12 inline + 全量幻灯片)
12 评测 JpAxdTWQJxM ✅ 11 图
13 数据(来源与数据集) -qm0ln33G24 ✅ 6 图
14 数据(过滤、去重、混合与合成) 5sxHosTLPF8 ✅ 14 图
15 中训练与后训练(SFT/RLHF) 2oH6PWPrYFo ✅ 65 图(全量幻灯片)
16 后训练——RLVR dIFAi87Ws4E ✅ 63 图(全量幻灯片)
17 对齐与多模态 26FtD08ZpOU ✅ 14 图
客座 Guest Lecture: Dan Fu 9EEm4iMAF5s ✅ 11 图

每讲书首保留:视频链接、课程主页、官方讲义(PDF 或可执行讲义);有官方 PDF 的讲次(03/04/05/08/09/11/15/16)已把幻灯片收录进书内。 说明:01/02 已在 2026-10-15 补齐「导览 / 已知疑点」并加 book-schema: v2 标记;正文与原有 40/38 张图均保留、未重写,只补两节(另修正 02 里 4 处非法 mm:ss 时间戳)。


9. 官方讲次材料索引

讲 官方材料
01 lecture_01.py(可执行讲义)
02 lecture_02.py / trace(on-site)
03 lecture_03.pdf
04 lecture_04.pdf
05 lecture_05.pdf
06 lecture_06.py
07 lecture_07.py · Lecture 7 - Parallelism basics.pdf
08 lecture_08.pdf
09 lecture_09.pdf
10 lecture_10.py
11 lecture_11.pdf
12 lecture_12.py
13 lecture_13.py
14 lecture_14.py
15 lecture_15.pdf
16 lecture_16.pdf
17 lecture_17.py

说明:CS336 的「讲义」有两种形态——.pdf 是幻灯片;.py 是可执行讲义 (把代码、输出、讲解合在一起,用课件系统按 trace 逐块播放)。 后一种是这门课的特色,也是它「从零构建」理念的体现。


10. 怎么把材料弄到本地(两种情形)

情形 A:你自己在做(已经下载到本地)

官方题面 PDF 放在 _local/(只服务本地:_ 前缀 → 书架、导出、全部 walker 天然看不见):

assignments/_local/A1/cs336_assignment1_basics.pdf              (0.9 MB,47 页)
assignments/_local/A2/cs336_assignment2_systems.pdf             (1.4 MB,48 页)
assignments/_local/A3/cs336_assignment3_scaling.pdf             (0.2 MB,8 页)
assignments/_local/A4/cs336_assignment4_data.pdf                (0.3 MB,16 页)
assignments/_local/A5/cs336_spring2026_assignment5_alignment.pdf(0.7 MB,39 页)

starter code 不在这里,也不该在这里 ✗ —— 它就是那些 GitHub 仓库本身 ✓, git clone 一份最新的比下载一份快照好 ✓(而且题面年年微调 ✗):

git clone https://github.com/stanford-cs336/assignment1-basics.git
cd assignment1-basics && uv run pytest        # 一开始红一片是**正常**的 ✓

数据集也只给链接不下载 ✗(D50:数据集太大、而且版本会变 ✓)—— A1 要的 TinyStories / OpenWebText 子采样命令在上面「4.2 数据」一节 ✓。

生成/更新本地题面:

python src/vb.py assignments "output/Stanford-CS336" --fetch            # 下**全部**题面
python src/vb.py assignments "output/Stanford-CS336" --fetch --dry-run  # 只列要下什么、多大

⚠️ 默认下全部,不跳过任何文件 ✓ —— 这一条是刻意的 ✓。 少下一个文件而不吭声,比明确报错危险得多:做题出问题时你会先怀疑自己 ✗, 而不是怀疑材料没下全。所以:没下成的一律大声列出来,且退出码非 0 ✓。 (要刻意跳过大的,才用 --max-mb N ✓ —— 那是显式选择,也是显式警告 ✓。)

情形 B:朋友拿到的是分享版(没有 _local/)

公开版按白名单导出("书架能引用到的文件"✓),所以作业材料不在里面 ✗ —— 朋友需要自己下。给 TA 一段能直接粘给 coding-agent 的提示词:

请帮我把 Stanford CS336 (Spring 2026) 的 5 份作业材料准备到本地。

一、官方题面 PDF(下到 ./cs336-assignments/A1..A5/ 并按 A1..A5 命名):
- https://raw.githubusercontent.com/stanford-cs336/assignment1-basics/main/cs336_assignment1_basics.pdf
- https://raw.githubusercontent.com/stanford-cs336/assignment2-systems/main/cs336_assignment2_systems.pdf
- https://raw.githubusercontent.com/stanford-cs336/assignment3-scaling/main/cs336_assignment3_scaling.pdf
- https://raw.githubusercontent.com/stanford-cs336/assignment4-data/main/cs336_assignment4_data.pdf
- https://raw.githubusercontent.com/stanford-cs336/assignment5-alignment/main/cs336_spring2026_assignment5_alignment.pdf

二、starter code(git clone 最新的,不要下快照):
git clone https://github.com/stanford-cs336/assignment1-basics.git
(A2..A5 同理,仓库名见 https://github.com/stanford-cs336)

三、每个仓库 clone 完,请:
1. 把仓库 README 里「怎么装环境(uv)、怎么跑测试」两节翻译成中文告诉我;
2. 跑一次 `uv run pytest`,告诉我**预期会失败**的地方长什么样(我要确认环境是通的)。

如果某个链接下载失败(404 / 需要登录),**不要猜别的地址**,直接把文件名和错误告诉我。

把「CS336 / 上面的文件名 / 仓库名」换成你要做的课程即可 ✓。 这一段的意义:初学者的困难往往不是"不会做作业",而是"找不到材料" ✗ —— 所以这里给的不是安慰,是一条能执行的路 ✓。