ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

DeepSpeed v0.19.6 正式发布:AutoTP、DeepCompile、ZeRO、Apple Silicon 与激活卸载迎来密集更新

DeepSpeed v0.19.6 正式发布:AutoTP、DeepCompile、ZeRO、Apple Silicon 与激活卸载迎来密集更新 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/DeepSpeedDeepSpeed 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 中的重要内容。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进