使用 Intel 技術加速 PyTorch 分散式微調
Hugging Face 已證明,將 PyTorch 微調工作分配到 Intel Xeon Scalable CPU 伺服器叢集可以顯著縮短訓練時間,為遷移學習任務提供了一個可行的 GPU 訓練替代方案。透過利用 Intel 的 Ice Lake 架構和優化的軟體函式庫,在從一個節點擴展到四個節點時,實現了高達 3 倍的訓練加速。
透過 Intel Ice Lake 進行硬體加速
為了獲得最佳效能,該設置利用了基於 Ice Lake 架構的 Intel 伺服器。此硬體支援加速深度學習運算的特定功能:
- Intel AVX-512:用於高效能運算的高階向量擴充指令集。
- Intel Vector Neural Network Instructions (VNNI):專為加速神經網路推論和訓練而設計的專用指令集。
這些功能可在主要雲端供應商中使用,包括 Amazon EC2 (M6i 和 C6i 執行個體)、Azure (Dv5, Dsv5, Ddv5, Ddsv5, Edv5, 和 Edsv5 系列) 以及 Google Cloud Platform (N2 Compute Engine VMs)。
軟體優化堆疊
為了充分利用 Intel CPU 的硬體能力,兩個主要的軟體組件被整合到 PyTorch 工作流程中:
Intel Extension for PyTorch
Intel extension for PyTorch 透過讓 PyTorch 利用 AVX-512 和 VNNI,為訓練和推論提供開箱即用的加速。
Intel oneAPI Collective Communications Library (oneCCL)
當大型模型交換狀態資訊時,分散式訓練經常面臨網路瓶頸。Intel oneAPI Collective Communications Library (oneCCL) 被用作 torch.distributed 的通訊後端,以高效處理如 all-reduce 等通訊模式,這對於在分散式訓練期間保持節點同步至關重要。
效能基準測試
使用在 MRPC 資料集(GLUE 基準測試的一部分)上微調的 BERT 模型,Hugging Face 測量了不同叢集規模下的訓練時間。基準值是在單個節點(Amazon EC2 c6i.16xlarge 執行個體)上建立的。
MRPC 資料集結果
| Cluster Size | Training Time | Speedup |
|---|---|---|
| 1 Node | 7m 46s | Baseline |
| 2 Nodes | 4m 39s | 1.7x |
| 4 Nodes | 2m 36s | 3x |
QQP 資料集結果
對於 Quora Question Pairs (QQP) 任務,其包含超過 400,000 個訓練樣本的大型資料集,加速效果依然穩定:
| Cluster Size | Training Time | Speedup | | :--- | :--- | :--- | :--- | | 1 Node | 11h 22m | Baseline | | 2 Nodes | 6h 38m | 1.71x | | 4 Nodes | 3h 51m | 2.95x |
實作要求
設置分散式環境需要特定的配置步驟以確保相容性與效能:
- 基礎設施:在主節點 (master) 與工作節點 (worker) 之間配置無密碼 SSH,且所有 TCP 埠必須對內部 oneCCL 通訊開放。
- 依賴項匹配:PyTorch 與 Intel extension for PyTorch 必須具有匹配的版本(例如,PyTorch 1.9.0 與
torch_ipex1.9.0)。 - 腳本修改:訓練腳本必須更新以匯入
torch_ccl,透過環境變數(例如PMI_RANK)處理 local rank,並為 CCL 後端配置主節點位址與連接埠。 - 執行:使用
mpirun啟動工作,以指定處理程序數量以及每個節點的處理程序數量。
Sources
相關
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch