使用 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_ipex 1.9.0)。
  • 腳本修改:訓練腳本必須更新以匯入 torch_ccl,透過環境變數(例如 PMI_RANK)處理 local rank,並為 CCL 後端配置主節點位址與連接埠。
  • 執行:使用 mpirun 啟動工作,以指定處理程序數量以及每個節點的處理程序數量。

Sources

相關