首页
/ CMU 15-442/642 机器学习系统课程自学指南:从自动微分到 Blackwell GPU 内核优化

CMU 15-442/642 机器学习系统课程自学指南:从自动微分到 Blackwell GPU 内核优化

2026-09-06 18:29:10作者:瞿蔚英Wynne

本文基于《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) 专注编译抽象,而本课程则覆盖了整个全栈闭环。

课程内容大致可划分为以下递进阶段:

  1. 深度学习框架的基石:从自动微分(Automatic Differentiation)等底层机制讲起,理解计算图框架的工作方式。这一阶段与 CMU 10-414 的 Needle 框架实现作业 的主题一脉相承。
  2. 现代 GPU 的硬件加速与底层编程:切入最新的 GPU 架构(如 Blackwell B200),讲解硬件特性如何决定编程范式,以及如何通过原生级编程榨取性能。
  3. 大模型的分布式训练:在打通单卡极致性能之后,课程延伸至多卡训练,详细讲解 ZeRO 冗余优化器,以及 张量并行(Tensor Parallelism)流水线并行(Pipeline Parallelism) 等并行机制,辅以通信原语层面的实现训练。
  4. LLM 推理与部署:将目光聚焦当下的 LLM 推理服务,深入剖析 连续批处理(Continuous Batching)PagedAttention投机解码(Speculative Decoding) 等核心优化策略——这些正是 vLLM、SGLang 等顶尖推理框架背后的关键技术。
  5. 前瞻性的编译抽象与 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 等并行编程课程补足基础。

课程资源清单

课程相关官方资源如下:

资源汇总与参考实现

《CS 自学指南》的读者 @RisingUppercut 在学习这门课(2026 春季学期)的过程中,所使用的全部资源与作业实现均汇总在 RisingUppercut/CMU_15442_2026Spring,非常适合自学时对照参考:既可以作为卡壳时的 debug 参照,也可以在完成作业后对比不同实现思路在性能与代码组织上的差异。

这与仓库「机器学习系统」板块中其他课程的资源组织方式保持一致——例如 CMU 10-414 文档中收录了 @PKUFlyingPig 与 @Crazy-Ryan 的作业实现汇总,AICS 智能计算系统 文档中收录了 @Yuichi、@ysj1173886760 的实验与笔记汇总。建议的学习策略是:先独立实现,遇到瓶颈再参考他人代码,切忌直接照抄。

自学建议与难点预警

结合课程文档描述与仓库中同类课程的自学经验,为有意自学本课程的读者给出如下建议:

  1. 先修务必夯实:文档明确列出先修要求为系统入门(如 15-213/CSAPP)、深度学习入门与基础数学。强烈建议先完成仓库中 CMU 15-213(CSAPP) 的配套学习,并掌握 Python 与 C++。若对深度学习框架内部一无所知,可先学习 CMU 10-414 打底。
  2. 作业是课程灵魂:三大作业承载了本课程绝大部分的学习价值。特别是 Assignment 3 的 GEMM 内核优化,建议预留充足时间反复调优,不要以「跑通」为终点——从 0.02 到 1300+ TFLOP/s 的迭代过程本身就是最深刻的学习材料。
  3. 视频缺失的应对:课程没有公开录像,自学时主要依靠课件、论文阅读与作业文档。建议配合 MLC 机器学习编译课程(同为 Tianqi Chen 讲授、资源开源)以及 UCSD CSE234 中提到的 GPU 内核讲解类资源进行补充学习。
  4. 难度与时间预期:课程难度被标注为四星,预计投入 100 小时以上。若缺乏并行编程与 GPU 体系结构基础,后半程(LLM 优化与推理)的学习曲线会明显变陡,需做好时间与心理的双重准备。

结语

在 AI 基础设施人才需求高涨的当下,CMU 15-442/642 提供了一条从「会用框架」通往「会造框架、会写内核、会设计分布式与推理系统」的高质量路径。它不同于仓库中偏算法或偏应用的课程,是一门实打实的系统性能工程训练课。若你具备扎实的系统基础,又渴望理解 vLLM、cuBLAS 背后的底层原理,那么这门课值得投入 100 小时以上去攻克——完成三大作业后,你对「模型、数据、系统、硬件」全栈的理解将发生质的飞跃。

登录后查看全文
热门项目推荐
相关项目推荐