电子书/CS 自学指南

26 / 30

机器学习系统

约 0.4 万字 · 0 阅读

课程简介

  • 所属大学:CMU
  • 先修要求:系统入门(eg.15-213)、深度学习入门、基本的数学知识
  • 编程语言:Python, C++, CUDA(PTX), TIRx
  • 课程难度:🌟🌟🌟🌟
  • 预计学时:100小时+

随着大语言模型(LLM)的爆发,如何高效训练和部署这些庞然大物成为了当今 AI 领域最核心的挑战之一。如果你不满足于仅仅做一个调用 PyTorch API 的“炼丹侠”,而是十分好奇并且想探究 vLLM、SGLang 等顶尖推理框架的背后的底层原理,并且想亲自编写榨干现代 GPU 算力的底层算子,那么这门由 Tianqi Chen 和 Zhihao Jia 教授讲授的课程将是一个不错的入门途径。

课程内容采用“模型、数据、系统、硬件”全栈协同的视角,构建了从底层物理硬件到上层分布式框架的完整知识地图。首先从自动微分等深度学习框架基石讲起,随后切入现代 GPU(如最新的Blackwell B200 架构)的底层硬件加速及编程。在打通单卡极致性能后,课程内容延伸至大模型的分布式训练,详细讲解 ZeRO 冗余优化器及张量与流水线等并行机制。最后,课程将目光聚焦于当下的 LLM 推理,深入剖析连续批处理、PagedAttention、投机解码等核心优化策略,并前瞻性地探讨了现代机器学习编译抽象以及巨型算子(Mega-Kernel)等内容。

这门课最大的特色在于其具有挑战性且与工业界前沿接轨的编程作业。一共有三个作业:1. 第一个作业是实现一个扩展图的自动微分框架。2. 在分布式训练作业中,你需要使用 MPI 和 NumPy 实现 ZeRO Stage 3 的参数分片与张量模型并行的通信逻辑。3. 而在最硬核的 GPU 算子作业中,你将使用 TIRx DSL,针对最新的 NVIDIA Blackwell (B200) 架构,从零开始一步步手写并优化 FP16 矩阵乘法。你不仅需要处理 128B Swizzle 的内存错位排列来消除 Bank 冲突,还要手动下发 TMA(张量内存加速器)异步搬运指令,并设计 Warp Specialization 软流水线机制和 2-CTA 集群调度,最终将算力从最初的 0.02 TFLOP/s 飙升至媲美官方 cuBLAS 的 1300+ TFLOP/s。

课程资源

资源汇总

@RisingUppercut 在学习这门课中用到的所有资源和作业实现都汇总在 RisingUppercut/CMU_15442_2026Spring 中。


智能计算系统

课程简介

  • 所属大学:中国科学院大学
  • 先修要求:体系结构,深度学习
  • 编程语言:Python, C++, BCL
  • 课程难度:🌟🌟🌟
  • 预计学时:100 小时+

智能计算系统是智能的核心物质载体,每年全球要制造数以十亿计的智能计算系统(包括智能手机、智能服务器、智能可穿戴设备等),需要大量的智能计算系统的设计者和开发者。智能计算系统人才的培养直接关系到我国智能产业的核心竞争力。因此,对智能计算系统的认识和理解是智能时代计算机类专业学生培养方案中不可或缺的重要组成部分,是计算机类专业学生的核心竞争力。

国内的陈云霁老师开的课,在其他若干个大学也都有开对应的课程。这门课用一个个实验带大家以一个完整的视野理解人工智能的技术栈。从上层的深度学习框架,到用底层语言编写算子,再到硬件中 MLU 的设计,让大家形成系统思维,体会自上而下,融会贯通的乐趣。

我做了其中的 2,3,4,5 这几个实验,其中综合实验和硬件实验没有做,如果有做了的同学欢迎大家补上你的链接。

个人体会是第三章实现算子的实验让我对深度学习框架的了解加深了很多。第五章的实验BCL语言编写算子如果了解 CUDA 的话会感觉很熟悉。

推荐去买一本教材看一看,会让我们理解整体的技术栈。熟悉深度学习的同学可以直接从第五章开始看,看看深度学习框架底层到底是什么样的。

我因为这门课的启发,参考一本书(书名在仓库中)写了一个简易的深度学习框架。在这个框架里可以看到智能计算系统实验中的一些影子。同时受到 build-your-own-x 系列的启发,我也打算写一下教程,教大家写一个自己的深度学习框架。代码用 Python 写的,代码量较少,适合有一定基础的同学阅读。之后打算添加更多的算子,有望实现一个较为全面的框架,并希望移植到 C++ 中,以兼顾性能与开发效率。

