CMU 15-442/642 机器学习系统课程自学指南:从自动微分到 Blackwell GPU 内核优化
本文基于《CS 自学指南》仓库中的课程推荐文档 docs/机器学习系统/CMU15-442.md 及英文版 docs/机器学习系统/CMU15-442.en.md 展开,并结合仓库中「机器学习系统」板块的整体布局与关联课程,帮助读者判断这门课程是否适合自己、需要哪些前置知识、能够收获哪些硬核技能,以及如何规划自学历程。
课程定位:不止于调用 API 的「炼丹侠」
随着大语言模型(LLM)的爆发,如何高效训练与部署这些参数规模庞大的模型,已成为当下 AI 领域最核心的挑战之一。市面上的大部分教程停留在「调用 PyTorch API 拼装网络」的层面,而真正驱动 vLLM、SGLang、DeepSpeed 等工业级系统的底层机制,往往被封装在晦涩的框架源码与 CUDA 内核之中。
CMU 15-442/642(Machine Learning Systems)正是为那些不甘于只做 API 调用者、希望亲手写底层算子、榨干现代 GPU 每一分算力的学习者而设。该课程由 Tianqi Chen(陈天奇) 与 Zhihao Jia 两位教授讲授,课程网站为 https://mlsyscourse.org/,是 CMU 机器学习系统方向的核心课程。
课程基本信息
| 项目 | 内容 |
|---|---|
| 所属大学 | Carnegie Mellon University(CMU) |
| 课程编号 | 15-442 / 642 |
| 主讲教授 | Tianqi Chen、Zhihao Jia |
| 先修要求 | 系统入门(如 15-213/CSAPP)、深度学习入门、基本数学知识 |
| 编程语言 | Python、C++、CUDA(PTX)、TIRx |
| 课程难度 | 🌟🌟🌟🌟 |
| 预计学时 | 100 小时以上 |
| 课程视频 | 无 |
| 课程网站 | https://mlsyscourse.org/ |
与仓库中同样被收录的 UCSD CSE234(Data Systems for Machine Learning) 相比,本课程更强调「从底层硬件出发、自顶向下打通」的系统能力训练;而与偏重深度学习框架内部实现的 CMU 10-414/714(Deep Learning Systems) 相比,15-442 把重心进一步下沉到 GPU 硬件加速、分布式训练与 LLM 推理系统层面——二者恰好形成「框架内部实现 → 系统全栈优化」的递进关系。
全栈知识地图:模型、数据、系统、硬件
课程的讲授内容采用 「模型、数据、系统、硬件」全栈协同的视角,构建了一条从底层物理硬件到上层分布式框架的完整知识地图。这一编排与仓库中「机器学习系统」板块收录的其他课程形成了互补生态:AICS(智能计算系统) 偏重从芯片到框架的国产智能计算栈、MLC(Machine Learning Compilation) 专注编译抽象,而本课程则覆盖了整个全栈闭环。
课程内容大致可划分为以下递进阶段:
- 深度学习框架的基石:从自动微分(Automatic Differentiation)等底层机制讲起,理解计算图框架的工作方式。这一阶段与 CMU 10-414 的 Needle 框架实现作业 的主题一脉相承。
- 现代 GPU 的硬件加速与底层编程:切入最新的 GPU 架构(如 Blackwell B200),讲解硬件特性如何决定编程范式,以及如何通过原生级编程榨取性能。
- 大模型的分布式训练:在打通单卡极致性能之后,课程延伸至多卡训练,详细讲解 ZeRO 冗余优化器,以及 张量并行(Tensor Parallelism)、流水线并行(Pipeline Parallelism) 等并行机制,辅以通信原语层面的实现训练。
- LLM 推理与部署:将目光聚焦当下的 LLM 推理服务,深入剖析 连续批处理(Continuous Batching)、PagedAttention、投机解码(Speculative Decoding) 等核心优化策略——这些正是 vLLM、SGLang 等顶尖推理框架背后的关键技术。
- 前瞻性的编译抽象与 Mega-Kernel:课程还会探讨现代机器学习编译抽象与巨型算子(Mega-Kernel)系统,为该领域的前沿研究埋下伏笔。这与仓库中 MLC 课程(围绕 Apache TVM 展开的机器学习编译) 所覆盖的知识域相呼应——Tianqi Chen 也正是 Apache TVM 的共同创始人与 MLC 课程的主讲者。
课程最大亮点:与工业界前沿接轨的三大编程作业
这门课最鲜明的特色,在于其极具挑战性且与工业界前沿接轨的编程作业(Programming Assignments)。作业共三个,难度层层递进,从「框架内部实现」走到「分布式通信」,最终抵达「手工优化 GPU 内核」这一系统性能工程的深水区。
Assignment 1:实现一个支持扩展图(ExtGraph)的自动微分框架
第一个作业要求学习者亲手实现一个自动微分框架,且需要支持扩展图(ExtGraph)能力。这是理解所有深度学习框架地基的必经之路——你需要处理张量(Tensor)的数据结构、运算节点的前向传播,以及反向模式自动微分(Reverse-mode AD)中基于计算图拓扑序的梯度传播。
对于尚未接触过框架内部实现的学习者,建议先参考仓库中收录的 CMU 10-414/714 课程文档——该课程通过五个作业从零构建深度学习库 Needle,其自动微分部分正好可以作为本作业的知识铺垫;两门课程的主讲人之一同为 Tianqi Chen,教学理念高度一致。
Assignment 2:用 MPI + NumPy 实现 ZeRO Stage 3 与张量模型并行
第二个作业切入分布式训练的通信逻辑层。你需要使用 MPI(Message Passing Interface) 与 NumPy,从零实现:
- ZeRO Stage 3 的参数分片:将优化器状态(Optimizer States)、梯度(Gradients)与模型参数(Parameters)全部分片到各设备上,理解 ZeRO 冗余消除如何把显存占用从 O(N) 降到 O(N/GPU 数),以及随之而来的 all-gather 等集合通信开销;
- 张量模型并行(Tensor Model Parallelism):理解如何把一个 Transformer 层的权重按列/按行切分到多张卡上,并协调前向传播过程中必要的 all-reduce 通信。
这一作业的价值在于:无需先精通 CUDA,就能通过 MPI 原语真实感知「并行策略的选择如何决定通信量与训练吞吐」,为后续理解 DeepSpeed、Megatron-LM 等真实框架铺路。作为对照,仓库中的 CMU 15-418/Stanford CS149(并行计算) 与 MIT 6.824(分布式系统) 可以为集合通信与分布式问题提供更通用的系统基础。
Assignment 3(最硬核):用 TIRx 在 Blackwell B200 上手写 FP16 GEMM
第三个作业是整个课程公认的巅峰挑战。你将使用 TIRx DSL,面向最新的 NVIDIA Blackwell(B200) 架构,从零开始一步步手写并优化一个 FP16 矩阵乘法(GEMM)内核。这一作业几乎覆盖了现代 GPU 高性能计算的所有关键工程主题:
| 优化主题 | 核心挑战 |
|---|---|
| 128B Swizzle 内存布局 | 处理内存错位(Swizzle)排列,消除共享内存 Bank 冲突(Bank Conflict),保证访存带宽利用率 |
| TMA 异步搬运 | 手动下发 TMA(Tensor Memory Accelerator) 异步加载指令,让数据搬移与计算充分重叠 |
| Warp Specialization | 设计 Warp 专用化软流水线(Software Pipeline),让部分 warp 专职搬运数据、部分 warp 专职计算 |
| 2-CTA Cluster 调度 | 实现基于线程块簇(Thread Block Cluster)的多 CTA 协作调度,跨块共享数据 |
更令人震撼的是结果的可量化性:经过逐步优化,内核性能从最初的 0.02 TFLOP/s 一路飙升至 1300+ TFLOP/s,直接媲美高度优化的官方 cuBLAS 库。这组数字本身就是最好的教学——它让学习者亲眼见证「了解硬件 → 消除瓶颈 → 榨干算力」的系统性方法论的威力,也让「为什么要学这些底层细节」有了最直观的答案。
需要提醒的是,完成该作业需要同时具备 CUDA 编程基础(文档明确标注涉及 CUDA/PTX)以及对现代 GPU 内存层次(寄存器、共享内存、L2、HBM)的清晰认知。建议在开始前通过仓库中的 CMU 15-418/Stanford CS149 等并行编程课程补足基础。
课程资源清单
课程相关官方资源如下:
- 课程网站:https://mlsyscourse.org/(包含课程大纲、课件、作业说明与阅读材料)
- 课程视频:无官方录像
- 课程作业(均为公开仓库):
- Assignment 1(自动微分框架):https://github.com/mlsyscourse/assignment1
- Assignment 2(分布式训练):https://github.com/mlsyscourse/assignment-distributed-training
- Assignment 3(TIRx GEMM):https://github.com/mlsyscourse/assignment-tirx-gemm
资源汇总与参考实现
《CS 自学指南》的读者 @RisingUppercut 在学习这门课(2026 春季学期)的过程中,所使用的全部资源与作业实现均汇总在 RisingUppercut/CMU_15442_2026Spring,非常适合自学时对照参考:既可以作为卡壳时的 debug 参照,也可以在完成作业后对比不同实现思路在性能与代码组织上的差异。
这与仓库「机器学习系统」板块中其他课程的资源组织方式保持一致——例如 CMU 10-414 文档中收录了 @PKUFlyingPig 与 @Crazy-Ryan 的作业实现汇总,AICS 智能计算系统 文档中收录了 @Yuichi、@ysj1173886760 的实验与笔记汇总。建议的学习策略是:先独立实现,遇到瓶颈再参考他人代码,切忌直接照抄。
自学建议与难点预警
结合课程文档描述与仓库中同类课程的自学经验,为有意自学本课程的读者给出如下建议:
- 先修务必夯实:文档明确列出先修要求为系统入门(如 15-213/CSAPP)、深度学习入门与基础数学。强烈建议先完成仓库中 CMU 15-213(CSAPP) 的配套学习,并掌握 Python 与 C++。若对深度学习框架内部一无所知,可先学习 CMU 10-414 打底。
- 作业是课程灵魂:三大作业承载了本课程绝大部分的学习价值。特别是 Assignment 3 的 GEMM 内核优化,建议预留充足时间反复调优,不要以「跑通」为终点——从 0.02 到 1300+ TFLOP/s 的迭代过程本身就是最深刻的学习材料。
- 视频缺失的应对:课程没有公开录像,自学时主要依靠课件、论文阅读与作业文档。建议配合 MLC 机器学习编译课程(同为 Tianqi Chen 讲授、资源开源)以及 UCSD CSE234 中提到的 GPU 内核讲解类资源进行补充学习。
- 难度与时间预期:课程难度被标注为四星,预计投入 100 小时以上。若缺乏并行编程与 GPU 体系结构基础,后半程(LLM 优化与推理)的学习曲线会明显变陡,需做好时间与心理的双重准备。
结语
在 AI 基础设施人才需求高涨的当下,CMU 15-442/642 提供了一条从「会用框架」通往「会造框架、会写内核、会设计分布式与推理系统」的高质量路径。它不同于仓库中偏算法或偏应用的课程,是一门实打实的系统性能工程训练课。若你具备扎实的系统基础,又渴望理解 vLLM、cuBLAS 背后的底层原理,那么这门课值得投入 100 小时以上去攻克——完成三大作业后,你对「模型、数据、系统、硬件」全栈的理解将发生质的飞跃。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0626
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00