彈性分佈式訓練 (Elastic Distributed Training) 是一種在 AI 模型訓練中,為了提高效率和靈活性而使用的技術。簡單來說,它讓模型訓練不再受限於單一機器或固定數量的容器,而是可以根據需求,動態地調整和利用可用的運算資源。
數位無限將彈性分散式訓練無縫整合進 AI-Stack,支援 Horovod、DeepSpeed、Megatron-LM、Slurm 等主流框架,有效突破企業在資源排程上的瓶頸,加速大規模 AI 模型訓練。
本篇文章,我們會一步步示範給大家看,如何在AI-Stack上使用Horovod來做彈性分佈式訓練!
因 Horovod 和 DeepSpeed 操作步驟相似,本篇文章以 Horovod 作為範例。需要注意的地方是,在使用之前需確認【公用鏡像列表】中備有適合 DeepSpeed、Horovod 框架運行的鏡像。
Horovod 分佈式訓練
首先,登入 AI-Stack 使用者介面後,進入「容器管理」,並選擇「分佈式訓練叢集」接著點選「建立叢集」按鈕。
在建立頁面中,選擇 Horovod 並填入叢集名稱,這裡我們填 tthvd 當作示範。

接下來,設定想要的容器數量,這裡我們先填入 2 個,並選定所需的鏡像。這邊須注意兩件事:
- 容器數量必須大於等於 2,包含一個 launcher 容器及其餘 worker 容器
- 需依照叢集類型選擇帶有訓練框架的鏡像
接著點選「啟用 GPU」,即可為每個容器選擇指定的 GPU 規格。這裡我們選擇每個容器內有 1 片 NVIDIA-P4 GPU 的資源。另外,也可以選擇是否啟用共享記憶體並填入所需的容量。
再來,選擇要掛載的儲存裝置。
稍待1-2分鐘,就會看到兩個容器建立完成,呈現「Running」狀態,各自擁有一張 NVIDIA-P4 的 GPU 資源。
當叢集準備就緒後,就可以從服務中選擇以 SSH 或是較方便的 JupyterLab 方式連線,這裡我們選擇較簡單的JupyterLab。
從 JupyterLab 中點選 Terminal (與使用 SSH 連線的意思相同)
回到 home 可以看到我們從外部的儲存叢集掛載進來的磁碟區,我們已預先放好 horovod 的測試程式,因此可直接示範如何進去使用。
接著,我們下指令來跑我們的訓練腳本
horovodrun -np 2 –hostfile /etc/mpi/hostfile python tensorflow2_mist.py
- -np 2:是 –num-processes 的縮寫,指定要啟動的 Python 進程數量。這裡我們寫 2,表示將動用兩個容器的資源來進行分散式運算。
- –hostfile /etc/mpi/hostfile:hostfile 描述了在這個分佈式集群中有哪些容器可以使用,這些容器中分別有多少 GPU 卡,AI-Stack 會自動建立並維護這個檔案。–hostfile 參數則是告訴 horovod 到哪裡讀取hostfile檔,這樣 horovod 就可以依照檔案內的描述來調用 GPU 資源。
- python tensorflow2_mnist.py 則是要執行的腳本。
因我們的訓練腳本共有 1 萬筆資料,分配到 2 個容器,可以看到一個容器是分配到 5 千筆資料來做訓練。
我們已經學會使用 AI-Stack 來做 horovod 分佈式訓練的操作步驟,接下來會示範如何擴縮容器!
AI-Stack horovod 擴縮容器
透過容器的擴縮,我們可以精確地分配資源:當需要加速訓練時,一鍵擴展容器數量;當訓練完成時,立即縮減資源,將其釋放給其他任務使用。不僅能大幅提升開發效率,更能有效控制營運成本。
現在,我們就來實際操作,看看如何輕鬆用 AI-Stack 來擴縮容器。
首先,回到我們的分佈式訓練叢集畫面,勾選剛開啟的範例 tthvd 叢集,點選「擴縮容器」。
可直接透過右邊的面板將 2 個容器改成 4 個。
按下確認後,再回去容器列表就可以看到剛擴增的兩個容器,等1-2分鐘後容器狀態會更新成 “Running”,即表示新的兩個容器也已成功佈署起來。目前畫面上顯示,tthvd 叢集裡共有 4 個容器。
擴容後,hostfile 的內容也會同步增加為 4 個容器,接著我們再用剛剛的腳本來跑一次訓練,這次把 2 個容器改成 4 個
horovodrun -np 4 –hostfile /etc/mpi/hostfile python tensorflow2_mist.py
一樣1萬筆資料,但這次分散到 4 個容器做訓練,因此可以看到跑出來的結果是每個容器訓練 2500 筆資料,整體的訓練速度也會變快。
以上就是 AI-Stack 的 horovod 操作過程啦!AI-Stack 讓資料科學家可以輕鬆地建立和擴展容器,大幅節省時間,讓訓練工作變得更方便!
如果想進一步了解彈性分佈式訓練,請見該篇文章:什麼是彈性分佈式訓練(Elastic Distributed Training)?打造更高效的 AI 模型訓練新模式
若是對AI-Stack解決方案想更進一步了解,歡迎聯絡我們!