Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

底层实现:训练框架

模型训练通常被压缩成几行代码:执行前向计算、得到损失、反向传播梯度,再由优化器更新参数。表面上,这只是对几个接口的依次调用;实际上,每一步都依赖前一步留下的数据和状态。把它们连接起来的是训练框架:它需要定义张量如何存储,记录算子之间的依赖,按照链式法则传递并累加梯度,还要组织模型参数,使同一套训练过程能够在不同模型和计算设备上稳定运行。

本书以 Zero 为基础,从一个可运行的训练框架出发,逐层拆解它的底层实现。Zero 保留了完成真实训练所需的主要结构,又将代码控制在能够直接阅读和追踪的范围内。重点不是复刻完整的 PyTorch,也不是罗列接口用法,而是沿着一次计算的实际路径,观察张量、自动微分、算子、模型和参数更新如何组成一个完整系统。在这个过程中,既要说明每个抽象解决什么问题,也要关注它们之间的数据所有权、形状约束和调用关系,让数学规则能够落实到具体代码。

全书首先介绍 Zero 的整体训练流程,随后进入自动微分、张量存储和算子实现。这三部分构成训练框架的计算基础,模型组织与参数更新在其上形成训练闭环,Python 前端则展示如何在保留 C++ 核心的同时提供更灵活的模型表达方式。最后两篇讨论 GPU 计算与 GPT 训练,进一步引入设备内存、CUDA Kernel、注意力和更复杂的训练任务,展示同一套框架如何从 CPU 上的简单模型扩展到 GPU 上的语言模型。