一、版本概览
DeepSpeed 发布了v0.19.2补丁版本。从此次更新内容来看,这并不是一次简单的小修小补,而是一次围绕训练稳定性、ZeRO能力增强、DeepCompile修复、测试与CI完善、混合精度改进以及新加速器支持展开的集中更新。
从版本页面给出的信息看,本次版本有以下几个明显特征:
- 一共包含27 次提交
- 涉及114 个文件变更
- 有17 位贡献者参与
- 更新时间线从5月27日持续到6月17日
- 更新内容覆盖:
- FP16 优化器
- ZeRO 0/1/2/3
- DeepCompile
- ZenFlow
- AutoSP
- AutoEP
- Transformer 内核
- 混合精度策略
- CI 与测试体系
- 新硬件加速器支持
如果只用一句话概括 DeepSpeed v0.19.2,那就是:
这是一个以稳定性修复为基础、以训练引擎能力增强为核心、同时补上自动并行与硬件适配能力的重要补丁版本。
二、这次更新到底改了什么?
按照版本说明,本次 DeepSpeed v0.19.2 的变更如下。为了便于理解,可以将它们分成几个板块来看。
三、FP16与梯度处理相关修复
1. FP16优化器 flat buffer 初始化时过滤 requires_grad
更新内容中提到:
- 修复 FP16 优化器 flat buffer 初始化时需要过滤
requires_grad
这说明在 FP16 优化器初始化扁平缓冲区时,现在会更严格地区分哪些参数真正参与梯度计算。
这一修复的直接意义在于:
- 避免不需要梯度的参数被错误纳入 flat buffer 初始化流程
- 减少不必要的状态构建
- 降低潜在的参数管理错误
- 让 FP16 优化器初始化逻辑更加严谨
对于使用混合精度训练并依赖 DeepSpeed 优化器管理大规模参数的场景,这一修复非常关键,因为 flat buffer 是参数和优化状态管理中的核心环节,一旦纳入了不该参与梯度的参数,后续训练链路就可能受到影响。
2. 保持一致的 FP32 grads 流转
版本更新中还提到:
- 保持一致的 fp32 grads flow
这个改动聚焦于 FP32 梯度流的统一性和一致性。
从字面上看,它意味着 DeepSpeed 在梯度从产生到归约、再到后续优化处理的链路中,对 FP32 梯度的流转方式进行了统一。
这个修复的重要性在于:
- 降低不同模块之间梯度类型不一致带来的问题
- 提高混合精度训练时梯度处理的稳定性
- 为后续 ZeRO、DeepCompile、混合精度策略配合打下更一致的基础
3. ZeRO-3 DeepCompile 在归约前规范化梯度 dtype
更新中还有一项非常具体的修复:
- 在 ZeRO-3 DeepCompile 中,梯度在 reduction 前进行 dtype 规范化
这说明在 DeepCompile 与 ZeRO-3 组合使用时,梯度类型在归约之前会先被统一。
这样做的价值非常直接:
- 避免由于 dtype 不一致导致的归约异常
- 减少不同训练路径之间的行为差异
- 强化 ZeRO-3 与编译优化路径之间的兼容性
对于大规模训练来说,梯度归约链路非常敏感,一旦 dtype 管理不一致,就可能出现精度问题、运行错误甚至性能波动。因此,这一修复虽然看起来“底层”,但实际价值很高。
四、ZeRO能力大幅增强:不仅修,还在扩
本次 DeepSpeed v0.19.2 中,ZeRO 相关内容非常多,而且不仅是 bug fix,还有实打实的功能增强。
1. 新增engine.coalesce_grad_reduction(),面向 ZeRO 1/2/3 的 multi-backward
版本说明明确给出:
- 为 ZeRO 1/2/3 multi-backward 新增
engine.coalesce_grad_reduction()
这是本次最值得关注的功能增强之一。
它说明 DeepSpeed 在 ZeRO 1、ZeRO 2、ZeRO 3 这几个阶段中,针对多次反向传播场景,引入了新的梯度归约能力接口。
从名字上可以看出,这一能力强调的是:
- 梯度归约的合并
- 针对 multi-backward 的处理
- 统一适配 ZeRO 1/2/3
这意味着在复杂训练图、需要多次 backward 的任务中,DeepSpeed 的梯度处理能力进一步完善,使用 ZeRO 时也拥有了更明确的接口支持。
2. ZeRO 0/1/2 支持在 engine 上启用 torch.func transforms
版本中还有一项功能增强:
- 为 ZeRO 0/1/2 启用 engine 上的
torch.functransforms
这个更新很重要,因为它表明 DeepSpeed 的 engine 能够在 ZeRO 0、1、2 场景下,更好地兼容torch.func相关变换能力。
其意义在于:
- 扩展 DeepSpeed engine 与 PyTorch 新函数式变换能力的配合范围
- 提升 ZeRO 0/1/2 下的可用性
- 为更灵活的训练逻辑和函数式编程方式提供支持
这不是简单的兼容性描述,而是对训练引擎能力边界的一次实际拓展。
3. ZeRO-3:hook 重新注册时使 coordinator trace 失效
更新中提到:
- ZeRO-3 在 hook 重新注册时,使 coordinator trace 失效
这类问题通常出现在复杂生命周期管理里。
当 hook 被重新注册后,旧的 trace 可能已经不再准确,如果继续复用,就可能造成错误行为。现在 DeepSpeed 明确在这种情况下让 coordinator trace 失效,从而避免沿用过期状态。
这个修复体现了 ZeRO-3 在运行时状态管理上的进一步严谨化。
4. 修复 ZeRO-3 release parameter lifetime
版本中专门修复了:
- DeepCompile 场景下 ZeRO-3 release parameter lifetime
这个描述指向参数释放生命周期管理问题。
当参数在 ZeRO-3 与 DeepCompile 联动下被释放时,如果生命周期管理不正确,就可能出现参数过早释放、过晚释放或状态不一致等问题。
v0.19.2 对此进行了修复,意味着 ZeRO-3 在 DeepCompile 路径下的参数管理更稳定。
5. 修复 ZeRO-1 grad target lifetime
同样,版本中还修复了:
- DeepCompile 场景下 ZeRO-1 grad target lifetime
这说明不仅是 ZeRO-3,ZeRO-1 在与 DeepCompile 配合时,梯度目标对象的生命周期也存在需要修正的地方。
现在这个问题被纳入修复,表明 DeepSpeed 对不同 ZeRO 阶段与 DeepCompile 的协同稳定性都进行了补齐。
6. 在 ZeRO-3 release test 中传入预期 grad dtype
更新中还有:
- 在 ZeRO-3 release 测试里,为
register_z3_param传入预期 grad dtype
这是一项测试层面的修正,但它非常重要。
测试不只是“能不能跑”,更要验证行为是否符合预期。这里将预期梯度类型明确传入测试流程,说明 DeepSpeed 对 ZeRO-3 参数注册与梯度类型的预期关系做了更严格的校验。
这能帮助后续版本更早发现与 grad dtype 相关的问题。
五、DeepCompile是这次版本修复密度最高的模块之一
从更新列表可以看出,DeepCompile 是此次 v0.19.2 中修复最密集的模块之一,涉及多个细节问题。
1. 修复 DeepCompile all-gather scheduler candidate selection
版本更新中提到:
- 修复 DeepCompile all-gather scheduler 的候选选择问题
这说明在 all-gather 调度器的候选项选择逻辑上,之前存在缺陷,现在已修复。
all-gather 调度本身就是分布式训练中的关键路径,这一问题若处理不当,可能影响:
- 调度行为正确性
- 参数聚合路径稳定性
- 编译优化后的执行效果
因此,这项修复虽然表述简短,但对 DeepCompile 的实际可用性很重要。
2. 修复 ZeRO-3 release parameter lifetime
这项修复已经在前文提到,但它同时也是 DeepCompile 的关键问题之一。
它说明 DeepCompile 与 ZeRO-3 联动时,参数释放生命周期管理是本次重点修补对象。
3. 修复 ZeRO-1 grad target lifetime
同样,这也是 DeepCompile 稳定性修复的一部分。
这意味着 DeepCompile 不是单独一条链路,而是在不同 ZeRO 模式下都进行了细节补强。
4. 归约前规范化 ZeRO-3 DeepCompile grad dtype
这项修复也属于 DeepCompile 关键稳定性改进。
DeepCompile 在高性能路径上往往对类型、生命周期和调度都非常敏感,而这次 v0.19.2 基本把这几块都覆盖到了。
综合来看,DeepSpeed v0.19.2 对 DeepCompile 的修正方向非常明确:
- 调度选择更正确
- 参数生命周期更稳定
- 梯度目标生命周期更清晰
- 梯度 dtype 在 reduction 前更规范
这几项组合在一起,代表 DeepCompile 可用性和稳定性显著加强。
六、ZenFlow相关修复也值得关注
ZenFlow 在本次版本中出现了两项修复,且都比较关键。
1. 修复 ZenFlow ZeRO-3 selective optimizer 在 parameter offload 到 NVMe 时的崩溃问题
版本说明中写到:
- 修复 ZenFlow ZeRO-3 selective optimizer 在 parameter offload 到 NVMe 时的 crash
这说明在 ZeRO-3、ZenFlow、selective optimizer、parameter offload、NVMe 这几个机制叠加的场景下,之前可能发生崩溃问题。
而这种组合往往出现在更复杂、更接近真实大模型训练环境的部署场景中。
这个修复的价值在于:
- 提高 NVMe offload 场景稳定性
- 降低 selective optimizer 组合使用风险
- 改善 ZenFlow 与 ZeRO-3 协同时的可靠性
2. 修复 ZenFlow Adam 对更新后 PyTorch backward 流程的集成
版本中还提到:
- 修复 ZenFlow Adam 对更新后 PyTorch backward flow 的集成问题
这说明由于 PyTorch backward 流程发生了变化,ZenFlow Adam 集成层需要适配,v0.19.2 已经完成修复。
其意义很直接:
- 避免因上游 backward 流程变化导致集成失效
- 提高 ZenFlow Adam 与当前训练链路的兼容性
- 降低用户在升级环境后遇到问题的概率
七、AutoSP与AutoEP:自动并行能力继续扩展
这次更新里,AutoSP 和 AutoEP 都有动作。
1. AutoSP 编译测试改为顺序执行
更新内容中提到:
- AutoSP compile tests sequentially
这意味着 AutoSP 编译测试现在按顺序执行,而不是并行执行。
这一改动一般是为了提高测试稳定性、降低资源冲突、避免测试互相影响。
2. 移除 AutoSP 对 Transformers 版本的断言
版本中还提到:
- 移除 AutoSP 对 Transformers 版本的断言
这个改动释放出一个明显信号:
AutoSP 在版本兼容性约束上变得更灵活,不再通过硬性断言限制 Transformers 版本。
这可能带来的直接变化包括:
- 减少因版本断言导致的阻塞
- 提高用户环境适配空间
- 让 AutoSP 在更多安装组合下更容易运行
3. 新增 AutoEP
本次版本中还有一个非常醒目的新增项:
- 新增 AutoEP
虽然版本说明中没有展开更多细节,但“新增”本身已经说明这不是修复,而是功能扩展。
在整个更新列表中,AutoEP 是少数明确属于新增能力的内容之一,代表 DeepSpeed 的自动化并行能力版图进一步扩大。
八、混合精度与参数/缓冲区类型策略升级
混合精度相关改动是本次版本另一条主线。
1. mixed-precision:按策略对参数和缓冲区进行 dtype cast,同时保留 fp32 buffers
版本说明中写到:
- 混合精度支持按策略对参数和缓冲区进行 dtype cast,同时保留 fp32 buffers
这是一项非常关键的能力改进。
它说明 DeepSpeed 对 mixed-precision 的处理不再只是简单统一转换,而是:
- 按策略分别处理参数和缓冲区
- 对某些缓冲区保留 FP32 精度
这种做法的意义在于:
- 让混合精度策略更加细粒度
- 在性能与数值稳定性之间更灵活地平衡
- 避免某些关键缓冲区因过度降精度而影响行为
对于依赖复杂模块、对 buffer 精度敏感的训练场景,这种按策略保留 FP32 buffers 的能力非常实用。
2. 一致的 FP32 grads flow
前面提到的 FP32 梯度流统一,也与混合精度体系形成呼应。
从整体上看,v0.19.2 在混合精度方向上做的不只是“能跑”,而是:
- 让参数和 buffer 的 dtype 策略更清晰
- 让梯度类型流转更一致
- 让 reduction 前的 dtype 处理更规范
这说明 DeepSpeed 在数值链路管理上又向前推进了一步。
九、Transformer与模块注入路径也有改进
除了分布式和训练引擎层面的修复,本次版本对底层实现细节也做了优化。
1. 简化module_inject.transpose
更新中提到:
- 简化
module_inject.transpose
虽然这项改动描述很简短,但“简化”通常意味着代码路径更清晰、维护成本更低,也可能减少不必要的复杂分支。
对于模块注入链路来说,越简洁越有利于稳定性与后续维护。
2. 修复 Transformer 中 Transpose_Kernel 的共享内存索引 stride,消除 bank conflicts
这是一个很有含金量的底层修复:
- 在 Transformer 相关实现中,使用正确的 stride 进行
Transpose_Kernel共享内存索引,从而消除 bank conflicts
这说明之前该内核在共享内存访问方式上存在 stride 问题,现在通过修正索引方式消除了 bank conflict。
这一点非常重要,因为 bank conflict 会直接影响内核执行效率和访问行为。
这项修复体现出 DeepSpeed v0.19.2 并不仅仅是在做框架层 bug 修补,也在深入到底层 kernel 实现细节进行优化。
十、CI、工作流与测试体系:这次更新“工程味”很浓
如果仔细看变更列表会发现,v0.19.2 有相当多的更新投向了 CI、工作流和测试体系。这说明该版本很重视工程稳定性和发布质量。
1. 修复 PR-target workflow 的 concurrency groups
更新内容包括:
- 修复 PR-target workflow 的 concurrency groups
这说明工作流并发分组逻辑存在问题,现在进行了修复。
它关系到 CI 执行过程中的并发控制与任务协调,是工程侧很重要的一环。
2. 修复 ZeRO chmod 和 NVMe quantization 测试的完整 CI 隔离
版本中提到:
- 修复 ZeRO chmod 和 NVMe quantization tests 的完整 CI 隔离
这个修复很关键,因为测试隔离不充分时,经常会出现彼此污染、环境残留、偶发失败等问题。
本次修复说明 DeepSpeed 对这类测试进行了更严格的隔离处理,提升测试结果可信度。
3. 对被忽略路径保持 required CI checks 可见
还有一项工程性很强的更新:
- 对 ignored paths 保持 required CI checks visible
这意味着即使某些路径被忽略,所需的 CI 检查仍然保持可见。
这对工作流透明度和审核流程来说很重要,可以避免因为路径忽略而导致状态不明确。
4. 避免 CPU 单元测试 setup 访问 HF Hub
版本中还修复了:
- 在 CPU unit test setup 中避免访问 HF Hub
这一点非常务实。
测试初始化阶段访问外部服务,容易引入网络依赖、不稳定性和环境差异。
现在将其避免后,CPU 单元测试会更独立、更可复现。
5. 为 Muon 中muon_lr/adam_lr覆盖增加测试覆盖
更新列表还包括:
- 为 Muon 的
muon_lr/adam_lroverrides 增加测试覆盖
这说明本次不仅修问题,也在补测试,确保相关学习率覆盖逻辑有明确验证。
6. ZeRO-3 release 测试中传入预期 grad dtype
前面提到的这项变更,本质上也是测试体系增强的一部分。
它使测试能够更精确地验证梯度类型行为是否符合预期。
综合来看,v0.19.2 的测试和 CI 更新说明 DeepSpeed 团队这次非常重视“稳定发布”这件事,不只是修功能,还在修发布流程、测试隔离、依赖控制和可见性问题。
十一、版本号与发布流程相关修复
这次版本里还有几项直接关系到发版流程的变更:
- Bump version
- Version fix to unblock pypi
- Bump version after 0.19.1 release
这三项放在一起看,说明此次发版过程中,版本号管理与发布链路本身也是修复重点之一。
尤其是:
- 为了不阻塞 PyPI 的版本修复
- 在 0.19.1 发布后继续进行版本号调整
这反映出 v0.19.2 不只是代码层面更新,发布流程本身也经过了重新校正。
十二、新硬件支持:加入 Biren SUPA accelerator support
本次更新中还有一个明确的新能力:
- 新增 Biren SUPA accelerator support
这意味着 DeepSpeed v0.19.2 增加了对 Biren SUPA 加速器的支持。
对于硬件生态扩展来说,这是非常重要的一步。
这类更新通常意味着:
- DeepSpeed 的适配硬件范围继续扩大
- 更多训练环境具备接入条件
- 框架在异构加速器生态中的延展性进一步增强
值得注意的是,这里版本说明只明确给出了“增加支持”这一事实,因此文章也只基于这个事实进行解读,不展开额外内容。
十三、按时间线梳理本次更新,更能看出修复重点
为了更直观看出这次版本的推进节奏,可以按时间线做一次整理。
5月27日
- 修复 FP16 优化器 flat buffer 初始化时过滤
requires_grad - AutoSP 编译测试改为顺序执行
- 修复 PR-target workflow 的 concurrency groups
5月28日
- 修复 ZeRO chmod 和 NVMe quantization 测试的完整 CI 隔离
- 对被忽略路径保持 required CI checks 可见
- 版本号更新
- 新增
engine.coalesce_grad_reduction()以支持 ZeRO 1/2/3 的 multi-backward - 为 ZeRO 0/1/2 启用 engine 上的
torch.functransforms
5月29日
- 简化
module_inject.transpose
5月30日
- 修复 DeepCompile all-gather scheduler 候选选择问题
- 修复版本问题以解除 PyPI 阻塞
5月31日
- 在 0.19.1 发布后再次更新版本号
6月2日
- 修复 DeepCompile 场景下 ZeRO-3 release parameter lifetime
6月5日
- 修复 ZenFlow ZeRO-3 selective optimizer 在 parameter offload 到 NVMe 时的崩溃问题
6月6日
- 为 Muon 的
muon_lr/adam_lr覆盖增加测试覆盖
6月8日
- 避免 CPU 单元测试 setup 访问 HF Hub
6月10日
- 修复 DeepCompile 场景下 ZeRO-1 grad target lifetime
- 在 ZeRO-3 DeepCompile 中,reduction 前规范化 grad dtype
- 移除 AutoSP 对 Transformers 版本的断言
- 修复 Transformer 中
Transpose_Kernel共享内存索引 stride,消除 bank conflicts - ZeRO-3 在 hook 重新注册时使 coordinator trace 失效
6月11日
- 保持一致的 FP32 grads flow
6月12日
- 新增 AutoEP
- 修复 ZenFlow Adam 对更新后 PyTorch backward flow 的集成
6月14日
- 在 ZeRO-3 release 测试中,为
register_z3_param传入预期 grad dtype
6月16日
- 新增 Biren SUPA accelerator support
6月17日
- 混合精度支持按策略对参数和缓冲区进行 dtype cast,并保留 fp32 buffers
从这个时间线可以看出,这个版本并不是某一天集中完成,而是围绕多个主题持续推进,最后汇总成了 v0.19.2。
十四、这次版本最值得关注的五个核心看点
如果要从全部更新中提炼出最值得用户关注的点,我认为主要有以下五个方向:
1. ZeRO 能力不只是修复,而是继续增强
- 新增 multi-backward 相关的
engine.coalesce_grad_reduction() - 支持 ZeRO 0/1/2 上的
torch.functransforms - 修复 ZeRO-3 hook re-registration 的 trace 失效问题
- 补强 ZeRO-3 和 ZeRO-1 在 DeepCompile 路径中的生命周期问题
2. DeepCompile 成为重点修复对象
- 修 scheduler candidate selection
- 修 ZeRO-3 parameter lifetime
- 修 ZeRO-1 grad target lifetime
- 修 ZeRO-3 reduction 前 grad dtype
3. ZenFlow 与 PyTorch/NVMe 场景兼容性增强
- 修 ZeRO-3 selective optimizer + NVMe offload crash
- 修 ZenFlow Adam 对更新后 backward flow 的集成
4. 混合精度与梯度 dtype 管理更成熟
- per-policy 的 param/buffer dtype cast
- 保留 fp32 buffers
- consistent fp32 grads flow
- reduction 前 grad dtype normalize
5. 工程稳定性明显加强
- CI 并发分组修复
- 测试隔离修复
- ignored paths 下 required checks 保持可见
- CPU unit test 避免访问 HF Hub
- Muon 覆盖测试增强
- ZeRO-3 release test 更严格
十五、总结
代码地址:github.com/deepspeedai/DeepSpeed
DeepSpeed v0.19.2 虽然被定义为一个补丁版本,但从更新量和涉及范围来看,它的分量并不轻。
这次更新至少释放出几个非常明确的信号:
- DeepSpeed 正在持续强化 ZeRO 的复杂训练场景能力
- DeepCompile 的稳定性正在被快速补齐
- 混合精度、梯度类型、参数生命周期这些底层链路正在变得更严谨
- 自动并行能力继续扩展,AutoEP 已加入
- 工程质量、测试隔离和发版流程也被放到了重要位置
- 硬件生态继续延伸,新增 Biren SUPA 支持
如果你当前关注的是:
- ZeRO 多反向传播能力
- DeepCompile 稳定性
- ZenFlow 在新 backward 流程下的兼容性
- AutoSP/AutoEP 能力演进
- 混合精度下更细粒度的 dtype 策略
- 训练框架对新加速器的支持
那么 DeepSpeed v0.19.2 这次更新非常值得认真关注。
从版本说明给出的全部信息来看,这不是一个“只有零散修复”的小版本,而是一次围绕分布式训练核心链路进行集中打磨的补丁发布。
对于追求训练稳定性、兼容性以及引擎能力演进的用户来说,v0.19.2 的信息密度很高,含金量也很高。
十六、附:DeepSpeed v0.19.2全部更新清单整理版
为方便收藏和二次传播,下面给出不遗漏的完整清单:
- 修复 FP16 优化器 flat buffer 初始化时过滤
requires_grad - AutoSP 编译测试改为顺序执行
- 修复 PR-target workflow 的 concurrency groups
- 修复 ZeRO chmod 和 NVMe quantization 测试的完整 CI 隔离
- 对被忽略路径保持 required CI checks 可见
- 版本号更新
- 为 ZeRO 1/2/3 multi-backward 新增
engine.coalesce_grad_reduction() - 为 ZeRO 0/1/2 启用 engine 上的
torch.functransforms - 简化
module_inject.transpose - 修复 DeepCompile all-gather scheduler 候选选择问题
- 修复版本问题以解除 PyPI 阻塞
- 在 0.19.1 发布后再次更新版本号
- 修复 DeepCompile 场景下 ZeRO-3 release parameter lifetime
- 修复 ZenFlow ZeRO-3 selective optimizer 在 parameter offload 到 NVMe 时的崩溃问题
- 为 Muon 的
muon_lr/adam_lr覆盖增加测试覆盖 - 避免 CPU 单元测试 setup 访问 HF Hub
- 修复 DeepCompile 场景下 ZeRO-1 grad target lifetime
- 在 ZeRO-3 DeepCompile 中,reduction 前规范化 grad dtype
- 移除 AutoSP 对 Transformers 版本的断言
- 修复 Transformer 中
Transpose_Kernel共享内存索引 stride,消除 bank conflicts - ZeRO-3 在 hook 重新注册时使 coordinator trace 失效
- 保持一致的 FP32 grads flow
- 新增 AutoEP
- 修复 ZenFlow Adam 对更新后 PyTorch backward flow 的集成
- 在 ZeRO-3 release 测试中,为
register_z3_param传入预期 grad dtype - 新增 Biren SUPA accelerator support
- 混合精度支持按策略对参数和缓冲区进行 dtype cast,并保留 fp32 buffers