更新内容(What's Changed),根据github翻译
- 在 0.17.5 发布后更新 version.txt
- 支持在 ZeRO1 和 ZeRO2 模式下 DeepSpeed 的 offload 与 reload 状态
- CI 赞助致谢 modal.com
- 修复
pp_int对象无custom_print_str属性时的断言错误 - 更新 TSC Committers 成员列表
- 在 DeepSpeed 中启用 Muon 优化器
- 支持非 ZeRO 模式
- 更新 README,加入 PyTorch 推荐的 ZenFlow 发布博客链接
- 在 deepspeed_shm_comm 运算符中增加 riscv64 CPU 支持
- ZeRO3:改进不匹配检测机制
- 修复错别字,将“1014 ”改为“1024”
- 撤销此前的 revert 操作
- [日志] 启动时减少无关输出
- [文档] 修复 MoE 教程
- 修正文档错字:lrrt.md 中
cycle_min_lr应该为cycle_max_lr - 修复 DeepSpeedCPULion 在 ZeRO-Offload 下的 bug
- 修复使用 torch.autocast 时的缩放和 allgather 问题
- 修复 zenflow_torch_adam.py
- 放宽 torch.autocast 集成的限制条件
- 自动调优 ZenFlow 亲和性设置
- 修复 get_cuda_compile_flag
- 在 init_process_group 时避免设置 device_id
- 改进错误信息,并减少 autocast 测试中的验证步骤
- 回退“为 HPU devices 添加索引(#7497)”的更改
- [ALST 教程] 支持 batch size > 1
- [MoE] 修复将 num_experts 误用为专家并行组大小(ep_size)的问题
- 限制测试中随机种子的取值范围
- 修复 DeepCompile Z1/Z2 的梯度缓冲区访问问题
- 将 modal 测试移动到 tests/v1 目录
- 为 deepcompile 测试添加依赖项
- deepcompile:使用 empty_strided 创建虚拟输入
- deepcompile:使用 OrderedDict 记录图的顺序
- deepcompile:创建完整的无拷贝操作列表
- 修复 NPU 上 device_id 的 AttributeError 问题
- 使 Muon 优化器更容易启用
- 脚本:仅在非 C++ 文件中检查
.is_cuda - [bugfix] 修复 partition context unpatch 的问题
近日,DeepSpeed 发布了 v0.17.6 版本,本次更新带来了多项重要特性与修复,涵盖分布式训练优化、DeepSpeed-ZeRO 模式改进、DeepCompile 功能完善,以及对更多硬件平台的支持。本文将详细解析此次版本的主要更新内容,帮助开发者快速了解新特性并应用到实际项目中。
一、主要更新亮点
1. ZeRO 优化与功能增强
本次版本针对 ZeRO 各级别(ZeRO1、ZeRO2、ZeRO3)进行了优化:
- 支持 DeepSpeed Offload 与 Reload 状态(适用于 ZeRO1 和 ZeRO2)
- 允许在不同计算设备(CPU、GPU)间高效切换模型状态,并支持训练中动态释放与重新加载部分参数,从而降低显存占用。
- ZeRO3 不匹配检测优化
- 改进了权重与梯度之间的不一致问题检测机制,增强了稳定性与调试体验。
- 修复 DeepSpeedCPULion 与 ZeRO-Offload 的兼容性问题
- 解决了在 CPU 端 Lion 优化器与 ZeRO-Offload 同时使用时的Bug。
- 支持非 ZeRO 模式
- 在一些轻量训练场景中,可不启用 ZeRO,从而减少开销。
2. DeepCompile 模块大幅更新
DeepCompile 是 DeepSpeed 的高性能编译与图优化框架,本次进行了多项改进:
- 引入
empty_strided创建样本输入,提高内存利用率。 - 记录计算图顺序,采用
OrderedDict更精确地保持算子执行次序。 - 增加完整的无复制操作列表,以减少内存拷贝。
- 修复在 ZeRO1/ZeRO2 模式下的梯度缓冲区访问问题。
- 调整 autotune 亲和性参数,提升执行效率。
- 新增 deepcompile 测试依赖并完善测试用例组织。
3. Muon 优化器升级
- Muon 优化器现在更容易启用,用户可在配置中简化启用步骤。
- 与 DeepSpeed DeepCompile、ZeRO-Offload 结合时性能和兼容性更好。
4. Autocast 与混合精度支持
- 扩展
torch.autocast集成的适用范围,放宽使用限制。 - 修复 autocast 下
allgather的缩放问题,并改善错误提示。 - 在测试中减少了部分冗余验证步骤,加快测试执行速度。
5. 平台与硬件支持拓展
- 新增 RISC-V 64 CPU 支持,让 DeepSpeed 可以运行在新兴芯片架构上。
- 修复 NPU(神经网络处理单元)
device_id属性异常问题。 - 回退了 HPU(Habana Processing Unit) 设备索引的改动,确保兼容性。
6. 训练体验与文档优化
- 减少启动日志输出的“噪声”,更聚焦于核心信息。
- 更新了多个教程,包括 MoE(Mixture of Experts)与 ALST 教程,支持更大批量(bs>1)和修复参数误用问题。
- 多处文档排版与术语错误修正,例如将
cycle_min_lr改为cycle_max_lr。 - 更新 README,推广 ZenFlow 训练框架与性能优化方案。
二、Bug 修复总览
本次版本解决的问题包括但不限于:
- 修复
pp_int对象缺少custom_print_str属性导致的异常。 - 修复 CUDA 编译标志检测方法
get_cuda_compile_flag。 - 修复分区上下文 patch/unpatch 时的错误。
- 避免在
init_process_group中错误设置device_id。 - 多个测试中限制随机种子范围,提升复现稳定性。
三、对开发者的意义
DeepSpeed v0.17.6 的更新主要体现在以下几个方面:
- 更低的显存占用与更快的分布式训练速度
- ZeRO Offload 与 Reload 结合 autotune 带来显存优化与速度提升。
- 更强的硬件适配性
- 支持 RISC-V CPU、NPU、HPU 等多样化芯片平台。
- 更稳定的高性能编译与混合精度支持
- DeepCompile 与 autocast 的优化可为大规模模型训练提供更稳定可控的环境。
- 更易用的优化器与调试体验
- Muon 优化器、改进的错误提示以及精简的日志输出,让开发体验更友好。
四、升级建议
如果你的训练任务涉及:
- 多 GPU/多节点的大规模模型训练
- 内存/显存受限的环境
- 新兴硬件平台(如 RISC-V、NPU)
- DeepSpeed DeepCompile 高性能编译使用
那么强烈建议升级到 v0.17.6。
升级方式:
pip install deepspeed==0.17.6
或:
pip install --upgrade deepspeed
总结
DeepSpeed v0.17.6 不仅带来显存优化、ZeRO 改进,更在硬件兼容、编译优化和调试体验上全面提升。对于大规模模型训练、跨平台部署以及高性能推理场景,v0.17.6 都是值得关注和升级的版本。