


DeepSpeed v0.19.5 已于 2026 年 8 月 18 日发布。本次版本更新没有围绕新增功能展开,而是集中处理版本维护、工作流、依赖兼容性、ZeRO 系列能力、梯度卸载、内存固定以及编译问题等内容。
从更新条目来看,v0.19.5 的重点非常明确:一方面完善发布与自动化流程,另一方面持续修复分布式训练、参数分片、梯度卸载、模型并行转换等场景中的稳定性问题。对于使用 ZeRO、ZeRO-Offload、ZeRO++、AutoEP 以及较新 Torch 版本的用户来说,这一版本中的修复具有直接意义。
一、版本发布后的版本信息同步
本次更新首先完成了上一版本发布后的 version.txt 更新。
版本文件虽然看起来是一个较小的维护项,但它承担着版本标识同步的重要作用。发布一个新版本后,仓库中的版本信息需要保持一致,避免源码版本、构建版本、发布版本以及后续开发状态之间出现不匹配。
在 v0.19.5 中,相关版本文件已在 v0.19.4 发布之后完成更新。这意味着当前代码库中的版本标识能够与新的发布节奏保持对应,也为后续构建、打包、安装和版本识别提供了明确基础。
对于依赖版本号进行环境确认、构建流程管理或问题定位的用户来说,版本信息一致性是基础环节。此次更新将这一基础维护工作纳入发布内容,确保版本状态更加清晰。
二、恢复自定义 DCO 工作流
v0.19.5 恢复了自定义 DCO 工作流。
DCO 工作流属于代码贡献流程中的一部分,用于配合项目的提交与贡献管理。此次恢复自定义 DCO 工作流,意味着相关流程重新回到项目原有的自定义实现方式。
从维护角度看,工作流并不直接改变模型训练逻辑,也不直接改变 ZeRO、卸载、通信或编译行为,但它关系到代码贡献过程中的规范执行与自动化检查。对于持续迭代的大型训练系统项目而言,贡献流程的稳定性同样重要。
DeepSpeed 的代码库包含多个涉及运行时、分布式训练、内存管理、模型并行和工具链兼容性的模块。恢复自定义 DCO 工作流,有助于让相关开发与提交流程保持连续,避免流程层面的变化影响项目维护节奏。
三、更新工作流中的 Actions 版本
本次版本还更新了工作流使用的 Actions 版本。
工作流中的 Actions 是自动化流程的重要组成部分,通常参与持续集成、检查、构建、验证等任务。随着 Actions 版本变化,项目中的自动化工作流也需要同步更新,以维持工作流配置与依赖版本的一致性。
这一项更新聚焦于工作流环境本身,而不是训练功能。它反映出 v0.19.5 不仅关注运行时问题,也同步处理工程化维护事项。
对于项目维护而言,自动化工作流中的依赖版本长期不更新,可能会造成工作流配置与执行环境之间的不一致。此次更新工作流中的 Actions 版本,使相关自动化流程能够继续使用更新后的版本配置。
结合前面的自定义 DCO 工作流恢复可以看到,v0.19.5 在工程流程层面进行了两项调整:
- 恢复自定义 DCO 工作流
- 更新工作流中的 Actions 版本
这两项内容共同覆盖了贡献流程与自动化工作流依赖两个方向。
四、避免单个 Op Builder 兼容性探测影响 DeepSpeed 导入
v0.19.5 修复了一个与 Op Builder 兼容性探测有关的问题:不再让某一个 Op Builder 的兼容性探测结果破坏 deepspeed 的导入过程。
DeepSpeed 中的 Op Builder 与扩展、算子构建及兼容性判断相关。在不同系统环境、不同编译配置、不同依赖组合下,某些算子的兼容性探测可能无法通过。
此前,如果单个 Op Builder 的兼容性探测出现问题,可能进一步影响 deepspeed 的整体导入。此次修复的核心是将单个兼容性探测的影响范围进行控制,避免其扩展为整个 DeepSpeed 包无法导入的问题。
这一调整尤其重要,因为导入是使用框架的起点。即使某一个可选组件、可选算子或兼容性探测无法满足条件,也不应让整个框架的导入过程被单点问题阻断。
本次修复后的逻辑重点可以概括为:
- 单个 Op Builder 的兼容性探测不再扩大为整体导入失败
deepspeed导入过程不再被一个探测问题直接破坏- 算子兼容性判断与框架整体可导入性之间的关系得到修正
这项修改并不是新增算子,也不是改变算子能力,而是修复导入阶段的异常影响范围。
五、修复 ZeRO++ 在小参数场景下的次级分片副本问题
本次更新修复了 ZeRO++ 在小参数场景下的次级分片副本问题。
ZeRO++ 涉及参数分片相关能力,而“次级分片副本”则对应其分片数据处理中的一个具体环节。此次问题的触发条件与小参数有关,即参数规模较小时,次级分片副本的处理存在需要修复的情况。
小参数并不意味着可以忽略。模型中通常可能同时包含较大参数和较小参数,分片策略需要对不同大小的参数都保持正确处理。尤其在参数分片、复制与存储管理过程中,小参数往往更容易暴露边界条件问题。
v0.19.5 对这一问题进行了修复,覆盖的重点是:
- ZeRO++ 的次级分片副本处理
- 小参数对应的处理路径
- 参数分片副本在特定规模下的正确性
此次变更没有描述新的 ZeRO++ 配置项,也没有引入新的参数分片机制。它处理的是已有 ZeRO++ 逻辑在小参数条件下的修复需求。
对于使用 ZeRO++ 的场景而言,这项更新意味着小参数参与次级分片副本处理时,相关逻辑获得了针对性修正。
六、修复 ZeRO-3 异步梯度卸载与固定卸载缓冲区问题
v0.19.5 中一项重要修复聚焦于 ZeRO-3:修复异步梯度卸载,并默认使用固定的卸载缓冲区。
这一项内容同时涉及三个关键词:
- ZeRO-3
- 异步梯度卸载
- 固定的卸载缓冲区
ZeRO-3 是 DeepSpeed 中的重要分片阶段之一。梯度卸载则与训练过程中的梯度数据处理相关。异步梯度卸载表示卸载过程采用异步方式进行,而卸载缓冲区则是这一过程中使用的数据缓冲区域。
本次更新明确指出,修复了 ZeRO-3 的异步梯度卸载问题,并将固定的卸载缓冲区设为默认行为。
“默认使用固定的卸载缓冲区”是此次条目中需要重点关注的部分。固定内存通常与主机侧内存固定相关,而这里的变更直接作用于卸载缓冲区的默认设置。也就是说,在相关 ZeRO-3 异步梯度卸载流程中,固定卸载缓冲区将成为默认选择。
这一修复覆盖的不是普通梯度计算本身,而是梯度卸载路径中的异步处理与缓冲区配置。其内容可以拆分理解为:
- 对 ZeRO-3 异步梯度卸载逻辑进行修复
- 对卸载缓冲区的使用方式进行调整
- 将固定的卸载缓冲区作为默认设置
- 让异步梯度卸载与默认缓冲区配置保持一致
需要注意的是,这一项更新的范围明确集中在 ZeRO-3 的异步梯度卸载路径中。更新内容没有描述新的训练策略,也没有描述新的卸载模式,而是对已有卸载能力进行修复与默认配置调整。
七、修复 AutoEP 的 ZeRO-1 与 ZeRO-2 通用转换
v0.19.5 修复了 AutoEP 在 ZeRO-1 和 ZeRO-2 下的通用转换问题。
AutoEP、ZeRO-1、ZeRO-2 与通用转换共同构成了这一更新条目的核心。此次修复覆盖的范围并非单独的 ZeRO-1,也不是单独的 ZeRO-2,而是 AutoEP 中面向这两个阶段的通用转换逻辑。
ZeRO-1 和 ZeRO-2 是不同的 ZeRO 阶段,对应不同的状态处理与分片方式。通用转换需要能够在相关场景中正确完成对应处理。此次更新针对 AutoEP 的 ZeRO-1 与 ZeRO-2 通用转换进行了修复,说明相关转换路径此前存在需要调整的地方。
该项修复可以归纳为以下几个层面:
- 修复 AutoEP 相关逻辑
- 覆盖 ZeRO-1 使用场景
- 覆盖 ZeRO-2 使用场景
- 聚焦通用转换过程
这里的重点不是增加新的 AutoEP 功能,而是确保现有 AutoEP 在 ZeRO-1 和 ZeRO-2 场景下的通用转换能够按照预期进行。
对于同时涉及 AutoEP 和 ZeRO-1、ZeRO-2 的用户来说,这项修复直接针对转换链路。由于转换本身连接不同处理状态,因此该类问题的修复对于保持相关流程正确性具有明确价值。
八、修复 Torch 2.12 及更高版本的编译错误
本次版本修复了 Torch 2.12 及更高版本中的编译错误。
随着 Torch 版本持续演进,编译环境、接口、构建行为或相关依赖关系可能发生变化。DeepSpeed 需要与新的 Torch 版本保持兼容,特别是在涉及编译的场景中,版本差异可能直接导致构建失败或编译报错。
v0.19.5 明确处理了 Torch 2.12 及更高版本中的编译错误。这意味着该版本针对新版本 Torch 环境下的编译问题进行了修复。
这项更新的范围十分明确:
- 针对 Torch 2.12
- 同时覆盖更高版本的 Torch
- 修复发生在编译阶段的问题
对于正在使用或计划使用 Torch 2.12 及以上版本的用户来说,这一修复是本次版本中非常直接的兼容性调整。它不涉及模型结构变化,不涉及 ZeRO 配置变化,也不涉及训练策略改动,而是围绕 DeepSpeed 与新版本 Torch 的编译兼容性展开。
从发布内容可以看出,DeepSpeed v0.19.5 对较新 Torch 版本的支持问题进行了及时处理,使编译相关流程获得修复。
九、将原生主机固定内存拆分为独立的 pin_memory 算子
v0.19.5 将原生主机固定内存能力拆分为独立的 pin_memory 算子。
这一项变更涉及“原生主机固定内存”以及独立的 pin_memory 算子。此前与原生主机固定内存相关的能力,现在被拆分为单独的操作。
从命名上看,pin_memory 直接对应固定内存操作。此次调整将其作为独立算子进行拆分,使这一能力在结构上更加明确。
这一更新的核心不是简单修改默认参数,而是对相关操作进行独立化处理:
- 原生主机固定内存不再仅作为其他逻辑中的一部分
- 固定内存相关能力被拆分出来
- 新的独立操作名称为
pin_memory pin_memory用于承载原生主机固定内存操作
这一改动与前文提到的“固定的卸载缓冲区默认启用”存在关联上的主题一致性,二者都涉及固定内存与卸载处理,但发布条目所描述的改动位置不同。
前者聚焦于 ZeRO-3 异步梯度卸载中的默认卸载缓冲区设置;后者则聚焦于原生主机固定内存能力的操作拆分。一个是具体卸载路径中的修复与默认配置,另一个是固定内存操作的结构化拆分。
因此,在理解 v0.19.5 时,这两项内容应分别看待:
- ZeRO-3 异步梯度卸载修复,并默认使用固定卸载缓冲区
- 原生主机固定内存能力拆分为独立
pin_memory算子
十、为非托管梯度累积增加 ZeRO Offload 支持
本次更新还为非托管梯度累积增加了 ZeRO Offload 支持。
这一项内容由三个部分组成:
- 非托管梯度累积
- ZeRO Offload
- 支持关系的增加
梯度累积是训练过程中的一个重要环节,而本次更新具体指向“非托管梯度累积”。此前,ZeRO Offload 在这一场景中的支持存在缺口;v0.19.5 则补充了这一支持。
需要注意的是,该条目描述的是支持范围扩展,而不是一般性修复。它明确表示:当使用非托管梯度累积时,ZeRO Offload 现在得到支持。
这一变更可以直接概括为:
- 非托管梯度累积场景获得 ZeRO Offload 支持
- ZeRO Offload 的适用范围扩展到该梯度累积路径
- 非托管梯度累积与 ZeRO Offload 之间的组合得到覆盖
结合本次版本中关于异步梯度卸载、固定卸载缓冲区以及 pin_memory 算子的更新可以看到,v0.19.5 在卸载与内存处理相关方向上包含多项内容。
这些内容分别对应不同层面:
- ZeRO-3 的异步梯度卸载修复
- 固定卸载缓冲区默认启用
- 原生主机固定内存拆分为
pin_memory算子 - 非托管梯度累积支持 ZeRO Offload
它们并非重复更新,而是分别作用于梯度卸载、缓冲区默认设置、主机固定内存操作以及梯度累积支持范围。
十一、v0.19.5 更新内容完整梳理
DeepSpeed v0.19.5 的更新内容可以完整归纳为以下十项:
-
在 v0.19.4 发布后更新
version.txt -
恢复自定义 DCO 工作流
-
更新工作流中的 Actions 版本
-
避免某一个 Op Builder 的兼容性探测导致
deepspeed导入失败 -
修复 ZeRO++ 在小参数情况下的次级分片副本问题
-
修复 ZeRO-3 异步梯度卸载,并默认使用固定的卸载缓冲区
-
修复 AutoEP 在 ZeRO-1 与 ZeRO-2 下的通用转换问题
-
修复 Torch 2.12 及更高版本的编译错误
-
将原生主机固定内存拆分为独立的
pin_memory算子 -
为非托管梯度累积增加 ZeRO Offload 支持
十二、总结
代码地址:github.com/deepspeedai/DeepSpeed
DeepSpeed v0.19.5 是一次以修复、兼容性与工程维护为主的版本更新。
在工程流程层面,本次版本更新了版本文件、恢复了自定义 DCO 工作流,并升级了工作流中的 Actions 版本。
在框架导入与构建兼容性层面,v0.19.5 避免单个 Op Builder 的兼容性探测影响 deepspeed 导入,同时修复了 Torch 2.12 及更高版本下的编译错误。
在 ZeRO 相关能力层面,本次版本修复了 ZeRO++ 小参数的次级分片副本问题,修复了 ZeRO-3 异步梯度卸载问题,修复了 AutoEP 在 ZeRO-1 与 ZeRO-2 下的通用转换问题,并为非托管梯度累积增加了 ZeRO Offload 支持。
在内存与卸载处理层面,v0.19.5 默认使用固定的卸载缓冲区,同时将原生主机固定内存拆分为独立的 pin_memory 算子。
整体来看,DeepSpeed v0.19.5 没有遗漏分布式训练框架运行中常见的关键环节:从导入、编译、工作流,到 ZeRO 分片、梯度卸载、固定内存和梯度累积,均包含对应调整。对于关注 DeepSpeed 稳定性、Torch 新版本编译兼容性、ZeRO 系列能力以及卸载路径的用户而言,这一版本值得重点关注。

356

被折叠的 条评论
为什么被折叠?



