反向传播与训练机制(Backpropagation and Training Mechanics)
专题类型:基础支撑 能力出口:核对梯度与训练状态,建立性能比较前的正确性证据
一次训练更新先由前向传播建立依赖,再由损失给出监督信号,最后由反向传播生成梯度并写回参数。参数、激活值、反向保存张量、梯度和优化器状态在不同阶段产生、驻留和释放;这些关系共同决定更新是否正确、峰值显存出现在哪里,以及重算或搬运会增加多少代价。
预训练、持续预训练和后训练会改变数据来源、监督范围、参与模型和分布式规模,却共享同一组训练语义:计算图、局部反向、有效更新、数值稳定和训练状态生命周期。完成本专题后,应能画出训练依赖图,核对监督与更新条件,建立状态生命周期账本,并在比较性能前确认梯度和数值行为正确。
学习路线
按 Task 顺序学习时使用下表;需要连续理解一次训练更新时进入训练机制问题链,遇到梯度为空、更新不一致或显存峰值异常时使用训练机制问题索引,术语差异查询专题术语表,跨页公式与符号查询公式索引。Task0–4 建立共用训练机制,Task5 比较重算与搬运,Task6 检查候选能否进入真实性能比较。
| Task / 主题 | 本阶段要回答的问题 | 学习入口与验证出口 | 学习顺序 | 主要正文入口 |
|---|---|---|---|---|
| Task0 · 训练闭环与梯度信号 | 参数如何经过前向传播、损失、反向传播和更新形成一次完整训练闭环? | 核心:Part 00 · 09 模块与参数 → Part 00 · 12 训练生命周期 | 参数初态 → 前向依赖 → 损失 → 梯度 → 更新后状态 | 01 训练闭环与计算图 |
| Task1 · 计算图、VJP 与梯度边界 | 自动求导如何沿计算图传播上游梯度,计算图在何处被保留、累积或切断? | 核心:Part 00 · 07 自动求导 → Part 00 · 08 梯度边界 | 局部导数 → VJP → 分支汇合 → 累积 / 切断 | 02 自动求导与 Transformer 反向传播 |
| Task2 · Transformer 局部反向与保存状态 | 激活、损失、Attention 与残差路径分别依赖哪些前向状态? | 核心:Part 02 · 09 激活与损失反向 → Part 02 · 10 Attention 反向传播 | 局部算子 → 保存状态 → 反向消费者 → 梯度对照 | 02 自动求导与 Transformer 反向传播 |
| Task3 · 监督、梯度尺度与有效更新 | 损失归约、微批次、混合精度与更新时钟如何共同决定一次有效更新? | 核心:Part 02 · 11 梯度累积 → Part 02 · TRAIN-MIXED-PRECISION-BACKWARD 混合精度反向 → Part 02 · 12 优化器与调度 → Part 02 · 55 训练更新动力学 | 监督范围 → 有效 Token 分母 → 累积梯度 → step / skip → 调度时钟 → 参数位移 | 03 监督与有效更新 |
| Task4 · 训练状态生命周期与峰值账本 | 参数、梯度、优化器状态、激活和工作区在何时产生、驻留、消费与释放? | 核心:Part 00 · 18 显存账本 | 状态字节 → 创建与最后消费时刻 → 阶段重叠 → 基线峰值 | 04 训练状态生命周期 |
| Task5 · 重算、搬运与驻留策略 | 激活检查点和卸载分别改变什么状态,代价由计算还是传输承担? | 核心:Part 02 · 19 激活检查点 与 Part 02 · 42 激活卸载 → Part 02 · 43 统一训练内存账本 | 基线生命周期 → 重算 / 搬运两条并列路径 → 策略后峰值与新增时间 | 05 激活检查点与卸载 |
| Task6 · 正确性、数值稳定与性能证据 | 梯度和更新语义成立后,如何判断候选策略既正确又值得采用? | 核心:Part 00 · 19 异常定位 → Part 00 · 20 实验设计 | 输入一致 → 梯度一致 → 更新有效 → 质量过门 → 性能复测 | 06 正确性与性能证据 |
扩展与跨专题入口
学习路线说明阅读顺序;下面的知识地图改为说明两条机制链如何汇合:训练信号沿反向依赖形成更新语义,保存状态沿生命周期进入状态策略,二者共同接受正确性与性能证据约束。
预训练和后训练分别改变什么
共同主干分别服务两条应用路径:预训练与持续预训练使用全序列监督和长周期训练,后训练引入 response-only mask、adapter、偏好对、rollout 与奖励信号。两条路径改变监督与系统规模,不改变计算图、有效更新和状态生命周期的基本语义。
| 应用路径 | 改变的输入与训练状态 | 机制入口 |
|---|---|---|
| 预训练 / 持续预训练 | 全序列监督、长周期 checkpoint、领域评测与通用保留集 | Part 02 · 55 更新动力学 → Part 02 · 56 持续预训练 |
| 后训练 | response-only mask、adapter、偏好对、rollout、reward 与 value | Part 02 · 2.4 监督微调 → 后训练优化 |
遇到这些问题时先读什么
| 知识缺口 | 回补入口 | 使用时机 |
|---|---|---|
| Attention 的前向表示 | Part 02 · 04 Attention | Task2 中需要回看 Q/K/V、Softmax 与残差路径的输入输出时 |
| dtype、FP16 与 BF16 | Part 01 · 01 数据格式与混合精度 | Task6 中分析梯度范围、缩放和有限值时 |
| ZeRO 与多卡状态切分 | Part 01 · 06 显存计算与 ZeRO | Task4 账本扩展到多卡训练时 |
| 梯度同步与通信 | 通信与并行 | 单卡梯度语义已经成立,需要分析 All-Reduce 或 Reduce-Scatter 时 |
跨专题入口
| 后续问题 | 进入专题 | 交给下一专题的记录 |
|---|---|---|
| SFT、DPO、GRPO 的训练目标和项目交付 | 后训练优化 | 监督信号、有效更新和梯度安全 |
| 峰值显存、时间线追踪、吞吐和策略选择 | 性能优化 | 状态生命周期、策略作用对象和正确性门槛 |
| 反向传播内核、融合与重算 | 算子优化 | 局部梯度依赖与反向保存张量 |
| 状态切分、梯度同步和扩展效率 | 通信与并行 | 单卡梯度语义与训练状态账本 |
实验与项目出口
| 项目入口 | 使用的机制记录 | 产生的实验结果 |
|---|---|---|
| Part 02 · 73 训练基线 | 监督范围、有效更新和状态账本 | 固定工作负载下的质量、吞吐、单步时间与峰值 |
| Part 02 · 74 候选准入与交接 | 时间线、主导状态和候选约束 | 瓶颈归因、候选选择与复测条件 |
| Part 02 · 76 策略对照 | Checkpoint、Offload 与统一内存账本 | 单策略和组合策略的质量—容量—时间结论 |
环境与验证
首次运行先按实验 Quickstart准备环境,再从实验资产表确认页面、结果路径和验证状态。单卡机制实验使用 TRAIN-CUDA-MECHANISM,在 Notebook 5.1 设置 RUN_MODE、RUN_LABEL、Profile ID 和本页工作负载参数;项目实验还需固定模型、数据划分、有效批次、数据类型、优化器更新次数和随机种子。
| 实验层级 | 适用内容 | 可确认的结论 |
|---|---|---|
| CPU 机制 | Task0–5 的计算图、局部梯度、监督、账本和策略逻辑 | 数值关系、状态转移与输入契约正确 |
| 单卡 GPU | 梯度累积、混合精度、激活检查点与卸载 | 更新一致性、峰值显存与单步时间的真实代价 |
| 训练性能项目 | Part 02 · 73、74、76 | 固定工作负载下候选策略是否值得采用 |
