Accelerate 1.0.0 发布候选版公告
TL;DR
Accelerate 1.0.0 发布候选版现已可用,带来了 FP8 支持、DeepSpeed 多模型编排、torch.compile 集成以及全新的数据加载器和流水线原语,同时为大规模训练和推理稳定了 API。
Accelerate 1.0.0 是什么
Accelerate 已从一个简单的多 GPU/TPU 辅助工具演变为一个全栈库,为大多数 Hugging Face 包提供动力,包括 transformers、diffusers、peft 和 trl。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 inference –
device_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 – 随着
torchao和torchtitan的成熟,Accelerate 将调整内部实现,以公开这些功能,同时保持用户层体验的稳定。 - Benchmarking suite for FP8 variants – Accelerate 旨在提供开箱即用的性能比较,比较 FP8 实现(
transformer_engine、MS‑AMP、nanotron等)与基准 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.0rc1cpu-release-1.0.0rc1gpu-fp8-transformerengine-release-1.0.0rc1gpu-deepspeed-release-1.0.0rc1
这些镜像包含相应的可选依赖(FP8、DeepSpeed 等)。
迁移帮助 – 破坏性更改和弃用
Accelerate 1.0 引入了若干弃用,需要更新代码:
- Data‑loader configuration – 参数
dispatch_batches、split_batches、even_batches和use_seedable_sampler现在必须通过accelerate.utils.DataLoaderConfiguration提供,并以Accelerator(dataloader_config=DataLoaderConfiguration(...))形式传递给Accelerator。 - Mixed‑precision flags –
Accelerator().use_fp16和AcceleratorState().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 社交平台上的项目以获取更新。
参考资料
- Accelerate GitHub 仓库: https://github.com/huggingface/accelerate
- FP8 基准目录: https://github.com/huggingface/accelerate/tree/main/benchmarks/fp8
- DeepSpeed 多模型指南: https://huggingface.co/docs/accelerate/usage_guides/deepspeed_multiple_model
- 分布式推理流水线指南: https://huggingface.co/docs/accelerate/main/en/usage_guides/distributed_inference#memory-efficient-pipeline-parallelism-experimental
Sources
- OriginalAccelerate 1.0.0