🤖 AI总结
主题
DeepSpeed v0.19.6 版本更新内容详解
摘要
DeepSpeed v0.19.6 发布,涵盖 AutoTP、DeepCompile、ZeRO、Apple Silicon 支持等多项更新,提升训练性能和兼容性。
关键信息
- 1 AutoTP 支持不均匀切分和通用检查点
- 2 DeepCompile 修复多项问题并支持激活卸载
- 3 Apple Silicon 和 MPS 支持增强
- 4 新增 SwiGLU 融合 Triton 内核和 DeepNVMe 主机内存锁页后端
![]()
![]()
![]()
DeepSpeed v0.19.6 已发布。本次补丁版本覆盖范围广泛,更新重点集中在 AutoTP、DeepCompile、ZeRO、激活卸载、弹性训练、HybridEngine、OPSD、Apple Silicon 支持、MPS 通信、优化器、Triton 内核、检查点、Pinned Memory、文档与测试等方向。
从此次更新内容来看,v0.19.6 不只是一次常规问题修复,也同时带来了多项能力补全与性能相关改进,包括 AutoTP 的不均匀切分和通用检查点支持、HybridEngine 生成阶段 CUDA Graph 支持、Apple Silicon 上的 MPS 与 ZeRO 支持、激活卸载能力启用、原生主机内存锁页后端、SwiGLU 融合 Triton 内核等。
一、Ulysses、检查点与弹性训练相关修复
在序列并行、检查点和弹性训练相关场景中,v0.19.6 包含多项稳定性与边界处理改进。
• 修复了 Ulysses 序列并行场景下的检查点 rank 选择问题。
• 更新了version.txt,以匹配 0.19.5 发布后的版本状态。
• 修复了弹性 batch size 的处理逻辑,确保弹性 batch size 不会超过max_train_batch_size。
• 修复了弹性配置计算中,非 0.2 弹性模式下return_microbatch可能触发ZeroDivisionError的问题。
• 修复了 ZeRO-3 与 AutoTP 通用检查点元数据相关的崩溃问题。
• 完成了 AutoTP 的不均匀切分与通用检查点支持。
• 修复了 AutoTP 中未切分模块的元数据更新问题。
• 将 Hugging Face 嵌入层的embedding_rowwise张量并行计划条目转换为SKIP规格。
• 修复了 AutoTP 训练场景中lm_head路由的问题。
这些更新涉及训练状态保存、恢复、分片元数据维护、弹性配置计算以及自动张量并行策略处理,进一步补足了复杂训练配置下的边界场景支持。
二、OneCycle、优化器与梯度处理能力更新
v0.19.6 对学习率调度器、LAMB、Adam、MuonWithAuxAdam、梯度规约与溢出检查等部分进行了更新。
• 在 OneCycle 中实现了文档中已说明的“按参数组配置列表”能力。
•OnebitLamb.get_lamb_coeffs现在返回一个副本,而不是直接返回原始对象。
• 增加可配置的梯度求和规约能力。
• 优化了溢出检查过程,不再为每个元素分配临时对象。
• 修复了共享 loss 的梯度累积问题。
• 为MuonWithAuxAdam优化器启用优化后的 Adam 后端。
• 在 CPUmulti_tensor_adam绑定中正确遵循adam_w_mode配置。
• 保持参数数据类型在 ZeRO-3 权重量化过程中不被改变。
• 修复 ZeRO-1 和 ZeRO-2 在存在零尺寸参数时的问题。
• 在 HP fragment 映射过程中跳过零尺寸参数。
• 修复 ZeRO reduce bucket size 的校验逻辑。
• 移除了文档中存在但实际上并不存在的grad_hooksZeRO 配置项说明。
这一组变化既包括优化器接口与参数行为修正,也覆盖了零尺寸参数、量化数据类型、梯度累积、梯度规约和溢出检测等训练过程中较为基础的环节。
三、DeepCompile 更新:冻结参数、静态方法、调度与激活卸载
DeepCompile 是本次更新较为集中的方向之一,包含编译流程、Pass、激活卸载和调度相关改进。
• 修复了 DeepCompile 在 ZeRO-3 中处理冻结参数时可能出现的KeyError。
• 修复了 DeepCompile 在 Python 3.9 中处理staticmethod的问题。
• 开始实现面向 AutoTP 的编译器 Pass。
• 修复 DeepCompile 对未消费 wait 操作的最后使用处理。
• 调整 Pass 契约,使其覆盖 DeepCompile 实际调度的 Pass,同时进行了相关文件重命名。
• 隔离 DeepCompile 列表调度测试中的操作。
• 启用激活卸载能力。
• 增加compile.offload_activation_pin_memory配置,用于 DeepCompile 激活卸载时的内存锁页处理。
• 增加非重入式激活检查点 CPU 卸载能力。
DeepCompile 在本版本中围绕“编译流程正确性”“Pass 调度完整性”“激活内存卸载”三个方向持续推进。冻结参数、静态方法、未消费 wait 操作和列表调度测试等问题得到修复;激活卸载、CPU 卸载和锁页内存配置也被纳入本次更新。
四、AutoTP 能力完善:不均匀切分、元数据与训练路由
AutoTP 在 v0.19.6 中获得了多项功能补齐和问题修复。
• 开始实现 AutoTP 编译器 Pass。
• 完成 AutoTP 不均匀切分支持。
• 完成 AutoTP 通用检查点支持。
• 修复 ZeRO-3 在 AutoTP 通用检查点元数据处理中的崩溃问题。
• 修复 AutoTP 未切分模块的元数据更新问题。
• 修复 AutoTP 训练过程中的lm_head路由问题。
• 将 Hugging Face 中嵌入层embedding_rowwise张量并行计划条目转换为SKIP规格。
• 在 AutoTP 中导入print_dist。
AutoTP 的本次更新横跨训练、检查点、模型模块元数据、嵌入层计划转换、输出层路由和编译器 Pass 等多个位置。其中,不均匀切分和通用检查点支持是此次版本中的重要能力补充。
五、ZeRO 相关修复与兼容性改进
ZeRO 仍然是本次补丁版本修复的重要区域,覆盖 ZeRO-1、ZeRO-2、ZeRO-3,以及与量化、冻结参数、检查点、OPSD 和零尺寸参数相关的场景。
• 修复 DeepCompile 在 ZeRO-3 冻结参数场景下的KeyError。
• 修复 ZeRO-3 在 AutoTP 通用检查点元数据处理中的崩溃问题。
• 修复 ZeRO-1 和 ZeRO-2 在零尺寸参数存在时的异常问题。
• 在 HP fragment 映射中跳过零尺寸参数。
• 修复 ZeRO reduce bucket size 校验。
• 保持参数 dtype 在 ZeRO-3 权重量化流程中的一致性。
• 修复 OPSD rollout 阶段的 ZeRO-3 同步问题。
• 将 ZeRO 和 SuperOffload 中的内存锁页调用位置统一路由到 accelerator 的pin_memory。
• 在 Apple Silicon 上启用 DeepSpeed 的 ZeRO Stage 1、ZeRO Stage 2 与 ZeRO Stage 3 支持。
本次更新让 ZeRO 在参数尺寸边界、量化、检查点、激活与卸载、OPSD rollout、Apple Silicon 等环境中的处理更加完整。
六、主机内存锁页、GPU DMA 与激活卸载更新
内存锁页和主机内存后端是本次更新中的另一项重点,相关变更覆盖 DeepNVMe、FPDT、检查点写入、ZeRO、SuperOffload 和 CUDA GPU DMA。
• 新增原生 DeepNVMe 主机内存锁页后端,用于加速器场景。
• 新增compile.offload_activation_pin_memory,用于 DeepCompile 激活卸载的锁页内存配置。
• 将 FPDT 与检查点写入器的锁页内存操作路由到 accelerator 的pin_memory。
• 将 ZeRO 与 SuperOffload 的锁页内存调用位置路由到 accelerator 的pin_memory。
• 将原生锁页主机内存注册到 CUDA,以支持 GPU DMA。
• 增加非重入式激活检查点 CPU 卸载。
• 启用激活卸载。
• 文档补充异步 CPU checkpointing 性能与expandable_segments的说明。
这些变更涉及主机内存、CPU 卸载、GPU DMA、检查点写入、激活卸载和加速器内存锁页路径。v0.19.6 对多个模块中的锁页内存调用进行了统一路由,同时引入原生主机内存锁页后端和 CUDA 注册支持。
七、HybridEngine、OPSD 与 rollout 更新
本版本还更新了 HybridEngine 和 OPSD 相关能力,包含生成阶段 CUDA Graph、rollout profiling、提示词共享和 ZeRO-3 同步修复。
• 为 HybridEngine 生成阶段增加 CUDA Graph 支持。
• 增加 HybridEngine rollout profiling。
• OPSD 支持在多个 rollout 样本之间共享 prompt prefill。
• 修复 OPSD rollout 期间的 ZeRO-3 同步问题。
• 修复推理工作区属性查找问题。
HybridEngine 和 OPSD 涉及生成、推理、rollout 与采样等流程。本次更新覆盖了 CUDA Graph、性能分析、prompt prefill 共享、推理工作区属性查找及 ZeRO-3 同步等环节。
八、Apple Silicon 与 MPS 支持更新
DeepSpeed v0.19.6 为 Apple Silicon 和 MPS 环境带来了较多更新,包含 ZeRO、通信、Adam 内核、P2P staging 与构建支持。
• 在 Apple Silicon 上启用 DeepSpeed 支持,并支持 ZeRO Stage 1、ZeRO Stage 2 和 ZeRO Stage 3。
• 增加 Metal FusedAdam 内核。
• 增加面向 Apple Silicon 的 CPU Adam 构建支持。
• 将isend和irecv路由到非阻塞后端方法,并在 MPS 上将其作为异步操作处理。
• 避免 MPS P2P staging 中的冗余复制。
Apple Silicon 支持在本版本中覆盖训练优化器、ZeRO 分片、通信方式和 P2P 数据暂存等多个层面。其中,Metal FusedAdam 内核与 CPU Adam 构建支持构成了 Apple Silicon 支持中的重要组成部分。
九、Triton 内核与算子性能更新
在内核和算子层面,v0.19.6 包含 grouped GEMM 修复与 SwiGLU 融合内核。
• 修复 Triton grouped GEMM 专家偏移量中的 int32 溢出问题。
• 新增面向 SwiGLU 的融合 Triton 内核。
Triton grouped GEMM 的专家偏移量问题得到修复,同时 SwiGLU 获得融合 Triton 内核支持。
十、通信、超时与后端行为调整
通信后端和进程组超时配置也在本版本中进行了更新。
• NCCL 以及其他后端的进程组超时时间从 30 分钟调整为 10 分钟。
• 将isend和irecv路由到非阻塞后端方法。
• 在 MPS 平台上,将isend和irecv作为异步操作处理。
• 避免 MPS P2P staging 过程中的重复复制。
这部分变更覆盖进程组超时、非阻塞通信调用、MPS 异步通信和 P2P 暂存路径。
十一、配置校验、异常处理与配置对象行为修复
v0.19.6 还改进了若干配置校验与异常处理逻辑。
• 修复配置处理问题,避免DeepSpeedConfig将max_grad_norm写回调用方传入的配置字典。
• 拒绝无效的 ZenFlow ratio。
• 更新 ZenFlow update interval 的边界处理。
• 修正异常处理相关的拼写问题,补充RuntimeError抛出逻辑。
• 修复非 0.2 弹性模式下弹性配置计算可能出现的ZeroDivisionError。
• 修复 zero reduce bucket size 校验问题。
这些改动主要涉及配置对象副作用、参数合法性检查、更新间隔边界、异常抛出以及弹性配置计算。
十二、文档、测试与工程维护更新
除核心功能外,本版本也包含文档、测试、安装流程和代码维护方面的调整。
• 修复文档字符串中Args条目引用函数不存在参数的问题。
• 移除文档中对不存在的grad_hooksZeRO 选项的说明。
• 补充异步 CPU checkpointing 性能和expandable_segments相关文档说明。
• 升级 Python 安装 smoke 测试任务中的 pip。
• 修复test_gate_up_partition_covers_the_whole_weight中的设备不匹配问题。
• 隔离 DeepCompile 列表调度测试操作。
• 修复 FlopsProfiler 指标重复累积的问题。
• 更新version.txt,对应 0.19.5 发布后的版本状态。
• 调整 DeepCompile Pass 契约并重命名相关文件,使契约覆盖实际调度的 Pass。
这些更新覆盖文档准确性、测试稳定性、性能指标累计、安装验证流程、版本维护和编译器工程结构。
十三、v0.19.6 更新内容完整清单汇总
为便于快速核对,以下汇总本次版本全部变更方向:
• 修复 Ulysses 序列并行检查点 rank 选择。
•OnebitLamb.get_lamb_coeffs返回副本。
• 更新版本文件。
• OneCycle 支持按参数组配置列表。
• 弹性 batch size 不超过最大训练 batch size。
• 修复 DeepCompile 在 ZeRO-3 冻结参数上的KeyError。
• 修复 Python 3.9 下 DeepCompile 的静态方法处理。
• 升级 Python 安装 smoke 测试中的 pip。
• 开始实现 AutoTP 编译器 Pass。
• 修复 DeepCompile 未消费 wait 的最后使用处理。
• 增加可配置梯度求和规约。
• 增加 DeepNVMe 原生主机内存锁页后端。
• 增加激活卸载锁页内存配置。
• 修复 Triton grouped GEMM 专家偏移 int32 溢出。
• 将后端进程组超时从 30 分钟调整为 10 分钟。
• 修复 ZeRO-3 与 AutoTP 通用检查点元数据崩溃。
• HybridEngine 生成阶段支持 CUDA Graph。
• 修复文档字符串 Args 条目。
• ZeRO-3 权重量化保持参数 dtype。
• AutoTP 完成不均匀切分与通用检查点支持。
• FPDT 与检查点写入锁页操作路由至 acceleratorpin_memory。
• 增加 SwiGLU 融合 Triton 内核。
• 调整 DeepCompile Pass 契约并重命名文件。
• 支持非重入式激活检查点 CPU 卸载。
• 启用激活卸载。
• 修正RuntimeError抛出相关问题。
• 修复 ZeRO-1 与 ZeRO-2 的零尺寸参数问题。
• 补充异步 CPU checkpointing 和expandable_segments文档。
• 修复弹性配置计算中的除零问题。
• 避免max_grad_norm回写调用方配置。
• Apple Silicon 支持 ZeRO Stage 1 至 Stage 3。
• 修复推理工作区属性查找。
• 将 Hugging Face 嵌入层行切分计划转换为SKIP。
• 修复 zero reduce bucket size 校验。
• 注册原生锁页主机内存至 CUDA 以支持 GPU DMA。
• 移除不存在的grad_hooksZeRO 文档选项。
• 在 HP fragment 映射中跳过零尺寸参数。
• 增加 HybridEngine rollout profiling。
• MPS 支持非阻塞、异步isend与irecv。
• 修复测试中的设备不匹配。
• 在 AutoTP 中导入print_dist。
• 拒绝无效 ZenFlow ratio 并更新 interval 边界。
• 避免 MPS P2P staging 冗余复制。
• 修复 AutoTP 未切分模块元数据更新。
• 增加 Metal FusedAdam 内核与 Apple Silicon CPU Adam 构建。
• 为 MuonWithAuxAdam 启用优化后的 Adam 后端。
• OPSD 在 rollout 样本间共享 prompt prefill。
• 优化溢出检查中的临时对象分配。
• 修复共享 loss 梯度累积。
• 隔离 DeepCompile 列表调度测试操作。
• 修复 OPSD rollout 中 ZeRO-3 同步。
• 修复 AutoTP 训练lm_head路由。
• ZeRO 与 SuperOffload 锁页操作路由至 acceleratorpin_memory。
• CPUmulti_tensor_adam绑定遵循adam_w_mode。
总结
代码地址:github.com/deepspeedai/DeepSpeed
DeepSpeed v0.19.6 是一次覆盖面较广的补丁版本更新。AutoTP 在不均匀切分、通用检查点、元数据与训练路由方面得到完善;DeepCompile 在冻结参数、静态方法、Pass 调度和激活卸载方面持续推进;ZeRO 在零尺寸参数、量化、检查点、OPSD 同步与 Apple Silicon 环境中的兼容性进一步增强。
同时,DeepNVMe 主机内存锁页后端、CUDA GPU DMA 注册、HybridEngine CUDA Graph、SwiGLU 融合 Triton 内核、Apple Silicon 的 Metal FusedAdam 与 MPS 通信更新,也构成了 v0.19.6 中的重要内容。
我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。