课程资源

  • 课程网站:官网
  • 课程视频:bilibili
  • 课程教材:智能计算系统(陈云霁)

资源汇总

2024年新版实验

  • 2024 年的智能计算系统实验内容对知识体系、实验题目及实验手册进行了大范围的调整,调整内容包括全面使用 PyTorch ,不再使用 TensorFlow 以及添加大模型相关实验等。

  • 由于新版实验题目及实验手册未在寒武纪论坛进行更新,因此提供以下存储仓库,用于存储新版智能计算系统的实验题目、实验手册以及个人的实验答案

  • 新版实验的资源跟随国科大 2024 年春季学期的课程进度进行更新,预计 2024 年 6 月更新完毕

  • @Yuichi 编写的 2024 新版实验题目、手册及答案:https://github.com/Yuichi1001/2024-AICS-EXP

旧版实验


CMU 10-414/714: Deep Learning Systems

课程简介

  • 所属大学:CMU
  • 先修要求:系统入门(eg.15-213)、深度学习入门、基本的数学知识
  • 编程语言:Python, C++
  • 课程难度:🌟🌟🌟
  • 预计学时:100小时

深度学习的快速发展和广泛使用很大程度上得益于一系列简单好用且强大的编程框架,例如 Pytorch 和 Tensorflow 等等。但大多数从业者只是这些框架的“调包侠”,对于这些框架内部的细节实现却了解甚少。如果你希望从事深度学习底层框架的开发,或者只是像我一样好奇这些框架的内部实现,那么这门课将会是一个很好的起点。

课程的内容大纲覆盖了深度学习系统“全栈”的知识体系。从现代深度学习系统框架的顶层设计,到自微分算法的原理和实现,再到底层硬件加速和实际生产部署。为了更好地掌握理论知识,学生将会在5个课程作业中从头开始设计和实现一个完整的深度学习库 Needle,使其能对计算图进行自动微分,能在 GPU 上实现硬件加速,并且支持各类损失函数、数据加载器和优化器。在此基础上,学生将实现几类常见的神经网络,包括 CNN,RNN,LSTM,Transformer 等等。

即使你是深度学习领域的小白也不必过于担心,课程将会循序渐进地从简单分类问题和反向传播优化讲起,一些相对复杂的神经网络都会有配套的 jupyter notebook 详细地描述实现细节。如果你有一定的相关基础知识,那么在学习完自微分部分的内容之后便可以直接上手课程作业,难度虽然不大但相信一定会给你带来新的理解。

这门课两位授课教师 Zico Kolter 和 Tianqi Chen 将所有课程内容都发布了对应的开源版本,但在线评测账号和课程论坛的注册时间已经结束,只剩下框架代码里的本地测试供大家调试代码。或许可以期待明年秋季学期的课程还会发布相应的在线版本供大家学习。

课程资源

资源汇总

@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/CMU10-714 - GitHub 中。

@Crazy-Ryan 在学习这门课(24 Fall)过程中的作业实现汇总在 Crazy-Ryan/CMU-10-714 - GitHub 中。


MIT6.5940: TinyML and Efficient Deep Learning Computing

课程简介

  • 所属大学:MIT
  • 先修要求:体系结构、深度学习基础、
  • 编程语言:Python
  • 课程难度:🌟🌟🌟🌟
  • 预计学时:50小时

这门课由 MIT 的 Song Han 教授讲授,侧重于高效的机器学习训练、推理技术。学生需要有一定的深度学习方面的知识基础。

课程主要分为三个部分,首先讲授了让神经网络轻量化的各种关键技术,例如剪枝、量化、蒸馏、网络架构搜索等等。有了这些基础之后,课程第二部分会讲授面向特定领域场景的各种高效优化技术,涉及了目前深度学习最前沿热门的各个方向,例如大语言模型的推理、长上下文支持、后训练加速、多模态大语言模型、GAN、扩散模型等等。课程第三部分主要涉及各类高效训练技术,例如大规模分布式并行、自动并行优化、梯度压缩、边缘训练等等。Song Han 教授的讲解深入浅出,覆盖的知识面很广,且都是当前热门的领域方向,如果是想对大语言模型有初步了解也可以重点关注第二和第三部分的内容。

课程内容和资源都可以在课程网站上找到,视频在油管上有官方版本,B站也有生肉和熟肉搬运,可以自行查找。课程作业一共有5个,前三个分别考察了量化、剪枝和 NAS,后两个主要是对大语言模型的压缩和高效部署,总体难度相对简单,但能很好地巩固核心知识。

课程资源

资源汇总

@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/MIT6.5940_TinyML - GitHub 中。


Machine Learning Compilation

