想读懂 vLLM 为什么要把 KV cache 切成固定大小的块,你得同时知道三件事:Transformer 在 decode 阶段每步要读哪些张量、操作系统的分页是怎么回事、GPU 显存为什么是瓶颈。这三件事分别来自 ML、操作系统和体系结构三门课。AI Infra 难入门,原因就在这里:它几乎不独立成一门课,而是建在整条 CS 基础之上。
所以路线是一条依赖链:编程 → 数学与算法 → 计算机系统 → 机器学习 → LLM。编程给你把想法变成可运行代码的能力;线性代数和概率是读懂任何模型的语言,算法课教你分析复杂度;系统课(CSAPP、操作系统、网络)解释内存层次、进程、并发,这正是推理引擎和训练框架每天在对付的东西;ML 课建立反向传播和训练闭环的直觉;最后 CS336 这类 LLM 课把前面所有东西拧在一起:从 BPE、Transformer 一路写到 FlashAttention、DDP、scaling law 和对齐。
这条链不必严格串行。数学三门课可以并行,每天各一小时;系统和 ML 两条线在第二年可以交错推进。但有两处硬依赖跳不过去:没有反向传播的直觉,Karpathy 的 GPT 视频会看得很吃力;没写过 C 和指针,CSAPP 的 Lab 无从下手。下面每个阶段的表格给出课程、链接、耗时和本库对应的篇目。耗时按每天有效学习 6–8 小时估计,核心路线约两年;实际耗时可对照 csdiy.wiki 上多人的反馈。
阶段零:工具与入门
工具链越早学越省时间。这几门课不在主线上,但会贯穿后面所有 Lab。
| 课程 | 视频 / 作业 | 耗时 | 本库对应 |
|---|---|---|---|
| MIT Missing Semester | 讲义与录播同在官网(如 shell 讲) | 1–2 周 | Shell 与命令行环境、Git 的数据模型、调试测试与工程实践 |
| Harvard CS50x 2024 | 讲义;另有 CS50 SQL | C 与内存部分 1–2 周 | C++ 内存与所有权、信息的表示 |
| Crash Course Computer Science | YouTube · B 站 | 40 集,鸟瞰用 | 全路线的地图,不替代任何一门课 |
| NUS CS2113T 软件工程 | 教材网页版 | 按需查 | 调试测试与工程实践、Git 的数据模型 |
阶段一:编程与抽象(6–8 周)
| 课程 | 视频 / 作业 | 耗时 | 本库对应 |
|---|---|---|---|
| Berkeley CS61A | 讲义、作业、project、自动评分器全部公开;教材 Composing Programs,中文版 csfive/composing-programs-zh | 6–8 周 | 函数与环境模型、高阶函数与递归、数据抽象与对象、迭代器生成器与解释器 |
61A 之后再补 Python 的工程面和 C++:Python 对象模型、Python 并发与性能、C++ 内存与所有权、编译链接与 Python 扩展。Scheme 解释器 project 即使会 Python 也值得做,它让你看清程序是怎么被解析和求值的。
阶段二:数学(2–3 个月,三门并行)
| 课程 | 视频 / 作业 | 耗时 | 本库对应 |
|---|---|---|---|
| MIT 18.06 线性代数 | OCW Spring 2010(习题与解答) · 视频 35 讲;几何直觉弱先看 3Blue1Brown(3–4 小时) | 每天约 1 小时 | 线性代数 |
| Harvard Stat 110 概率论 | YouTube 34 讲;Strategic Practice 附解答 | 每天约 1 小时 | 概率论 |
| MIT 6.042J 离散数学 | OCW 上视频、讲义、习题、考试全免费 | 按需查 | 离散数学 |
学过的数学课可以当字典用:卡在某个概念时回到对应篇目,再看相应讲次。6.042J 的图论和递推会在 CS161 里以算法的形式重现,系统和 AI 方向的读者看不懂正确性证明时再回来。
阶段三:算法与数据结构(3–4 个月)
| 课程 | 视频 / 作业 | 耗时 | 本库对应 |
|---|---|---|---|
| Stanford CS161 / Algorithms Illuminated | 讲座视频免费;Coursera 专项(4 门);每周编程作业 | 约 2 个月 | 算法设计 |
| Berkeley CS61B | 当前学期 Spring 2026,历史学期如 sp25;课程用 Java | 约 2 个月(没写过 Java 加 1 周) | 数据结构 |
阶段四:计算机系统(4–5 个月)
这是 AI Infra 方向最该下功夫的阶段。内存层次、虚拟内存、并发在后面的 GPU 和推理系统里会以新面目再出现一次。
| 课程 | 视频 / 作业 | 耗时 | 本库对应 |
|---|---|---|---|
| CMU 15-213 CSAPP | 教材官网(Student Site 公开全部 Lab) · B 站录播 | 约 2 个月;前置 C 与指针 1–2 周 | 信息的表示、机器级程序、内存层次与缓存、进程异常与信号、虚拟内存、并发与同步、文件系统与 IO |
| MIT 6.1810 操作系统 | xv6 Labs;旧课号 6.828;预习 OSTEP(通读约 2 周) | 约 2 个月 | 虚拟内存、并发与同步、文件系统与 IO、进程异常与信号 |
| Stanford CS144 计算机网络 | 官网含全部 Lab 说明;轻量方案:Kurose 前六章约 2 周 + 两个 Lab | 1–2 个月 | 网络:从链路到 IP、网络:TCP 与应用层 |
阶段五:机器学习与深度学习
| 课程 | 视频 / 作业 | 耗时 | 本库对应 |
|---|---|---|---|
| Andrew Ng Machine Learning Specialization | 每周 Jupyter 实验(2022 重制版) | 2–3 周;学过 ML 可跳过 | 从线性回归到神经网络 |
| Stanford CS231n | 讲义 cs231n.github.io;A1–A3 手写网络、CNN、Transformer | 1–2 个月 | 训练深度网络与 CNN、从线性回归到神经网络 |
| Stanford CS224n | 讲义、slides、作业全部公开;A1–A4 从词向量到 LLM 评估 | 1–2 个月 | 序列模型与注意力的起源、Transformer 架构、评估 |
| Karpathy · Let’s build GPT | 视频(约 2 小时,边看边写 1–2 天) · ng-video-lecture · nanoGPT | 1 周(含 micrograd、makemore、tokenizer) | Transformer 架构、分词 |
Karpathy 的视频节奏快,默认你理解梯度怎样在计算图里流动。先做 CS231n 的反向传播作业,或花半天写一遍 micrograd,再看会顺很多。
阶段六:大语言模型与 AI Infra
| 课程 / 项目 | 视频 / 作业 | 耗时 | 本库对应 |
|---|---|---|---|
| Stanford CS336 Language Modeling from Scratch(Spring 2026) | lecture materials · YouTube 录像 · B 站;18 讲 + 5 个作业 | 一学期 | 见下表 |
| llm.c | 纯 C/CUDA 实现的 LLM 训练 | 学完 CSAPP 后 1–2 周 | GPU 与 Kernel、并行训练 |
CS336 的 5 个作业几乎覆盖本库第 06 部分:
| 作业 | 内容 | 本库对应 |
|---|---|---|
| A1 Basics | BPE、Transformer、AdamW、training loop | 分词、Transformer 架构、资源核算与 Scaling Laws |
| A2 Systems | profiling、Triton FlashAttention2、DDP / FSDP | GPU 与 Kernel、FlashAttention、并行训练 |
| A3 Scaling | scaling-law 实验与预测 | 资源核算与 Scaling Laws |
| A4 Data | Common Crawl 处理、过滤、去重 | 预训练数据 |
| A5 Alignment | SFT、reasoning RL、DPO | 后训练、评估 |
讲座里另有 MoE、推理、多模态几讲,对应 注意力变体与 MoE、推理系统、多模态。应用层的检索与工具调用见 RAG 与 Agent。
做完 CS336 想接触工业级代码,可以按方向读这些开源框架:训练侧 Megatron-LM core、Pai-Megatron-Patch;后训练侧 verl(从 GRPO examples 入手)、ms-swift;数据侧 DCLM;评估侧 lm-evaluation-harness。完整开源配方可读 Tülu 3 和 OLMoE 两篇技术报告。
阶段七:进阶系统(选修)
| 课程 | 视频 / 作业 | 耗时 | 本库对应 |
|---|---|---|---|
| MIT 6.5840 分布式系统 | 每周一篇论文 + Go Labs(Raft 层层叠加);旧课号 6.824 | 完整约 2 个月;只读论文约 2 周 | 分布式系统 |
| CMU 15-445 数据库系统 | YouTube 官方录播;Project 基于 BusTub | 完整约 2 个月;只看讲座约 2 周 | 数据库系统 |
分布式系统和 并行训练 共享同一组问题(容错、一致性、通信),想做集群调度或训练框架的读者值得修。
学习方法
自学最常见的失败,是同时开五门课然后全部半途而废。所以第一条规则是一次只学一门:学完或明确放弃,再开下一门。第二条是以产出为判据:能独立写出 Lab、答出本库各篇的测验,才算学完,“视频看完了”不算。不做题等于没学,慢一点反而更快。
卡住时先自己想满两小时,再求助;求助的顺序是测试用例 → 思路 → 代码。社区仓库大多停在旧学期(CS144 Sponge、xv6 2020/2022、CS61B 2018–2022),作业版本以官网当前学期为准。star 数衡量的是受众规模而非难度:Ng 专项的解答仓库 7.7k★,CSAPP Labs 仓库 2.6k★,后者的含金量高得多。课程、教材和论文大多是英文,英文阅读是硬性前提。
| 场景 | 社区解答怎么用 |
|---|---|
| 价值在”自己拆”的 Lab(Bomb / Attack、Page tables / COW、CS231n 手写网络、CS161 编程作业) | 完全不看解答;卡住查工具用法(如 GDB),不查答案 |
| 有性能评分的 Lab(Cache / Malloc) | 做完自己的版本后,对照别人的实现看性能差距 |
| ”不知道改哪个结构体”型卡点(xv6、Raft 边界情况) | 卡满两小时无进展,看 writeup 的思路与踩坑部分,不看代码 |
| 概念没看懂 | 看官方讲义、中文笔记 |
跨课程社区资源
单门课的解答仓库不在这里列,用上面的规则按需搜。
| 资源 | 说明 |
|---|---|
| PKUFlyingPig/cs-self-learning(网页版 csdiy.wiki) | 中文 CS 自学指南,覆盖本路线几乎每门课,标注先修、难度、耗时与资源;耗时来自多人反馈 |
| OpenExamFDU/FDU-csdiy | 复旦版自学指南 |
| LamberttLiu/CS-Basic-SelfLearning | 数据结构 / 操作系统 / 网络 / 组成原理四门的自学记录,偏国内考研体系 |
| harvardnlp/annotated-transformer · 中文版 | 逐行注释的 Transformer 论文实现,配合 CS224n 与 Karpathy 视频 |
| wzchen/probability_cheatsheet | 10 页概率速查表,Stat 110 助教制作 |
| MLNLP-World/MIT-Linear-Algebra-Notes | 18.06 按讲次整理的中文笔记 |
| CS336 第三方中文笔记 | CS336 2026 逐讲中文笔记 |
记住这三件事
- 路线是依赖链:编程 → 数学与算法 → 系统 → ML → LLM,AI Infra 建在系统和 ML 两条线的交点上。
- 一次只学一门,以写出 Lab、答出测验为学完的判据。
- 卡住先自己想两小时,社区解答按”测试用例 → 思路 → 代码”的顺序用。
延伸阅读
- csdiy.wiki:中文 CS 自学总入口
- Stanford CS336:本路线的 LLM 主干课
- MIT Missing Semester:工具链
- Composing Programs:CS61A 教材