GitHub Repo
Transformers 修正專家平行梯度縮放,避免特定配置下重複除算
Transformers 於 11 月 5 日合併 MoE 分散式訓練修補,處理特定配置下專家梯度被重複縮小的問題。使用 token dispatch 且 efsdp_size 為 1 的團隊應核對訓練設定,正式套件收錄情況仍待確認。

Hugging Face Transformers 於 11 月 5 日將 PR #50292 合併至主分支,修正混合專家模型(MoE)在特定專家平行配置下的梯度縮放錯誤。問題涉及 token dispatch 與 FSDP2 的交互作用;依維護者說明,當 efsdp_size == 1,專家梯度會被重複除算,最終比預期小 fsdp_size 倍。修補提案
這個條件與平行拓撲有關。官方文件定義 efsdp_size = fsdp_size * tp_size / ep_size,代表完整專家集合的副本數。例如不啟用張量平行、fsdp_size=8 且 ep_size=8 時,專家分布在八個程序,efsdp_size 則為一。Token dispatch 讓各程序持有自己的批次,再透過兩次 all-to-all,把 token 送至對應專家並取回結果。專家平行文件
錯誤出現在梯度歸約的邊界情況。一般路徑要求 FSDP2 先加總,再依資料平行規模除算;但專家側只有一個 FSDP 分片時,沒有 reduce-scatter 可執行,FSDP2 在複製梯度時已經除算,強制加總設定又使它再次除算。修補改成只有需要 reduce-scatter 時才強制使用加總,讓專家梯度只縮放一次。維護者的根因說明
對訓練團隊而言,這可能影響專家參數與其他模組之間的更新比例,值得在比較不同平行配置時排查;這是根據縮放機制的工程推論。公開提案沒有提供完整收斂曲線或下游品質損失,因此不能將梯度縮小八倍,直接解讀成模型品質下降八倍,也不能推論所有 MoE 訓練均受影響。
工程師可先檢查實際採用的專家分派規則與上述三個平行參數,再以固定資料比較修補前後的專家梯度範數及單步更新。官方同時提醒,主分支文件對應原始碼版本,而且 Trainer 對 token dispatch 的批次與 token 計數支援仍待後續補齊。此次合併解決的是特定梯度問題;採用前仍須核對安裝版本是否包含修補,並驗證整體訓練流程。官方使用限制