PyTorch 训练框架内核深度解析

贯穿 PyTorch 训练栈:从 Tensor 内存布局一路走到 Inductor 的 Triton 代码生成。

本专栏基于 PyTorch v2.11(torch.compile 已成默认编译路径、FSDP-2 已稳定的里程碑版本)源码,系统剖析当代深度学习训练框架的设计与实现。从一个 tensor.add(other) 的完整旅程出发,由外到内、层层下潜:经过 Python 前端、Dispatcher 多分派、ATen 算子注册、c10 核心抽象、CUDA Caching Allocator、Autograd 反向图、TorchDynamo 帧拦截、AOTAutograd 函数化、Inductor Triton 代码生成、DDP 环形 AllReduce、FSDP ZeRO-3 分片,最终回到 NCCL 通信原语 —— 把每一个架构决策背后的"为什么"翻出来。

本专栏规模

数据
章节 24(前言 + 23 正文)
中文字数 ~16 万
Mermaid 架构 / 时序图 122 张
真实源码引用 数百处带 file:line 标注,全部对齐 v2.11 实测
Section 编号 924 条,跨章 §X.Y.Z cross-reference 100% 命中

每章 6500+ 中文字 + 至少 4 张 mermaid 图 + 多段真实源码摘录,覆盖 v2.11 源码的核心机制(不是 API 教程、不是入门)。

读完你能做到什么

  1. 完整跟完一次 tensor.add(other) 从 Python 前端到 Dispatcher 多分派、ATen 算子注册、c10 核心抽象,每一跳发生了什么(第1章 架构第3章 c10第5章 Dispatcher第6章 ATen codegen)。
  2. 解释显存去哪了。 Tensor 与 Storage 的分离、CUDA Caching Allocator 的分配策略与碎片来源——这是"明明还有显存却 OOM"的答案所在(第2章 Tensor 与 Storage第4章 CUDA 缓存分配器)。
  3. 说清反向图是怎么建起来又怎么跑的。 autograd 的设计、引擎的执行方式、与前向的对应关系(第7章 autograd 设计第8章 autograd 引擎)。
  4. 读懂 torch.compile 的三段式。 TorchDynamo 怎么拦截字节码帧、AOTAutograd 的函数化、Inductor 生成 Triton 代码,以及端到端串起来的完整路径(第12章 Dynamo第13章 AOTAutograd第14章 Inductor第15章 端到端)。
  5. 理解分布式训练的两条路。 ProcessGroup 与通信原语、DDP 的环形 AllReduce、FSDP 的 ZeRO-3 分片(第16章 ProcessGroup第17章 DDP第18章 FSDP)。
  6. 写自定义算子并做性能归因。 自定义算子的注册路径、Profiler 怎么读、量化与混合精度(第22章 自定义算子第21章 Profiler第20章 量化与 AMP)。
  7. 补齐工程侧。 nn.Module 的机制、优化器、DataLoader、序列化(第9章 nn.Module第10章 优化器第11章 DataLoader第19章 序列化第23章 设计哲学)。

适合谁读

与本系列其他专栏的关系

关联书 关系
vLLM 内核探秘 推理侧;本专栏是训练侧 —— 两者共享 ATen / CUDA Allocator / Dispatcher,构成"训练 + 推理"双子卷
Tokio 异步运行时 都是"用户态调度器 + 多线程 worker"模型,autograd Engine 章节会做对照
Rust 编译器之路 TorchDynamo 的 guards / TorchInductor 的 IR-Lowering 与编译器后端有同源思想
Serde 元编程 ATen 的算子代码生成(YAML → C++ 注册)和 Serde 的派生宏哲学相通

源码版本

本专栏的源码引用以 PyTorch v2.11.0(2026-03-20 发布)为准:

仓库 版本 Git Commit
pytorch/pytorch v2.11.0 70d99e9
git clone https://github.com/pytorch/pytorch.git
cd pytorch && git checkout v2.11.0

选 v2.11 而不是更早的 v2.0 / v2.4,是因为它是几条脉络汇合后的稳定形态:torch.compile 经过三年打磨、实验性 flag 大多已成默认;FSDP-2 成为新代码的推荐路径;PT2E 量化取代旧的 FX graph mode;Distributed Checkpoint 成为千卡训练的事实格式。正文标注的文件路径与函数名是稳定锚点,行号会随补丁漂移。

目录

开篇

第一篇 全景

第二篇 张量层与运行时

第三篇 Dispatcher 与算子

第四篇 Autograd 自动求导

第五篇 nn 与训练栈

第六篇 torch.compile 编译器栈

第七篇 分布式训练

第八篇 工程与生态

版权声明

本专栏内容为 杨艺韬 版权所有,保留一切权利。未经书面许可,不得全文或大段转载、改编、翻译,或用于任何商业用途(含以本专栏内容训练模型、生成衍生课程或商品)。

欢迎分享本专栏的链接。引用少量内容用于评论、教学或研究时,请署名 杨艺韬 并附上原文链接。