全部產品
Search
文件中心

Platform For AI:快速提交MPIJob訓練任務

更新時間:Jul 13, 2024

DLC是一站式的雲原生深度學習訓練平台,為開發人員和企業提供靈活、穩定、易用和高效能的機器學習訓練環境。本文為您介紹如何在DLC中使用mpirun和Deepspeed方式來提交MPIJob類型的分布式訓練任務。

前提條件

使用限制

僅支援在華北6(烏蘭察布)地區使用靈駿智算資源提交該任務。

提交MPIJob類型的訓練任務

提交分布式訓練任務的具體操作步驟如下:

步驟一:準備代碼源

使用官方Deepspeed examples代碼合集建立代碼集,其中關鍵參數配置如下,其他參數取預設配置。具體操作,請參見代碼配置

步驟二:提交分布式訓練任務

支援使用以下兩種方式提交分布式訓練任務:

mpirun方式

  1. 進入建立任務頁面。

    1. 登入PAI控制台

    2. 在左側導覽列單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應工作空間內。

    3. 在工作空間頁面的左側導覽列選擇模型開發與訓練 > 分布式訓練(DLC),在分布式訓練(DLC)頁面中單擊建立任務,進入建立任務頁面。

  2. 建立任務頁面,配置以下關鍵參數,更多參數配置詳情,請參見建立訓練任務

    • 節點鏡像:本方案提供了一個測試鏡像,單擊鏡像地址,在文字框中輸入registry.cn-wulanchabu.aliyuncs.com/pai-dlc/deepspeed-training:23.08-gpu-py310-cu122-ubuntu22.04,用於提交MPIJob分布式訓練任務。

    • 啟動命令:在分布式作業的每個POD中執行的指令碼命令。本方案使用系統內容變數的預設配置,您也可以在執行命令中配置環境變數來覆蓋預設配置。更多詳細內容,請參見系統內容變數

      cd /root/code/DeepSpeedExamples/training/cifar/
      
      # --np 2 表示啟動兩個節點。
      mpirun -np 2 --allow-run-as-root -bind-to none -map-by slot -x LD_LIBRARY_PATH -x PATH -mca pml ob1 -mca btl ^openib python /root/code/DeepSpeedExamples/training/cifar/cifar10_tutorial.py
    • 資源配額:選擇已建立的資源配額。

    • 架構:選擇MPIJob

    • 任務資源節點數量配置為2,CPU(核心數)配置為4,GPU(卡數)配置為1,記憶體(GiB)配置為8,共用記憶體(GiB)配置為8。

    • 驅動設定:使用上方提供的測試鏡像時,建議選擇535.54.03版本的驅動。

  3. 單擊確定

deepspeed(pdsh)方式

使用該方式提交分布式訓練任務,啟動命令的配置如下,其他參數與mpirun方式配置相同。

cd /root/code/DeepSpeedExamples/training/pipeline_parallelism

deepspeed --hostfile /etc/mpi/hostfile train.py --deepspeed_config=ds_config.json -p 2 --steps=200
說明

如果您使用自訂鏡像來運行Deepspeed作業,您需要在鏡像中安裝MPIJob和Deepspeed所需的庫。另外,您也可以從DockerHub上擷取Deepspeed官方鏡像,該鏡像已經預裝了MPIJob和Deepspeed所需的庫。

本方案使用系統內容變數的預設配置,您也可以在啟動命令中配置環境變數來覆蓋預設配置。更多詳細內容,請參見系統內容變數

步驟三:查看任務詳情和日誌結果

  1. 任務提交成功後,在分布式訓練(DLC)頁面,單擊任務的名稱。

  2. 在任務詳情頁面,即可查看任務的基本資料和執行狀態。

  3. 在任務詳情頁面底部的執行個體地區,單擊launcher類型的執行個體操作列下的日誌,查看作業運行情況。image

系統內容變數

在MPI分布式作業中,存在Launcher和Worker兩種角色。這兩種角色在訓練過程中需要進行通訊。在DLC中,針對Launcher角色已經設定了預設環境變數,您也可以根據具體情境的需求,在執行命令時配置環境變數以覆蓋預設配置。

環境變數

描述

預設值

適用情境

OMPI_MCA_btl_tcp_if_include

為Launcher和Worker指定通訊的網卡,多個網卡之間使用半形逗號(,)分隔。

eth0

適用於使用mpirun方式啟動作業。

OMPI_MCA_orte_default_hostfile

為mpirun命令指定hostfile,在PAI-DLC中可以自動產生hostfile,無需手動修改。

/etc/mpi/hostfile

OMPI_MCA_plm_rsh_agent

為Launcher指定如何遠程啟動Worker任務。

/etc/mpi/kubexec.sh

PDSH_RCMD_TYPE

PDSH的遠程命令類型。

ssh

適用於使用DeepSpeed方式啟動作業。