🌏 Read this article in English
大型語言模型預訓練面臨一個極端的工程矛盾:為了追求效能極限,系統設計依賴嚴格的同步機制,但這使得整個叢集對單一節點的故障或延遲變得異常脆弱。當硬體規模擴大到數百萬個加速器時,單一節點的延遲會透過同步點放大為全局等待成本。在穩定環境中,這是合理的取捨;但在極大規模下,這成為效能瓶頸。
該論文提出 Decoupled DiLoCo,試圖從架構層面解決這個瓶頸。它不再強求所有節點步調一致,而是透過解耦計算與同步的過程,讓系統在面對硬體故障時仍能維持高吞吐量。這提供了在極大規模下,以可接受陳舊性換取高 Goodput(扣除故障與同步等待等無效時間後,實際可推進訓練的有效產出比例)的另一種工程路徑。
為什麼同步架構的 Goodput 會在百萬級晶片下降?
要理解 Decoupled DiLoCo 的價值,必須先看清當前主流預訓練架構的痛點。目前大型模型訓練常以同步 SPMD data-parallel(單一程式多資料)為基線。在這種模式下,成千上萬個加速器必須嚴格同步:每個訓練步驟都必須等待所有節點完成計算並交換梯度後,才能進入下一步。
這種設計的邏輯很直觀——確保模型權重更新的一致性。但在極大規模下,它變成了一個巨大的瓶頸。根據論文的模擬數據,當晶片數量達到 240 萬片(Nchip = 2.4m)時,即使採用彈性擴展技術,系統的 Goodput 也會降至 40%。
傳統同步架構的本質上仍受同步點限制。一旦某個 Learner(學習者)卡住,整個系統就會暫停。對於依賴搶先式執行個體或異質化資源的訓練任務來說,這種等待成本可能使其適配性下降;但在穩定環境中,同步方法依然是有效的選擇。
核心機制:解耦與異步整合
Decoupled DiLoCo 的核心創新在於「解耦」。要理解其架構增量,需先對照原始 DiLoCo(Distributed Low-Communication Training of Language Models)的運作方式:原始設計雖已引入本地優化以隱藏通訊延遲,但其 Learner 協調仍依賴較緊密的外層更新週期。Decoupled 版本則進一步鬆綁了這種耦合,將計算過程分割成多個獨立的 Learner,這些 Learner 不再需要等待彼此完成整個步驟,而是可以獨立執行本地的內部優化步驟。
1. 異步通訊與中心同步器
每個 Learner 會將參數片段非同步地發送給一個中央同步器。這個同步器扮演著聚合者的角色,它不等待所有 Learner 回報,而是採用「最小法定人數」機制。只要收到足夠數量的更新,同步器就可以進行全局更新。
2. 自適應寬限期
這是該架構的關鍵設計之一。當達到最小法定人數時,系統通常會立即進入下一步。但 Decoupled DiLoCo 選擇利用這段空閒時間,引入一個自適應寬限期 ξgrace。
這種設計利用達到最小法定人數後產生的網路空閒時間(slack),動態納入更多 Learner 的更新,以樣本效率交換同步延遲。系統會繼續等待更多的 Learner 加入更新,從而讓全局參數更新包含更多有效資訊。
3. 動態權重合併
同步器在聚合更新時,會採用動態 Token 權重合併(dynamic token-weighted merging)。這項機制讓不同 Learner 對模型更新的貢獻,與其在該週期內實際處理的 token 數量成正比,確保了即使各節點進度不同,全局更新依然能反映真實的數據處理比重。
4. 隔離系統雜訊與分散式快照
為了在評估過程中將演算法行為與系統雜訊隔離,同步器在訓練期間會記錄一份事件膠帶(event tape, T)。這份膠帶透過向量時鐘、每個 Learner 的 token 計數以及故障/恢復事件,完整捕捉了系統的因果狀態,主要用於研究與行為分析。
而在應對實際故障時,為了防止遺失過多的進度,Worker 節點會遵循一種分散式快照演算法(Chandy-Lamport snapshotting)。這確保了在故障恢復後,系統能夠從一個一致的狀態繼續訓練,而不必從頭開始。
這種架構使系統能夠撿拾分散在不同地理位置、異質化的搶先式計算資源。根據論文,在頻寬足夠的擴容(upsize)事件中,系統允許新副本使用最多 H 步陳舊的狀態,且傳輸狀態給新副本的過程不會阻塞系統其餘部分(直到觸及該限制);而在論文的模擬故障模型中,系統能維持零全局停機時間。
證據與性能邊界
DeepMind 在該論文中提供了廣泛的實證數據,主要基於對數百萬晶片的模擬環境。這些數據揭示了 Decoupled DiLoCo 在韌性與效能之間的具體取捨。
Goodput 的顯著提升
在模擬的極端故障環境中,Decoupled DiLoCo 展現了強大的韌性:
- 零停機時間:在數百萬模擬晶片與指定故障條件下,全系統的全局停機時間為零。
- Goodput 對比:在激進的模擬故障下,Decoupled DiLoCo 維持了 88% 的 Goodput,而彈性資料平行僅為 58%。
- 規模效應:當 Learner 數量增加到 M = 16 時,在 120 萬晶片環境下,Goodput 可高達 93%。相比之下,傳統架構的 Goodput 仍會隨故障率急劇下降。
模型性能的一致性
在論文評估的模型、任務與 token 預算下,韌性的提升與模型表現維持了大致相當的水準。這並非無條件的結論,仍需保留低 token 預算下表現可能較弱的例外:
- 下游任務表現:在論文評估的模型、任務與 Learner 設定下,Decoupled DiLoCo 訓練出的模型性能與標準集中式資料平行基線相當。對於 M = 8 的設定,其表現與 SPMD 資料平行訓練相比較,維持了相當水準。
- 稀疏與密集架構:這種一致性適用於 Dense 和 Mixture-of-Experts (MoE) 架構。
- 低 Token 預算下的邊界:在論文的實驗觀察中,當 token 預算較低時,Decoupled DiLoCo 的表現可能略弱於資料平行基準;隨著該實驗的預算增加,其性能超越資料平行方法。
通訊與儲存的優化
- 頻寬需求:在模擬中,Decoupled DiLoCo 所需的頻寬比資料平行對手低數個數量級。這對撿拾分散資源至關重要,因為它降低了跨地域傳輸的瓶頸。
- 梯度壓縮:研究發現,將外層梯度壓縮至 int4 可以在保持與 bf16 相當性能的同時,進一步減少通訊量。但使用 2-bit 或 1-bit 會導致不可接受的性能衰退。
取捨與實務意涵
對小規模、低延遲或硬體高度穩定的工作流,Decoupled DiLoCo 未必是首選方案。它引入了一套新的工程複雜度與理論假設。在考慮採用這種架構時,需要明確其適用邊界與代價。
1. 實現複雜度 vs. 韌性收益
論文提到,某些張量分片策略(如基於貪婪打包的演算法)在理論上能將峰值頻寬控制在最小可能值的 4/3 以內,但研究團隊最終因「實現複雜度高且不利於除錯」而未將其用於最終實驗。這顯示了工程實踐中,實作與除錯的便利性往往優先於理論上的極致優化。對於工程團隊而言,引入異步同步器意味著需要處理更複雜的狀態管理、故障恢復邏輯以及系統雜訊隔離。
2. Learner 數量與系統負載
增加 Learner 數量(M)能顯著提升 Goodput,但也帶來了新的挑戰:
- 同步器瓶頸:中央同步器需要處理來自 M 個 Learner 的異步更新。如果 M 過大,同步器可能成為新的計算或通訊瓶頸。
- 狀態陳舊容忍度:系統允許新副本使用最多 H 步驟陳舊的狀態。這意味著模型權重可能存在一定的不一致性,在論文評估的模型、H 值與故障條件下仍維持可比表現,但在對一致性要求極高的特定場景下,可能需要調整 H 的閾值。
3. 梯度壓縮的邊界
雖然 int4 壓縮表現良好,但這僅限於「外層梯度」。論文的結果顯示,壓縮位元數進一步降至 2-bit 或 1-bit 時,性能衰退已不可接受;因此,這項結果不能延伸為所有模型組件或所有壓縮設定皆適用的結論。
4. 適用情境判準
Decoupled DiLoCo 最適合以下情境:
- 大規模預訓練:晶片數量眾多,節點數增加時,指定時間窗內至少一次故障的機率與故障事件總量通常上升。
- 異質化/搶先式資源:利用跨地域、異質且可被搶占的計算資源進行訓練。
相反地,對於小規模實驗、對延遲極度敏感的微調任務,或硬體環境極其穩定且頻寬充足的場景,傳統 SPMD 資料平行可能仍是更簡單、更高效的選擇。同步資料平行在穩定、低故障環境中很有效;在搶占式或異質資源情境下,其同步等待成本可能提高。此處推導的排除判準是基於架構特性的部署假設,仍需針對延遲與規模指標進行實際驗證。
結語:韌性作為第一級別的需求
Decoupled DiLoCo 的貢獻不只在 Goodput 的數值提升,而在於它將「故障」從系統異常轉化為常態運行的邊界條件。透過解耦計算與同步,它在論文的百萬級晶片模擬與指定故障模型中顯示,絕對同步並非唯一路徑。
在論文評估的模型、預算與模擬故障條件下,解耦提供了較高 Goodput 的替代路徑。真實部署仍需驗證同步器容量、頻寬與故障分布。團隊可根據資源穩定性與頻寬條件,評估其適用性。
Sources
- Decoupled DiLoCo for Resilient Distributed Pre-training — 解耦訓練機制、模擬與模型評估