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

🤖 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、Apple Silicon 与激活卸载迎来密集更新

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 构建支持。

  • • 将isendirecv路由到非阻塞后端方法,并在 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 分钟。

  • • 将isendirecv路由到非阻塞后端方法。

  • • 在 MPS 平台上,将isendirecv作为异步操作处理。

  • • 避免 MPS P2P staging 过程中的重复复制。

    这部分变更覆盖进程组超时、非阻塞通信调用、MPS 异步通信和 P2P 暂存路径。

    十一、配置校验、异常处理与配置对象行为修复

    v0.19.6 还改进了若干配置校验与异常处理逻辑。

    • 修复配置处理问题,避免DeepSpeedConfigmax_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 支持非阻塞、异步isendirecv

  • • 修复测试中的设备不匹配。

  • • 在 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助力您的未来发展。

    © 版权声明

    相关文章