外观
学习路线与验收问题
课程范围是五门主课与四个原理专题。建议以“我能解释并验证什么”为进度,而不以看完视频或翻完页数为进度。
flowchart LR A[CSAPP:程序与机器] --> B[操作系统:资源与隔离] B --> C[分布式:复制与故障] A --> D[并行:调度与性能] D --> E[CS336:语言模型] C --> E
查看流程图文本
flowchart LR A[CSAPP:程序与机器] --> B[操作系统:资源与隔离] B --> C[分布式:复制与故障] A --> D[并行:调度与性能] D --> E[CS336:语言模型] C --> E
这张图表示知识联系,不要求学完所有前驱才能读下一门。学习 CS336 时,可先完成张量、梯度和 Transformer,再回到并行计算理解训练效率。
第一段:程序如何运行
先读 CSAPP 的位表示、机器代码、缓存、虚拟内存与内存分配,同时阅读操作系统的基础、进程和系统调用。两门课对同一个对象提供不同视角:malloc 管理进程的堆,页表决定虚拟地址如何映射物理页;线程之间的锁依赖 CPU 原子操作,也依赖操作系统调度。
验收:能解释一段 C 程序从编译到运行经历什么,区分寄存器/栈/堆/页表;能用一个地址例子计算 cache 的组索引,能说明用户指针为何不能直接信任。
第二段:走进内核
依次学习系统调用、陷阱、页表、COW、调度同步与文件系统。先完成小实验建立工具链信心,再处理跨文件修改。一个机制至少做一次失败分析:例如故意遗漏 copyout 的 COW 处理,说明为什么普通用户写入可能正常、内核写入却会破坏隔离。
验收:能画 fork → 写入 → 缺页 → 私有副本 的状态变化;能解释 sleep/wakeup 如何避免丢失唤醒;能区分日志的提交点和数据块写回。
第三段:多节点和多核心
分布式系统以“一次写入什么时候可以回复成功”为主问题;并行计算以“结果正确后,为什么仍然不快”为主问题。一个处理消息与故障,一个处理计算与共享资源;两者都需要明确谁拥有状态,以及何时能观察到更新。
验收:能解释超时为何不能证明请求没执行;能画出 Raft 的一次选举和一次日志复制;能计算 Amdahl 上界,区分负载不均、锁竞争和内存带宽瓶颈。
第四段:语言模型的完整链路
读 CS336:tokenizer → 张量与 Transformer → loss 与反向传播 → 训练与生成 → 数据和评估 → 系统优化 → 后训练。先用小型语料验证完整程序,再思考扩大数据、模型和硬件规模时哪些瓶颈改变。
验收:能说明输入和标签为何错开一个 token;能检查 causal mask;能计算主要权重和 KV cache 的内存;能区分预训练、SFT 与强化学习分别优化什么。