Accelerate 1.0.0 发布候选版公告

TL;DR

Accelerate 1.0.0 发布候选版现已可用,带来了 FP8 支持、DeepSpeed 多模型编排、torch.compile 集成以及全新的数据加载器和流水线原语,同时为大规模训练和推理稳定了 API。


Accelerate 1.0.0 是什么

Accelerate 已从一个简单的多 GPU/TPU 辅助工具演变为一个全栈库,为大多数 Hugging Face 包提供动力,包括 transformersdiffuserspefttrl。1.0.0 版本标志着首个发布候选系列,并整合了一套功能,使库准备好迎接 400 B 参数模型的时代。

关键能力包括:

  • Unified low‑level training API – 支持六种硬件后端(CPU、GPU、TPU、XPU、NPU、MLU),同时保留原始 PyTorch 训练循环的 99 %。
  • Command‑line launcher – 一个 accelerate launch 接口,用于抽象脚本的硬件配置。
  • Big‑model inferencedevice_map="auto" 机制,使得在受限资源上进行推理和参数高效微调成为可能。

这些组件使 Accelerate 成为 Hugging Face 大规模模型开发的事实基础。


为什么 1.0 里程碑重要

1.0 版本的发布被推迟,直至库围绕 Accelerator 对象达到“功能完整”状态。以下缺失的部分已被添加,以支撑一个稳定的 1.0 版本:

  • FP8 training support – 与 MS‑AMP 和 TransformersEngine 的集成(请参阅仓库中的 FP8 基准目录)。
  • DeepSpeed multi‑model orchestration – 对同时训练多个模型的实验性支持。
  • torch.compile compatibility – 已在大模型推理 API 中启用(需要 torch>=2.5)。
  • torch.distributed.pipelining – 作为替代的分布式推理策略提供。
  • torchdata.StatefulDataLoader – 作为可选的数据加载机制提供。

有了这些新增功能,Accelerate 现在能够适应新兴的硬件和软件趋势,而不会破坏公共 API。


Accelerate 的未来方向

Accelerate 1.0 被定位为快速集成即将到来的 PyTorch 创新的平台。团队预见到若干发展方向:

  • DeepSpeed multi‑model API – 可能需要对 API 进行大量重构,以简化对任意模型集合的包装。
  • Native FP8, new sharding, and FSDPv2 – 随着 torchaotorchtitan 的成熟,Accelerate 将调整内部实现,以公开这些功能,同时保持用户层体验的稳定。
  • Benchmarking suite for FP8 variants – Accelerate 旨在提供开箱即用的性能比较,比较 FP8 实现(transformer_engineMS‑AMPnanotron 等)与基准 BF16。

总体目标是降低研究人员尝试前沿分布式训练技术的门槛,并跟上快速发展的 PyTorch 生态系统。


如何尝试 Accelerate 1.0.0 RC

发布候选版通过 pip 和 Docker 分发。使用以下方式安装预发布包:

pip install --pre accelerate

或拉取 Docker 镜像:

docker pull huggingface/accelerate:gpu-release-1.0.0rc1

可用标签包括:

  • gpu-release-1.0.0rc1
  • cpu-release-1.0.0rc1
  • gpu-fp8-transformerengine-release-1.0.0rc1
  • gpu-deepspeed-release-1.0.0rc1

这些镜像包含相应的可选依赖(FP8、DeepSpeed 等)。


迁移帮助 – 破坏性更改和弃用

Accelerate 1.0 引入了若干弃用,需要更新代码:

  • Data‑loader configuration – 参数 dispatch_batchessplit_batcheseven_batchesuse_seedable_sampler 现在必须通过 accelerate.utils.DataLoaderConfiguration 提供,并以 Accelerator(dataloader_config=DataLoaderConfiguration(...)) 形式传递给 Accelerator
  • Mixed‑precision flagsAccelerator().use_fp16AcceleratorState().use_fp16 已被移除;请使用 accelerator.mixed_precision == "fp16"
  • Autocast API – 不再接受 cache_enabled 参数。请通过 Accelerator(kwargs_handlers=[AutocastKwargs(... )]) 提供 AutocastKwargs(cache_enabled=True) 实例。
  • TPU detection – 将 accelerate.utils.is_tpu_available 替换为 accelerate.utils.is_torch_xla_available
  • Checkpoint sharding – 将 accelerate.utils.modeling.shard_checkpoint 替换为 huggingface_hub 库中的 split_torch_state_dict_into_shards
  • tqdm wrapper – 第一个位置参数(布尔值)已被移除;请使用命名参数 main_process_only
  • Rich traceback control – 环境变量 ACCELERATE_DISABLE_RICH 已废弃;使用 ACCELERATE_ENABLE_RICH=1 启用丰富的回溯。
  • FSDP backward prefetch – 设置 fsdp_backward_prefetch_policy 已重命名为 fsdp_backward_prefetch

文档提供了每项更改的迁移指南和示例。


结束语

Accelerate 已从一个小工具成长为 Hugging Face 生态系统的基石,累计下载量超过 1 亿次,日均下载约 30 万次。1.0.0 发布候选版为社区提供了在正式发布前测试新功能并迁移的机会。鼓励用户关注 GitHub 和 Hugging Face 社交平台上的项目以获取更新。


参考资料

Sources