DLC是一站式的雲原生深度學習訓練平台,為開發人員和企業提供靈活、穩定、易用和高效能的機器學習訓練環境。本文為您介紹如何在DLC中使用mpirun和Deepspeed方式來提交MPIJob類型的分布式訓練任務。
前提條件
已開通DLC後付費,並建立預設工作空間。具體操作,請參見開通PAI並建立預設工作空間。
已購買靈駿智算資源並建立資源配額。具體操作,請參見建立資源配額。
使用限制
僅支援在華北6(烏蘭察布)地區使用靈駿智算資源提交該任務。
提交MPIJob類型的訓練任務
提交分布式訓練任務的具體操作步驟如下:
步驟一:準備代碼源
使用官方DeepSpeed examples代碼合集建立代碼集,其中關鍵參數配置如下,其他參數取預設配置。具體操作,請參見代碼配置。
名稱:自訂代碼集名稱,本方案樣本為:deepspeed-examples。
Git地址:
https://github.com/microsoft/DeepSpeedExamples.git。
步驟二:提交分布式訓練任務
支援使用以下兩種方式提交分布式訓練任務:
mpirun方式
進入新建任务頁面。
登入PAI控制台,在頁面上方選擇目標地區,並選擇目標工作空間,然後單擊進入DLC。
在分布式訓練(DLC)頁面,單擊新建任务。
在新建任务頁面,配置以下關鍵參數,更多參數配置詳情,請參見建立訓練任務。
參數
描述
环境信息
镜像配置
本方案提供了一個測試鏡像,單擊镜像地址,在文字框中輸入dsw-registry-vpc.<RegionID>.cr.aliyuncs.com/pai-common/deepspeed-training:23.08-gpu-py310-cu122-ubuntu22.04,用於提交MPIJob分布式訓練任務。其中
<RegionID>需替換為地區ID,例如華北6(烏蘭察布)為cn-wulanchabu。更多關於地區ID的詳細說明,請參見地區和可用性區域。启动命令
在分布式作業的每個POD中執行的指令碼命令。本方案使用系統內容變數的預設配置,您也可以在執行命令中配置環境變數來覆蓋預設配置。更多詳細內容,請參見系統內容變數。
cd /root/code/DeepSpeedExamples/training/cifar/ # -np 2 -npernode 1 表示使用2個節點,每個節點1張卡,總共2張卡。 mpirun -np 2 -npernode 1 --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代码配置
選擇在线配置,並選擇已建立的代碼配置,挂载路径保持預設。
资源信息
资源类型
選擇资源配额。
說明僅當工作空間同時支援使用靈駿智算資源和通用計算資源提交DLC任務時,才支援選擇資源類型。
资源来源
選擇资源配额。
资源配额
選擇已建立的靈駿智算資源配額。
框架
選擇MPI。
任务资源
节点数量配置為2。
CPU(核数)配置為4。
GPU(卡数)配置為1。
内存(GiB)配置為8。
共享内存(GiB)配置為8。
驱动设置
使用上方提供的測試鏡像時,建議選擇535.54.03版本的驅動。
說明目前,只有靈駿智算的資源規格支援驅動設定。
單擊确定。
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所需的庫。
本方案使用系統內容變數的預設配置,您也可以在啟動命令中配置環境變數來覆蓋預設配置。更多詳細內容,請參見系統內容變數。
步驟三:查看任務詳情和日誌結果
任務提交成功後,在分布式训练(DLC)頁面,單擊任務的名稱。
在任務詳情頁面,即可查看任務的基本資料和執行狀態。
在任務詳情頁面底部的实例地區,單擊launcher類型的執行個體操作列下的日志,查看作業運行情況。

系統內容變數
在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,無需手動修改。 |
| |
OMPI_MCA_plm_rsh_agent | 為Launcher指定如何遠程啟動Worker任務。 |
| |
PDSH_RCMD_TYPE | PDSH的遠程命令類型。 | ssh | 適用於使用DeepSpeed方式啟動作業。 |