开源accelerate Releases·原文 2026年9月9日

Hugging Face accelerate v1.15.0发布:削减FSDP2长序列激活内存并改进DTensor

新版本修复了FSDP2激活检查点导致的高内存占用问题,新增显存卸载选项,并支持Neuron动态编译后端。

AI解读:这版最大的改动集中在FSDP2上,主要解决了长序列训练时激活内存占用过高的问题。之前激活检查点把每个子层(自注意力、MLP、归一化)分别包起来,导致子层之间的激活值全部保留,浪费显存;现在改为包裹整个Transformer层,内存立刻降下来。

同时新增了FSDP2专用的 `activation_checkpointing_offload`,把每层检查点输入挪到固定的CPU内存上,进一步释放显存,梯度计算和原先完全一致,用户只需在配置里开两个开关。

对使用FSDP2、张量并行或N-D并行的人来说,DTensor的梯度裁剪和模型分发问题也修了。此外,模型现在可以整机卸载到磁盘(包括共享权重),为 `llm-compressor` 这类在内存受限机器上压缩大模型的工具铺了路。

加速器支持方面,Neuron新增了torch dynamo后端,意味着 `--torch-compile` 能在Neuron上配合Trainer使用;MPS在 `accelerate env` 里也被正确识别了。

日常用户如果只是跑小模型,可能感受不深,但对大模型训练、微调或者用NPU/Neuron的开发者来说,这几个修复能直接减少踩坑和内存瓶颈,建议升级到v1.15.0试试。

Hugging Face于 2025 年 12 月 17 日发布accelerate v1.15.0,重点修复FSDP2下长序列训练的内存占用问题,并改进了DTensor处理、磁盘卸载、设备支持和自定义跟踪器注册。

该版本主要面向使用FSDP2、张量并行、Neuron或MPS的开发者和研究人员,涉及训练内存优化、检查点保存修复及新功能支持。

FSDP2激活内存优化

v1.15.0修复了FSDP2激活检查点的高内存问题:此前代码将匹配层的每个子模块(如 `self_attn`、`mlp`、归一化层)分别包裹,导致子模块间的所有激活值在反向传播前都被保留;现在改为包裹整个Transformer层,显著降低长序列训练时的激活内存。 新增的FSDP2独占选项 `activation_checkpointing_offload` 可将每层的检查点输入移入固定的CPU内存,进一步削减显存使用,且梯度与普通激活检查点完全一致。启用方式如下:

本次还引入了一项功能:可在 `torch >= 2.13` 上支持tied-embedding模型,将输出嵌入放入相同的 `fully_shard` 组,解决之前FSDP2对tied-embedding兼容性不足的问题。

此外,FSDP2相关的检查点修复包括:解决FSDP2/PEFT/`FULL_STATE_DICT` 模式下仅保留第 0 个rank的适配器分片问题,以及为 `SHARDED_STATE_DICT` 增加每rank独立的 `torch.save/load`,修复了 2800+ NPU检查点超时问题。

  • 激活检查点改为包裹层本身,减少子模块间激活保存。
  • `activation_checkpointing_offload` 将检查点输入卸载到固定CPU内存。
  • 新增tied-embedding支持(torch >= 2.13)。
  • 修复FSDP2/PEFT的 `FULL_STATE_DICT` 适配器分片丢失。
  • 为 `SHARDED_STATE_DICT` 引入每rank独立保存,解决大规模NPU超时。

DTensor与磁盘卸载改进

对于使用FSDP2、张量并行或任意N-D并行设置的DTensor分片模型,本次修复了两处问题:梯度裁剪不再因混合普通张量和DTensor时的 `foreach` 操作而失败;`prepare_model` 保持已分片模型不动,不会将其移动设备。

v1.15.0还支持将整个模型(包括tied权重)分派至磁盘,方便在内存不足以容纳大模型的环境中压缩模型,此类工具如 `llm-compressor`。同时修复了FP8张量卸载时的崩溃问题。

自定义跟踪器现在可通过名称注册,随后像内置跟踪器一样在 `log_with=` 中调用,例如注册 `MyTracker` 后使用 `Accelerator(log_with="my_tracker")`。

  • DTensor梯度裁剪支持 `foreach` 操作;`prepare_model` 不再移动已分片模型。
  • 新增完整磁盘卸载,适配内存储备不足时的模型压缩。
  • 修复FP8张量卸载崩溃。
  • 自定义跟踪器可通过 `register_tracker_class` 注册并命名选择。

设备支持与CLI更新

Neuron设备新增torch dynamo后端,使 `--torch-compile` 可在Neuron上配合Transformers Trainer使用;同时,`accelerate env` 现在能正确报告MPS为加速器,并修复了MPS芯片名称读取问题,MPS内存溢出也能被 `find_executable_batch_size` 识别为OOM。

CLI方面,修复了 `accelerate launch --cpu` 未设置KMP变量等小问题,并为 `estimate-memory` 适配了 `timm>=1.0.29` 所需的 `hf-hub:` 前缀。

其他重要修复包括:拒绝为含滑动窗口或分块注意力层的模型启用上下文并行,以及修正FP8转换时首尾线性层被误转换的问题。

  • Neuron增加torch dynamo后端,支持 `--torch-compile`。
  • `accelerate env` 正确报告MPS并读取芯片名。
  • 修复MPS OOM处理。
  • 新增上下文并行限制,修复若干CLI与FP8转换问题。

信息来源