课程简介

  • 所属大学:Bilibili 大学
  • 先修要求:机器学习/深度学习基础
  • 编程语言:Python
  • 课程难度:🌟🌟🌟
  • 预计学时:30小时

这门课是机器学习编译领域的顶尖学者陈天奇在2022年暑期开设的一门在线课程。其实机器学习编译无论在工业界还是学术界仍然是一个非常前沿且快速更迭的领域,国内外此前还没有为这个方向专门开设的相关课程。因此如果对机器学习编译感兴趣想有个全貌性的感知的话,可以学习一下这门课。

本课程主要以 Apache TVM 这一主流的机器学习编译框架为例(陈天奇是这个框架的创始人之一),聚焦于如何将开发模式下(如 Tensorflow, Pytorch, Jax)的各类机器学习模型,通过一套普适的抽象和优化算法,变换为拥有更高性能并且适配各类底层硬件的部署模式。课程讲授的知识点都是相对 High-Level 的宏观概念,同时每节课都会有一个配套的 Jupyter Notebook 来通过具体的代码讲解知识点,因此如果从事 TVM 相关的编程开发的话,这门课有丰富且规范的代码示例以供参考。

所有的课程资源全部开源并且有中文和英文两个版本,B站和油管分别有中文和英文的课程录影。

课程资源


UCSD CSE234: Data Systems for Machine Learning

课程简介

  • 所属大学:UCSD
  • 先修要求:线性代数,深度学习,操作系统,计算机网络,分布式系统
  • 编程语言:Python, Triton
  • 课程难度:🌟🌟🌟
  • 预计学时:120小时

本课程专注于设计一个全面的大语言模型(LLM)系统课程,作为设计高效LLM系统的入门介绍。

课程可以更准确地分为三个部分(外加若干 guest lecture):

Part 1. 基础:现代深度学习与计算表示

  • Modern DL 与计算图(computational graph / framework 基础)
  • Autodiff 与 ML system 架构概览
  • Tensor format、MatMul 深入与硬件加速器(accelerators)

Part 2. 系统与性能优化:从 GPU Kernel 到编译与内存

  • GPUs & CUDA(含基本性能模型)
  • GPU MatMul 与算子编译(operator compilation)
  • Triton 编程、图优化与编译(graph optimization & compilation)
  • Memory(含训练/推理中的内存问题与技巧)
  • Quantization(量化方法与系统落地)

Part 3. LLM系统:训练与推理

  • 并行策略:模型并行、collective communication、intra-/inter-op、自动并行化
  • LLM 基础:Transformer、Attention、MoE
  • LLM 训练优化:FlashAttention 等
  • LLM 推理:continuous batching、paged attention、disaggregated prefill/decoding
  • Scaling law

(Guest lectures:ML compiler、LLM pretraining/open science、fast inference、tool use & agents 等,作为补充与扩展。)

CSE234的最大特点在于非常专注于以LLM (LLM System)为核心应用场景,强调真实系统设计中的取舍与工程约束,而非停留在算法或 API 使用层面。课程作业通常需要直接面对性能瓶颈(如内存带宽、通信开销、kernel fusion 等),并通过 Triton 或系统级优化手段加以解决,对理解“为什么某些 LLM 系统设计是现在这个样子”非常有帮助。学习体验整体偏硬核,前期对系统与并行计算背景要求较高,自学时建议提前补齐 CUDA/并行编程与基础系统知识,否则在后半部分(尤其是 LLM 优化与推理相关内容)会明显感到陡峭的学习曲线。但一旦跟上节奏,这门课对从事 LLM Infra / ML Systems / AI Compiler 方向的同学具有很强的长期价值。

学习路线推荐

课程本身其实比较循序渐进,但是对于没有系统与并行计算背景的同学来说可能到第二部分会感觉稍微陡峭一点。课程最核心的部分其实是要花很多时间动手实现与优化系统,因此建议在读paper的时候就可以在Github上找一些相关的开源项目,动手实现相关的系统或者Kernel,加深理解。

  • 基础部分:建议配合 micrograd 等开源项目一起学习
  • 系统与性能优化 & LLM系统:建议配合 nanoGPT, nano-vllm 等开源项目一起食用

课程页面本身提供了一些知识与资源,可以参考:Book related documentation and courses

课程资源

资源汇总

所有课程内容都发布了对应的开源版本,但在线测评和作业参考答案部分尚未开源。

其他资源/课程延伸

本文转载自开源项目 CS 自学指南(作者 PKUFlyingPig),按 MIT 许可刊载,正文未改动。

医疗、法律、政策类内容仅供参考,具体以当地部门、医生、律师的说法为准。