Accelerate 1.0.0 釋出候選版公告

TL;DR

Accelerate 1.0.0 釋出候選版現已提供,帶來 FP8 支援、DeepSpeed 多模型協調、torch.compile 整合,以及全新的資料載入器與管線原語,同時穩定大規模訓練與推論的 API。


Accelerate 1.0.0 是什麼

Accelerate 已從簡單的多 GPU/TPU 輔助工具演變為完整堆疊的函式庫,為大多數 Hugging Face 套件提供動力,包括 transformersdiffuserspeft、以及 trl。版本 1.0.0 標誌著第一個釋出候選系列,並整合了一系列功能,使函式庫已準備好迎接 400 B 參數模型的時代。

主要功能包括:

  • 統一的低階訓練 API – 支援六種硬體後端(CPU、GPU、TPU、XPU、NPU、MLU),同時保留原始 PyTorch 訓練迴圈的 99 %。
  • 命令列啟動器accelerate launch 介面,為腳本抽象硬體配置。
  • 大型模型推論device_map="auto" 機制,使在有限資源下進行推論與參數效率微調。

這些元件使 Accelerate 成為 Hugging Face 大規模模型開發的事實上基礎。


為何 1.0 里程碑重要

1.0 版的釋出被延後,直到函式庫在 Accelerator 物件周圍達到「功能完整」的狀態。以下缺失的部分已加入,以證明 1.0 版的穩定性:

  • FP8 訓練支援 – 與 MS‑AMP 以及 TransformersEngine 整合(請參閱 repo 中的 FP8 基準目錄)。
  • DeepSpeed 多模型協調 – 實驗性支援同時訓練多個模型。
  • torch.compile 相容性 – 為大型模型推論 API 啟用(需要 torch>=2.5)。
  • torch.distributed.pipelining – 作為替代的分散式推論策略提供。
  • torchdata.StatefulDataLoader – 作為可選的資料載入機制提供。

有了這些新增功能,Accelerate 現在能夠因應新興的硬體與軟體趨勢,同時不破壞公開 API。


Accelerate 的未來方向

Accelerate 1.0 被定位為快速整合即將到來的 PyTorch 創新平台。團隊預期有多個演進領域:

  • DeepSpeed 多模型 API – 可能需要大量的 API 重新設計,以簡化任意模型集合的包裝。
  • 原生 FP8、新分片與 FSDPv2 – 隨著 torchaotorchtitan 成熟,Accelerate 將調整內部以公開這些功能,同時保持使用者層面的體驗穩定。
  • FP8 變體的基準測試套件 – 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 引入了多項棄用,需要更新程式碼:

  • 資料載入器設定 – 參數 dispatch_batchessplit_batcheseven_batchesuse_seedable_sampler 必須透過 accelerate.utils.DataLoaderConfiguration 提供,並以 Accelerator(dataloader_config=DataLoaderConfiguration(...)) 傳入 Accelerator
  • 混合精度旗標Accelerator().use_fp16AcceleratorState().use_fp16 已移除;請改用 accelerator.mixed_precision == "fp16"
  • Autocast API – 不再接受 cache_enabled 參數。請透過 Accelerator(kwargs_handlers=[AutocastKwargs(... )]) 提供 AutocastKwargs(cache_enabled=True) 實例。
  • TPU 偵測 – 將 accelerate.utils.is_tpu_available 替換為 accelerate.utils.is_torch_xla_available
  • 檢查點分片 – 將 accelerate.utils.modeling.shard_checkpoint 替換為 huggingface_hub 函式庫中的 split_torch_state_dict_into_shards
  • tqdm 包裝器 – 移除第一個位置參數(布林值);請使用具名參數 main_process_only
  • Rich 回溯控制 – 環境變數 ACCELERATE_DISABLE_RICH 已過時;使用 ACCELERATE_ENABLE_RICH=1 以啟用 Rich 回溯。
  • FSDP 向後預取 – 設定 fsdp_backward_prefetch_policy 已重新命名為 fsdp_backward_prefetch

文件提供了每項變更的移轉指南與範例。


結語

Accelerate 已從一個小型工具成長為 Hugging Face 生態系統的基石,累積超過 1 億次總下載量與約 30 萬次每日下載。1.0.0 釋出候選版讓社群有機會在最終發佈前測試新功能並進行移轉。鼓勵使用者在 GitHub 與 Hugging Face 社群平台上關注專案以獲取最新資訊。


參考資料

Sources