



DeepSpeed v0.19.3 是一次覆盖训练稳定性、ZeRO 优化、自动并行、DeepCompile、推理能力、量化压缩、日志与类型提示、CI 流程以及文档维护的补丁版本更新。
此次更新的核心方向非常明确:一方面持续修复 ZeRO-3 在混合精度、参数聚合、激活检查点、模块 Hook 等复杂训练场景中的问题;另一方面增强 AutoEP、AutoTP、Hybrid Engine、Inference V2 等新能力。同时,版本还针对 Muon 优化器、梯度缩放、学习率调度器、通信日志、文件描述符、共享内存缓冲区等多个稳定性细节进行了修复和校验。
一、版本发布与工程流程更新
v0.19.3 首先完成了发布后的版本号更新,确保代码仓库中的版本信息与正式发布版本保持一致。
在工程协作和持续集成方面,此次更新新增了合并队列的 DCO 工作流,并进一步让该工作流兼容 Probot。这样可以让合并流程中的开发者签署认证流程更加完善。
CI 流程也获得多项改进:
这些更新主要集中在测试选择、任务取消、测试数据与工程文档等方面。
二、混合精度与梯度缩放更新
混合精度训练是 DeepSpeed 的重要能力之一,v0.19.3 对 fp16、bf16 与梯度缩放相关行为进行了补强。
首先,版本增加了对 fp16 动态损失缩放参数的输入校验。相关参数必须为正数,从而避免无效配置进入训练过程。
在 bf16 场景中,check_grad_overflow 现在默认启用,与 fp16 的行为保持一致。该更新使 bf16 和 fp16 在梯度溢出检查上的默认行为更加统一。
默认梯度裁剪参数也发生变化:
gradient_clipping = 1.0也就是说,gradient_clipping 的默认值调整为 1.0。
此外,版本修复了流水线阶段中梯度被重复缩放的问题。该修复涉及多流水线阶段下的梯度缩放行为,可避免同一梯度在不同阶段出现重复缩放。
针对学习率调度器,v0.19.3 还增加了输入校验,并修复了 WarmupCosineLR 的一个边界问题:当 total_num_steps 等于 warmup_num_steps 时,原有计算可能触发除零错误,现在该情况已被保护。
保存检查点接口和 warmup 学习率调度器也增加了输入验证,以提升参数配置的可靠性。
三、ZeRO-3 迎来多项关键修复
ZeRO-3 是本次更新最集中的模块之一,多个修复都围绕参数聚合、混合数据类型、量化缓存、Hook、激活检查点和检查点机制展开。
在 _allgather_params_coalesced 中,输出缓冲区现在使用每个参数自身的数据类型,而不是依赖统一的数据类型。这一改动解决了混合参数数据类型场景下输出缓冲区类型不匹配的问题。
与之对应,量化 scale 缓冲区同样改为使用每个参数自己的数据类型。这样,参数聚合过程中的输出缓冲区与量化 scale 缓冲区都能够正确适配参数本身的数据类型。
针对自动混合精度,v0.19.3 修复了 ZeRO-3 在混合参数数据类型下进行 autocast gather 的问题。该修复进一步完善了 ZeRO-3 与混合精度参数组合使用时的参数收集逻辑。
在 DeepCompile 相关场景中,如果 Dynamo 跳过某些帧,ZeRO-3 的参数 gather 逻辑此前可能出现问题。本次更新修复了这一情况,使 DeepCompile 与 ZeRO-3 的组合处理更加正确。
ZeRO-3 的模块 Hook 机制也得到修复。对于通过属性委托实现的模块,ZeRO-3 Hook 现在能够正确工作。
在激活检查点方面,新增了 ZeRO-3 对包含冻结参数的激活检查点场景的支持。与此同时,activation_checkpointing 的 num_layers 默认值改为 None,使得 configure() 中的断言能够正确触发。
此外,ZeRO-3 的 elastic checkpoint 被标记为弃用。该项更新明确了旧检查点机制的状态。
AutoEP 与 ZeRO-3 也进一步打通。现在,AutoEP 支持 ZeRO-3 的 zero.Init 源模块。
四、ZeRO-1、ZeRO-2 与 Muon 优化器更新
v0.19.3 对 ZeRO-1、ZeRO-2 下 Muon 优化器的使用进行了多轮调整。
版本首先增加了数值正确性测试,用于验证 Muon 在 ZeRO-1 和 ZeRO-2 下的行为。
随后,针对 Muon 与 reduce_scatter 的组合,版本进行了兼容性处理。此前 Muon 优化器与 ZeRO-1、ZeRO-2 的 reduce_scatter 组合会被拒绝;本次更新进一步加入对该组合的支持。
通信和梯度平均路径也获得修复。在 ZeRO-1 和 ZeRO-2 中,average_tensor 现在会等待所有 IPG bucket 生产者流完成,再继续进行相关处理。
这些更新覆盖了 Muon、reduce_scatter、IPG bucket 与张量平均等 ZeRO-1、ZeRO-2 训练路径。
五、AutoEP 与 AutoTP 自动并行能力增强
自动专家并行与自动张量并行是此次版本的重要功能更新方向。
v0.19.3 新增 AutoEP 与 AutoTP 的并行折叠能力,使两类自动并行能力能够进行结合。
AutoTP 的分区配置逻辑也得到修复。partition_config 现在使用完整的层级模块路径,而不是不完整的模块路径。这一改动修复了自动张量并行在模块定位与分区配置上的路径问题。
在使用 AutoTP 时,版本调整了部分数据一致性检查逻辑:位于 tp_group 中的特定数据将不再进行一致性检查。
AutoEP 的 ep_router 还修复了 Python 3.9 环境下导入时可能出现的 TypeError。该修复保证 AutoEP 路由模块可以在 Python 3.9 下正常完成导入。
与此同时,AutoEP 已支持结合 ZeRO-3 的 zero.Init 源模块使用,进一步扩展自动专家并行与 ZeRO-3 初始化机制的组合范围。
六、DeepCompile 持续完善
v0.19.3 对 DeepCompile 的多个环节进行了修复与增强,涉及性能分析、内存清理、参数 gather、标量输出以及优化 Pass 管理。
首先,版本修复了 DeepCompile 的 profile 元数据回填问题,使性能分析相关元数据能够正确补全。
在性能分析后,DeepCompile 的内存清理逻辑也得到修复,避免 profiling 过程中相关内存未正确释放的问题。
对于 Dynamo 跳过帧的情况,DeepCompile 现在能够正确处理 ZeRO-3 参数 gather,避免跳过帧路径下参数收集异常。
在输出处理上,版本修复了 DeepCompile 对标量输出的 fallback 处理。标量输出现在能够进入正确的回退处理路径。
此外,DeepCompile 新增轻量级优化 Pass 合约。这一更新为优化 Pass 的使用增加了明确的轻量级约束机制。
七、Hybrid Engine 与推理能力更新
此次版本新增了 DeepSpeed Hybrid Engine rollout,用于支持 On-Policy Distillation Trainer,也就是 OPSD Trainer。
该能力将 Hybrid Engine rollout 与 On-Policy Distillation Trainer 的支持结合起来,是本次功能更新中的重要新增项。
在 Inference V2 方面,新增 EXAONE 4.5 模型支持。
DeepSpeedInferenceConfig 也修复了一个兼容性问题:当旧版本配置中的 MoE 值以布尔类型提供时,可能导致配置解析崩溃;现在该向后兼容场景已经得到修复。
推理与运行时模块中还修复了部分注释和文档字符串中的拼写问题。
八、量化、压缩与旋转位置编码更新
在压缩和量化配置方面,v0.19.3 修复了仅压缩量化配置中的特征值解析问题。
此前,在 compression-only 的量化配置中,特征值相关字段可能无法被正确解析;本次更新修复了这一问题。
同时,特征值监控数值现在会被记录到日志中。也就是说,eigenvalue monitor 的相关值能够输出到日志记录流程中。
在 GPU 内核优化方面,fake_quantize_kernel 降低了 blockDim,以改善 SM 占用率。
旋转位置编码方面,apply_rotary_pos_emb 新增可选的 torchembed RoPE 后端支持。该更新为旋转位置编码的应用增加了一个可选后端。
九、ZenFlow 与 CPU 优化器能力更新
ZenFlow 新增了一个执行方式:重叠执行的 CPU 优化器可以运行在原生进程中。
该更新聚焦于 overlapped CPU optimizer 的运行机制,将其执行方式扩展为原生进程运行。
十、日志、通信与运行时配置改进
v0.19.3 新增可配置的 engine 日志级别。用户可以通过配置控制 DeepSpeed engine 的日志输出级别。
通信日志模块中,CommsLogger.stop_profiling_comms 修复了一个问题:该方法此前不会正确关闭全局 profiling 状态,现在已经能够正确禁用全局通信性能分析。
在异常处理方面,部分过于宽泛的 Exception 捕获被替换为更具体的异常类型。该更新缩小了异常捕获范围。
对于 FlopsProfiler,版本修复了 sequence parallelism 场景下 dp_world_size 为 None 时可能出现的崩溃问题。
十一、文件描述符、共享内存与 CUDA 初始化修复
底层资源管理是此次补丁版本的重要稳定性内容。
在 deepspeed_io_handle_t::wait() 中,文件描述符现在会被关闭,从而避免文件描述符泄漏。
共享内存实现中的 shm.cpp 新增缓冲区长度检查,用于避免缓冲区长度相关问题。
在算子兼容性检查过程中,DeepSpeed 现在避免在导入时初始化 CUDA 上下文。也就是说,执行 op compatibility check 时不会因为模块导入而触发 CUDA context 初始化。
NPUOpBuilder 的异常处理也进行了调整:KeyboardInterrupt 和 SystemExit 不再被吞掉,相关中断与退出行为可以正常向外传递。
十二、类型提示与公共 API 完善
此次版本继续扩展 DeepSpeed 的类型提示覆盖范围。
顶层公共 API 函数新增类型提示。
公共通信 API 函数同样新增类型提示。
这些更新覆盖顶层公共接口和通信公共接口,使接口定义中的类型信息更加完整。
十三、文档、项目治理与信息更新
代码地址:github.com/deepspeedai/DeepSpeed
文档与项目信息方面,v0.19.3 包含以下更新:
这些改动覆盖项目文档、贡献者信息、行为准则和代码注释维护。
十四、v0.19.3 更新清单汇总
为了便于快速查阅,以下是本次版本的完整更新方向汇总:
deepspeed_io_handle_t::wait() 中的文件描述符泄漏。gradient_clipping 设置为 1.0。num_layers 默认值设为 None。check_grad_overflow。zero.Init 源模块组合。reduce_scatter 组合支持。apply_rotary_pos_emb 增加可选 torchembed RoPE 后端。ep_router 的导入错误。average_tensor 对 IPG bucket 生产者流的等待逻辑。CommsLogger.stop_profiling_comms 未关闭全局 profiling 的问题。tp_group 中特定数据的一致性检查。fake_quantize_kernel 的 blockDim。reduce_scatter。