训练系统关键环节
实际执行中,计算与通信可能交叠。
训练系统重点演进
0.8-0.11:训练对象多样化
随着 MoE、混合模型和多模态任务出现,训练对象从重复的 Transformer Block 扩展到包含专家分支、不同计算层和多种输入的模型;长上下文则对序列处理和分配提出了新要求。
同一层的 Token 使用同一套 Dense MLP;不同层的开销仍可能有差异。
Token 只经过选中的专家;专家跨设备时,需处理数据交换和负载均衡。
不同层的计算与状态不同,组合顺序及并行支持取决于具体模型和配置。
视觉与语言模块的数据形状和资源需求不同,连接方式取决于具体模型。
0.8:LLaVA 图文训练路径
图文问答等任务需要模型同时理解图像与文本。0.8 初步支持基于 LLaVA 架构的视觉语言模型训练:图像与文本分别编码,图像特征经投影后与文本表示组合,再送入语言模型。同一版本还初步支持 Mamba-2 及其与 Attention、MLP 的混合模型。0.8 Release
与 LLaVA 同期出现的 Mamba-2 混合模型,改变的不是输入模态,而是序列计算的实现方式:Attention 读取历史位置,Mamba-2 使用状态空间机制处理序列。框架需要为不同层准备各自的算子和状态管理路径,不能假定所有层都有相同的 Attention 形状。
0.9:首尾阶段非均匀流水线分层
首尾 Pipeline Stage 除 Transformer 层外,还可能承担 Embedding、输出或 Loss 等工作;各阶段分配相同数量的层,未必均衡。0.9 支持让首尾阶段分配比中间阶段更少的 Transformer 层,为调整负载提供了空间。0.9 Release
0.10:MoE Parallel Folding
MoE 模型中的 Attention 与 Experts 虽然运行在同一批 GPU 上,却不一定适合相同的并行配置:Attention 可能需要张量并行与上下文并行,Experts 则可能更适合不同的专家并行和张量切分方式。0.10 引入的 MoE Parallel Folding,让两部分能够采用不同的逻辑并行映射。0.10 Release
这一变化关注不同模块如何使用设备;专家如何选择 Token、Token 又如何高效跨设备交换,仍需要路由和通信路径配合。
收益并不来自多开几个 Group。在同样 8 Rank 下,Attention 可以把更适合矩阵切分/长序列的 Rank 组织成 TP/CP 组,Expert 则按 ETP/EP 划分。真正价值是让两类模块不必接受同一个并行度的折中。代价是 Group 数量与布局转换增加,某些通信可能跨越原来较近的互联域;必须同时比较 Attention 耗时、Expert GEMM、Token Dispatch 与峰值显存,不能只看某个模块的加速。
0.10:MLA 扩展 Attention 内部的数据路径
MoE Parallel Folding 解决的是模块之间怎样分配设备;Multi-Latent Attention(MLA) 改变的则是 Attention 模块内部的表示和计算。传统 MHA/GQA 直接使用投影得到的 K、V,而 MLA 引入低维潜在表示及相应的上、下投影路径,减少重复的 KV 表示。其训练性能仍取决于具体投影融合、RoPE 路径和并行策略。
展开 MLA 的 Latent、RoPE 与投影细节
0.11:DeepSeek-V3 的专家路由支持
MoE 微调需要在专家间分配 Token;如果负载倾斜或跨设备通信受限,部分专家与设备可能成为瓶颈。0.11 发布说明列出 DeepSeek-V3 微调支持,其中包括无辅助损失负载均衡,以及 Node-limited 和 Device-limited 路由。0.11 Release
模型构建、模块并行和专家路由已经能够分别适配新架构。不过,路由只决定 Token 去往哪个专家;跨设备搬运仍需要更高效的通信实现,Pipeline 的层放置也开始受到不均匀计算负载影响。
0.12-0.13:数据流与流水线布局
MoE 让 Token 在专家之间流动,MTP 为训练增加未来 Token 的预测路径;模型结构不再规整,也让 Pipeline 的层分配更加重要。0.12 和 0.13 分别从通信、预测和布局三个方向扩展训练能力。
0.12:DeepEP 优化专家数据交换
MoE 的 Router 为每个 Token 选择专家。专家分布在不同设备时,Token 需要先被分发到目标专家,再将结果送回原位置。0.12 增加 DeepEP 支持,为细粒度 MoE 的 Dispatch / Combine 提供专门的通信路径。[5]
一个 Token 如何到达专家?
| 源设备 | Token | 路由目标 |
|---|---|---|
| GPU0 | a / b | E0 / E2 |
| GPU1 | c / d | E1 / E3 |
这条路径中,Router 决定交给谁处理,Dispatch / Combine 负责数据如何往返,Grouped GEMM 则组织到达专家后的计算。实际通信量取决于远端路由比例、EP 规模和后端实现;图中的逻辑展开量不能直接当成网络发送量。
设有 T=8 个源 Token、Top-K=2,则总共有 16 次逻辑专家分配,但它们不等于 16 次跨机发送:如果专家在本地,分配不会产生远端网络负载;若使用节点级去重/压缩路径,还可能改变跨节点的物理发送次数。
16 个 (token, expert) 配对;可能包含一个 Token 对多个 Expert 的引用。
与本地路由比例和缓冲区布局有关;可能在节点内重排。
与目标所在节点、去重/融合策略和 dtype 有关,不可直接等同 16×H×dtype。
Grouped GEMM 负责组织到达本 GPU 的专家工作,不决定跨机网络字节。
在 core_v0.12.0 的 token_dispatcher.py 中,MoEFlexTokenDispatcher 通过后端管理器完成路由元数据准备和 dispatch/combine。随着 HybridEP 加入,接口的分发与回收语义保持一致,但实际通信和重排由不同后端处理。
0.12:MTP 增加未来 Token 的训练信号
普通下一 Token 预测在当前位置学习预测下一个 Token;Multi-Token Prediction(MTP)在训练中增加对更远位置 Token 的预测路径,提供额外训练信号。0.12 发布说明列出 MTP 支持;它改变的是模型训练目标和计算路径,与 DeepEP 的专家通信作用于不同环节。[5]
与 DeepEP 的差异在于:MTP 不负责跨 GPU 传输,而是增加训练目标与预测模块。因此它首先影响模型末端的计算、Activation 和 Loss 组织;当 MTP 与 PP 组合时,还会产生额外的阶段负载。不要把训练时的多 Token 监督直接等同于推理阶段一次生成多个 Token。
MTP 增加了模型末端的计算和状态,因此部署到 Pipeline 时,需要关注预测模块的位置以及末端阶段的显存和工作量。0.13 发布时,MTP 与 Flexible Pipeline Layout 尚不兼容,相关组合需按版本核对。[6]
展开 MTP 的计算、显存与梯度代价
多预测深度意味着更多预测目标、移位输入、Embedding/输出投影及其对应 Loss。
MTP 辅助模块会有自己的反向计算,是否共享权重或停梯度依具体实现。
将 MTP 放到末端可能增加尾端显存与计算,因此 0.16 才继续提供独立 Stage。
对比单预测与多预测下的 loss 分项、MFU、末端 Stage Time、Activation/HBM 与梯度一致性。
0.13:自定义 Pipeline Layout
Embedding、Decoder、输出和 MTP 路径的计算量可能不同,按层数平均切分不一定能平衡各阶段。0.13 引入 --pipeline-model-parallel-layout,支持自定义非对称虚拟 Pipeline 布局,让模型组件可以按受支持的规则重新分配。[6]
2 Decoder + EmbPP1
4 DecoderPP2
2 Decoder + Loss
Et*2|t*3|t*3|LE=Embedding,t=Decoder,L=Loss;此例展示布局语法,不对应特定性能最优配置。m;但在当时的版本中,MTP 与 Flexible Pipeline Layout 尚不兼容。示意中的布局不包含 MTP,避免把语法支持误写成组合可运行。官方 Layout 语法 · 0.13 Release0.13 的自定义布局用于描述模型组件如何放入不同 Stage/Virtual Stage;该版本尚不能把 Flexible PP 与 MTP 视为可自由组合。到 0.16 才出现独立 MTP Stage 支持;按 0.20 文档核对布局和 MTP 约束。
专用的专家交换后端改善了数据搬运路径,自定义 Pipeline Layout 则提供了更灵活的层分配方式。当两者进入完整训练过程,通信等待、调度顺序和 Activation 驻留时间进一步成为吞吐瓶颈。
0.14-0.16:计算、通信与显存协同
模型和数据能够分布到 GPU 后,训练效率还取决于通信等待、显存占用和执行开销。0.14–0.16 分别从通信重叠、专家交换、内存卸载和执行调度等方面改善整个训练 Step。
0.14:ModelCommProcessGroup 与 HyperCommGrid
当 Attention、MoE、PP 和 CP 都要建立进程组时,复杂的不仅是通信量,还包括每种模块应该由哪些 Rank 共同通信。0.14 在这一方向集成 ModelCommProcessGroup,并引入 N 维通信网格 HyperCommGrid,使进程组能够基于具名的并行维度创建和管理。它是通信组织层的抽象,并不自动让一次 All-to-All 更快。[7]
HyperCommGrid 的通信组仍需显式创建;不同维度上的组并不是任意取并集就能安全使用。HyperCommGrid API0.14:专家并行通信与计算重叠
MoE 的 Token 在专家之间交换时,如果相关计算只能等待通信完成,All-to-All 就可能暴露在训练关键路径上。0.14 增加 Expert Parallel A2A Overlap,尝试让满足依赖条件的计算与通信并行推进。[7]
Dispatch
Combine
Dispatch
Wgrad
Expert GEMM
Expert GEMM
这一重叠需要训练调度器提供合法的计算窗口,并受到 Full Recompute、CUDA Graph 和 PP/VPP 配置约束。时间轴说明数据依赖,不对应固定的逐 Kernel 执行顺序。
0.15:HybridEP 扩展专家交换路径
MoE 通信效率与专家数量、Token 分布以及节点内外网络有关。0.15 为 Flex Dispatcher 增加 HybridEP 后端,提供另一种组织专家 Token 交换的实现。它与前面的 A2A Overlap 分别关注交换路径和执行时序。[8]
Flex Dispatcher 支持不同后端。HybridEP 的官方定位包括 TMA、IBGDA、降低通信占用 SM 以及 MNNVL 支持;DeepEP 也服务于高效 Token Dispatch/Combine。选型需要核查硬件、依赖库、拓扑、CUDA Graph 和 Token 规模,而不是在名称上判断谁更快。
重要区别不在“单机 vs 多机”,而在后端的通信内核、重排融合、SM 使用、硬件特性与网络拓扑。HybridEP 以 TMA、IBGDA 和 NVLink 域支持为代表;不是所有设备或软件栈都能使用。
0.15:将部分 Activation 卸载到 CPU
长序列和大模型训练需要保存反向传播所需的激活,显存不足时会限制模型或批次规模。0.15 增加通过 Transformer Engine 进行 CPU Activation Offload 的能力:将选定激活移到 CPU,在需要时再传回 GPU,以额外传输换取显存空间。[8]
GPU 显存成为硬约束;有足够计算窗口预取,D2H/H2D 没有拖慢关键路径。
PCIe 带宽不足、CPU pinned memory 竞争、反向开始时激活尚未回传,造成硬等待。
一个粗略例子:卸载并回传 4 GiB 激活,假定单向有效带宽 24 GiB/s,理想的两个方向传输总时长已经约 0.33s;若能被计算重叠隐藏则暴露时间更少,若拷贝并发或带宽打折则更久。
0.16:Optimizer State Offloading
历史边界:0.14 已出现面向 DeepSeek-V3 FP8 场景的 Optimizer Offloading;0.16 Release 进一步列出 Optimizer State Offloading。这里讨论的是能力扩展,不是 0.16 才首次想到把优化器状态放到 CPU。
Activation Offload 面向反向传播需要保存的中间结果;Optimizer State Offloading 则把优化器状态及 Master Weights 移向 CPU 内存。这些状态通常会跨整个训练 Step 持续存在,因此降低的是另一类常驻显存压力。0.16 官方发布说明明确列出这项支持。[9]
Activation Offload 主要影响前向保存与反向取回的临时激活;Optimizer State Offload 影响 Optimizer Step 的状态访问,通常在参数更新阶段对主机带宽、PCIe/NVLink 和 CPU 侧内存提出不同要求。
0.16:细粒度卸载与部分 CUDA Graph
显存与执行开销常常同时出现。0.16 发布说明列出细粒度 Activation Offloading,以及用于 EP Overlap 的 Partial CUDA Graph:前者针对部分激活管理内存,后者在选定范围使用 Graph,以减少相应 CPU 调度压力。两者各有适用条件,不能简单视为同一优化。[9]
0.16:MTP 独立 Pipeline Stage
前一阶段的 MTP 增加了额外预测计算,可能使末端 Pipeline Stage 承担更多工作。0.16 增加将 MTP 层放入独立 Pipeline Stage 的支持,为调整虚拟 Pipeline 负载提供另一种方式。[9]
此时 MTP 的演进就更清楚了:0.12 先引入训练目标,0.13 的自定义布局尚不能与它自由组合,到 0.16 才进一步提供独立 Stage 的组织能力。这里应按具体版本确认 PP/VPP、Checkpoint 和重计算的兼容范围,不应把“独立 Stage”理解为自动消除尾端负载。
通信组、A2A Overlap 和 Offload 主要优化同一训练流程内的资源使用。视觉编码器与语言模型等模块采用不同 TP/DP 布局时,还需要额外解决跨模块的数据重分布、调度和梯度回传。
0.17-0.18:多模块异构执行
复杂模型可能同时包含视觉编码器、语言模型和不同类型的计算层。这些模块对并行布局、通信和训练状态的要求不同,需要协调模块之间的数据和执行。
0.17:MIMO 多模块异构并行
不同模块可能适合不同的 TP、DP 等配置。0.17 的 MIMO 支持多模块异构并行,并包含多模块 1F1B、优化器和分布式 Checkpoint 等相关能力。[10]
考虑一个 Tensor X[B=4,S=2,H=8],其中 x0~x3 各是一条样本,先只看每条样本某个 S 位置的隐藏维切片。Vision 采用 TP2×DP4,每个 DP 组负责 1 条样本;LLM 采用 TP4×DP2,每个 DP 组负责 2 条样本。两种布局使用同一批 8 个 Rank,且每 Rank 理想数据元素数量保持相同。
| Rank | Vision 本地 (每个 S 位置) | Bridge 后 LLM 本地 |
|---|---|---|
| R0 | x0 · h[0:4] | x0,x1 · h[0:2] |
| R1 | x0 · h[4:8] | x0,x1 · h[2:4] |
| R2 | x1 · h[0:4] | x0,x1 · h[4:6] |
| R3 | x1 · h[4:8] | x0,x1 · h[6:8] |
| R4 | x2 · h[0:4] | x2,x3 · h[0:2] |
| R5 | x2 · h[4:8] | x2,x3 · h[2:4] |
| R6 | x3 · h[0:4] | x2,x3 · h[4:6] |
| R7 | x3 · h[4:8] | x2,x3 · h[6:8] |
例如 R0 原来只持有 x0 的 h[0:4],后面需要同时持有 x0、x1 的 h[0:2];它既需把 x0 的 h[2:4] 交给其它 Rank,也需收取 x1 的 h[0:2]。对 R0~R3 来说,这相当于同一物理 Rank 集合内的一次重分布;R4~R7 类似。
反向传播必须执行这一线性重分布算子的伴随操作:把 LLM 侧的梯度切片回传/汇总到 Vision 对应的 x_i、h 区间。仅检查前向输出 Shape 正确,无法证明梯度语义正确。
关键设计区别:布局转换不等于模型投影。Vision 到 LLM 可能先有 learned projector,改变语义/维度;Bridge 负责在分布式布局间移动同一个逻辑 Tensor。若将两者混为一谈,就无法准确计算通信量或追踪梯度。
0.17:多模块流水线调度
当一个模型包含多个子模块时,不仅要决定每个模块放在哪里,还要协调不同模块的前向、反向与跨模块通信。0.17 发布说明列出多模块 1F1B 流水线相关支持。[10]
0.18:异构 TP/DP 的 MIMO Core Primitive 与 Colocated Bridge
0.17 建立了多模块异构并行的基础,0.18 进一步补齐异构 TP/DP 核心原语和共置模块间的 Bridge Communication。关键不在于“两个模块都能训练”,而在于从一个模块交出的逻辑 Tensor,能够在下一模块的 Rank 网格里保持相同语义,并且梯度能逆向回到正确的上游分片。0.19 继续把非共置执行、Encoder Prefetch 和 DDP Overlap 扩展进来,因此这一能力并非 0.18 就覆盖了所有部署形态。0.19 Release
逐版本阅读 0.17/0.18 的 pipeline_parallel/schedules.py,观察多模块调度入口与通信边界。
对照 0.18 MIMO Core Primitive PR #1375/#4368 与 0.19 非共置端到端 PR #5602,跟踪 Bridge 行为。
0.18:GDN 支持 Packed Sequence
不同长度的样本可以通过 Packed Sequence 组织,以减少填充;但新型计算层必须理解序列边界并正确处理自身状态。0.18 增加 Gated Delta Network(GDN)的 Packed Sequence 支持。[11]
0.18:GDN 的 Context Parallel 扩展
Packed Sequence 解决的是同一批次中如何组织不同长度的样本;Context Parallel(CP) 解决的是同一条长序列如何跨设备分布。对于 Attention,跨片依赖可以从 Q/K/V 的可见范围理解;对于 GDN 这类带状态递推的层,序列分片还必须保证状态依赖的正确性,因此不能直接套用 Attention 的通信逻辑。0.18 的代码变更中包含 GDN CP 实现。[11]
固定样本和权重,比较未 Packed 与 Packed 的有效 Token 输出及梯度;再比较 CP1 与 CP2 的分片结果,重点检查样本边界、跨片状态、Loss Mask 与梯度归约。不能仅用“训练能跑通”来确认状态依赖正确。
对带递推状态的层,可以抽象成 state[t+1] = F(state[t], x[t])。如果每个 CP 分片都从同一零状态独立启动,第二段往往就丢失第一段累积的信息;反向也必须处理跨段状态相关的梯度。Packed Sequence 则是反方向的约束:不同样本的状态不能错误串起来。
0.18:HybridEP 融合重排与通信
MoE Token 交换除了网络通信,还涉及数据排列。0.18 在 HybridEP 中融合 Permute / Unpermute 与 Dispatch / Combine,以减少相关步骤的额外开销。[11]
不同模块能够在各自的并行网格中运行,Bridge 连接它们的数据流;GDN 等新层也扩展到 Packed Sequence 和 CP。模型层类型和并行布局不断增加后,层的组织方式与 Checkpoint 状态映射开始成为新的系统约束。
0.19-0.20:模型表示与状态管理
模型结构和并行布局继续变得多样,训练系统需要更灵活地描述层、组织专家负载,并管理权重和训练状态。
0.19:HybridModel 以独立层组合模型
0.19 发布新一代 HybridModel,并支持直接加载 GPTModel Checkpoint。它以独立层组织 Attention、MLP 等模型组件;早期已有 Mamba Hybrid,这里的变化是模型表示方式的进一步演进。[12][15]
HybridModel 的改变不只是将一个 GPT Block 拆成两个符号。它允许将不同层家族直接排成序列,并让 Layer Index、Pipeline 边界和权重映射统一围绕该层序列描述。例如 M、G、*、D、-、E 分别表示 Mamba-2、GDN、普通 Attention、DeepSeek Sparse Attention、Dense MLP、MoE。
*-*-Attention 与 MLP 各占一个 Hybrid 层位置。0.19 还继续增强 DeepSeek Sparse Attention(DSA) 的 CP、THD 与融合计算路径。它与 MLA、GDN 一样说明:训练框架不仅需要“知道存在某层”,还必须把该层的计算、长序列表示、PP 以及 Checkpoint 一起接入。[12]
0.20 Release 将其列入下一代 HybridModel 支持范围;复杂层组合成为真实模型交付要求。
改变残差连接和流数,需同时考虑 PP/VPP 的 Tensor 宽度、Checkpoint 与重计算。
引入新的层家族,不能假设所有序列层等价于 Attention。
Wide Residual Streams 在 0.20 Release 的条件为 PP=1 且禁用 CUDA Graph;不能把 mHC 的 PP 能力直接套给它。
GPTModel 转换到 HybridModel 后,原先同一个 Block 中的 Attention 与 MLP 分属不同层号。Checkpoint 加载时不仅要映射权重 Key,还涉及 Pipeline 划分和优化器状态;仅能完成前向计算,并不能证明旧 Checkpoint 可完整恢复。
0.19:Quantile Balancing 调整专家负载
MoE 中平均 Token 数相同,也可能因个别专家过载而拖慢执行。0.19 增加 Quantile Balancing Router,以负载分位数估计调整专家偏置,试图改善路由负载分布。[12]
假设 4 个 Expert 接收的 Token 数为 [100,100,100,300],平均是 150,但最慢 Expert 的工作量近似由 300 决定。此时只报告均值会掩盖尾部负载。
从专家负载分布估计分位数,对不同专家计算调节信号。
更新逐专家 routing bias,影响后续 Token 的专家选择概率/排序。
对比 max/mean tokens per expert、p95/p99 负载、最慢 Rank GEMM、Step Time。
Bias 更新速率过大可能造成负载振荡;负载均衡还应监测任务 loss/路由分布。
0.19:Packed-sequence MoE Dispatch
此前 DeepEP/HybridEP 解决的是专家之间的 Token 交换,但变长训练的数据可能是 Packed Sequence 的 THD 表示。0.19 扩展这两个后端,使 Dispatcher 在进行专家路由与回收时能够处理带序列边界的打包输入。其价值不只是减少 Padding,而是让变长数据布局与高性能 EP 通信路径可以一起使用。[12]
0.20:GTP 按需物化权重
Generalized Tensor Parallelism(GTP)通过额外的权重分片与按需物化,在显存和通信之间进行权衡。0.20 的发布说明进一步列出 GTP 的配置和模型支持;官方文档将该设计标为实验性。[13][14]
先持有 1/(TP×GTP_remat) 的常驻权重;执行 GEMM(Wᵢ) 前,在 GTP_remat 组重建当前所需的 TP 切片,而不是重建完整未切分权重。理想情况下 AG(Wᵢ₊₁) 与 GEMM(Wᵢ) 并行。反向则需要相应的权重物化与梯度 Reduce-Scatter。
0.20:Megatron-FSDP v2 管理分片状态
训练状态包括参数、梯度与优化器状态。0.20 增加实验性的 Megatron-FSDP v2 适配器和 Hybrid Sharding 支持,可针对互联域以及 Dense / MoE 部分配置不同的分片策略。[13]
| 比较维度 | GTP_remat | Megatron-FSDP v2 |
|---|---|---|
| 关键分片域 | TP 权重的额外模型并行轴 | DP / Hybrid DP 的训练状态轴 |
| 临时物化 | 单权重 TP 切片 | 按 FSDP 策略使用的参数 |
| 主要验证 | 权重预取、AG/RS 暴露与 Loss 对齐 | 生命周期、参数同步、Checkpoint 兼容 |
相对于 TP 正交的权重子轴:每个 TP 切片继续分片,GEMM 前只还原该 TP 切片。
以数据并行分片参数、梯度、优化器,并区分 DP-Inner / DP-Outer(如机内与机间)两种通信域。
GTP 的 AG/RS 主要随权重使用时机发生;FSDP 可在参数生命周期和更新时机上调整多级通信。
实验性 Megatron-FSDP v2 适配器要求 TP=1 且 Expert TP=1;优化器 Checkpoint 暂不支持 EP 布局。
如果计算已经被 TP 切得很细,GTP 的额外权重 AG 可能难以隐藏;如果网络存在跨机高延迟,Hybrid-FSDP 的分级通信策略也并非零开销。比较时应固定 GPU 数、TP/DP 语义、有效 Batch 与模型状态,避免因为改变并行布局而偷换实验条件。
0.20:DeepEP v2、Fused GDN 与 MTP-only Training
0.20 中,MoE 的 Flex Dispatcher 增加了实验性的 DeepEP v2 后端,GDN 的部分前处理与核心计算得到融合实现;MTP 支持冻结主模型、单独训练预测头。GTP 也扩展到 Batch/Sequence Partitioning、部分投影层切分和 MTP 组合。这些功能继续扩展既有执行路径,适用范围仍由具体后端与并行配置决定。
0.20:训练观测与 Checkpoint
模型和并行组合增多后,除了能够执行,还需要定位慢在哪里、训练中断后能否恢复。0.20 引入可选的 OpenTelemetry 训练观测,并在已有 Distributed Checkpoint 基础上继续完善模型和分片状态管理。Checkpoint 本身并不是这一版本首次支持的能力。[13]
分布式 Checkpoint 的重要性,不只是“保存成功”,而是能否正确恢复同一次训练:加载后的模型权重、优化器、随机数状态和数据进度都可能影响后续 Loss。对于混合层、GTP 或 FSDP v2 这些复杂布局,应分别验证同布局恢复与跨布局 Reshard,并区分权重可加载和 Bitwise Determinism 两个不同目标。
HybridModel 将模型组件组织为独立层,Quantile Balancing 调节专家路由,GTP 与 Megatron-FSDP v2 则从不同分片域管理训练状态。它们分别改变模型表示、负载分配和参数生命周期,而不是一组具有共同加速倍数的优化开关。
回看 0.8–0.20:模型、并行与训练状态
0.8 已经能够训练 MoE、Mamba Hybrid 和初步的多模态模型。后续变化并不是从 Dense 训练突然跨入混合模型,而是在既有分布式并行基础上,逐步适配不同模块的计算路径、并行域与数据表示。0.10 的 MoE Parallel Folding 是一个具体例子:Attention 与 Experts 可以使用不同的逻辑通信组,而不必共享完全一致的并行切分。[1][3]
模型结构逐渐复杂后,训练效率开始更多地受到数据搬运和执行顺序影响。DeepEP 处理专家间的 Token 往返,自定义 Pipeline Layout 调整层的放置;随后 A2A Overlap、HybridEP、Offload 和通信组抽象进一步改变通信、计算与显存的组织方式。它们都可能优化训练 Step 的一部分,但瓶颈不同,收益也取决于模型、负载与硬件拓扑。[5][7][8]
0.17–0.18 的 MIMO 将这种差异扩展到多个模块之间:Vision Encoder 和语言模型可以采用不同的并行布局,再通过 Bridge 交换数据与梯度。0.19 的 HybridModel 进一步调整层的表示形式,0.20 的 GTP 与 Megatron-FSDP v2 则从不同分片域管理权重和训练状态。其共同难点不再只是把模型切到更多设备上,而是让层、进程组、调度和参数生命周期在同一次训练中保持一致。[10][12][13]
参考资料
Mamba-2、LLaVA 与 MoE + CP。
非均匀 Pipeline 与多模态支持。
MLA、MoE Parallel Folding 与 NVLM,展示模型组件与并行域的差异化扩展。
DeepSeek-V3 微调与专家路由。
DeepEP、MTP 与 MoE CUDA Graph。
自定义 Pipeline Layout 与版本限制。
ModelCommProcessGroup、HyperCommGrid 与 Expert Parallel A2A Overlap。
HybridEP 与 CPU Activation Offload。
Optimizer State Offloading、细粒度 Activation Offload、Partial CUDA Graph 与独立 MTP Stage。
MIMO 异构并行与多模块流水线。
GDN Packed Sequence、GDN CP 代码支持与 HybridEP 融合。
HybridModel、Quantile Balancing、THD Packed-sequence MoE Dispatch 与 DSA。
GTP、Megatron-FSDP v2 与训练观测。
GTP 的 TP × GTP_remat 分片、逐权重预取/物化与 FSDP 差异。
层表示和 Checkpoint 迁移。
Attention 与 MoE 的并行映射。
布局语法、虚拟 Stage 和初期实验性接口。
N 维进程组的具名维度与显式创建方式。此链接是现行 API,历史版本以 0.14 Release 为准。
0.18 合入记录中的 GDN CP 实现。
跨微批次重叠、延后 Wgrad 和相关开关。
原始来源 · 逐深度目标、共享 Embedding / Output Head 与 MTP Loss;版本级兼容说明。
原始来源 · Dispatcher 后端差异、A2A Overlap 的依赖与性能调优。
原始来源 · Packed EP Dispatch、Quantile Balancing、MIMO 非共置执行。
原始来源 · GTP、FSDP v2、Fused GDN、DeepEP v2、MTP-only 的版本锚点。