CS336 从零构建语言模型(中文版) · 开篇与课程概览

目录 · l1 →

斯坦福大学 CS336(Spring 2026 开设;并参考 Spring 2024/2025 存档)。授课教师:Percy Liang、Tatsunori Hashimoto。本笔记整理自公开课程网站(cs336.stanford.edu)、可执行讲义文件(lecture_XX.py)、讲义幻灯片 PDF 以及五次作业的 handout。


课程总览

这门课讲什么?

CS336 是一门项目驱动(project-based)的课程,带你走完”从零训练一个语言模型”的完整流程:预训练数据采集与清洗 → Transformer 模型构建 → 模型训练 → 部署前评测。它的灵感直接来自操作系统课——那类课程要求你从零写出一个完整的操作系统,而 CS336 要求你从零写出一个完整的语言模型。课程几乎没有脚手架代码(minimal scaffolding),你要写的代码量比一般 AI 课程高一个数量级。

核心哲学:通过构建来理解(understanding via building)。 课程认为研究者正在与自己使用的技术脱节:2016 年研究者自己实现并训练模型;2018 年下载 BERT 做微调;今天则直接对 API 模型(GPT/Claude/Gemini)写 prompt。往上走一层抽象确实提升生产力,但这些抽象是有漏洞的(leaky)——与编程语言或操作系统不同——而且仍然有大量基础研究需要”撕开整个软件栈”。因此,完全理解这门技术是做出基础研究的必要条件。

效率思维(贯穿全课的主线)。 全课的统一视角是:

accuracy = efficiency × resources(效果 = 效率 × 资源)

以及那个贯穿始终的问题:在给定的算力与数据预算下,我能造出的最好模型是什么? 今天我们是算力受限(compute-constrained)的,所以所有设计决策都体现”把给定硬件的性能榨干”:分词为了缩短序列、模型架构为了省显存/省 FLOPs、数据过滤为了不浪费算力、扩展律为了省下调参算力。课程还预判:”明天,我们将变成数据受限(data-constrained)。”

课程能传授的三类知识:

  • Mechanics(机制):事物如何运作(Transformer 是什么、模型并行怎么做)——可以迁移。
  • Mindset(心态):榨干硬件、认真对待扩展(scaling)——可以迁移。
  • Intuitions(直觉):哪些数据/建模决策能带来更好的精度——不一定跨规模迁移(很多只是经验性的”民间智慧”,例如提出 SwiGLU 的那篇论文里就画了一张”神恩浩荡/divine benevolence”的图来自嘲)。

先修要求(prerequisites):

  • Python 与软件工程熟练(最重要——几乎无脚手架、代码量极大)。
  • 深度学习与系统优化经验(熟练 PyTorch,了解内存层次结构等基础系统概念)。
  • 大学微积分与线性代数(MATH 51 / CME 100 水平)。
  • 基础概率统计(CS 109 或等价课程)。
  • 机器学习(CS221/CS229/CS230/CS124/CS224N 水平)。

课程安排与规则(Spring 2026): 每周一/周三 15:00–16:20,地点 Skilling Auditorium;5 学分;录播在 YouTube 播放列表(非公开,本笔记标注为受限资源)。所有作业通过 Gradescope 提交;共 6 个 late days,单个作业最多用 3 个。Modal 为选课学生赞助 GPU 算力。

荣誉准则(honor code)与 AI 政策要点:

  • 允许学习小组,但必须自己理解并独立完成作业,一人一份提交。
  • AI 政策(2025–26):允许用 AI 回答高层概念问题底层 API/文档问题,但不允许用 AI 实现作业的任何部分——包括编码智能体(Cursor Agents、Codex、Claude Code)和 AI 自动补全(Cursor Tab、GitHub Copilot)。每个作业仓库都带有一个带教学提示的 AGENTS.md,编码智能体会自动读取并遵守;使用网页聊天界面时,需把 AGENTS.md 内容粘贴到每次对话开头。判断标准:”问自己:如果我在 office hour 提出这个请求,助教会照做吗?
  • 不得参考现有实现(handout 是自包含的)——课程明确要求不要去看网上别人写的实现。
  • 对评分有异议须在成绩公布后 3 天内在 Gradescope 提交 regrade。

五次作业(详见”作业汇总”一节):

  1. Basics(基础):分词器、Transformer、交叉熵损失、AdamW、训练循环;在 TinyStories 与 OpenWebText 上训练;有排行榜。
  2. Systems(系统):性能基准测试与 profiling、激活重计算、Triton 实现 FlashAttention-2、DDP、优化器状态分片、FSDP。
  3. Scaling(扩展律):通过调用训练 API 拟合扩展律,预测算力最优超参数。
  4. Data(数据):Common Crawl HTML 转文本、过滤(质量/有害内容/PII)、MinHash 去重。
  5. Alignment & Reasoning RL(对齐与推理强化学习):zero/few-shot 与 CoT prompting、GRPO、策略梯度估计器变体;可选第二部分:SFT + DPO。

如何使用这份笔记。 每一讲都是一个”章节”,结构统一:概览 → 核心概念与定义(含生活化类比)→ 代码示例与详细评注(代码做了什么 / 实现深挖 / 与作业的联系)→ 关键要点 → 常见陷阱 → 复习题(含简答)。代码密集型讲座(1、2、6、7、10、14)会反向拆解真实讲义代码;幻灯片型讲座(3、4、5、8、9、11、15、16)则提炼幻灯片要点。