快速提交MPIJob訓(xùn)練任務(wù)
DLC是一站式的云原生深度學(xué)習(xí)訓(xùn)練平臺,為開發(fā)者和企業(yè)提供靈活、穩(wěn)定、易用和高性能的機器學(xué)習(xí)訓(xùn)練環(huán)境。本文為您介紹如何在DLC中使用mpirun和Deepspeed方式來提交MPIJob類型的分布式訓(xùn)練任務(wù)。
前提條件
已開通DLC后付費,并創(chuàng)建默認工作空間。具體操作,請參見開通PAI并創(chuàng)建默認工作空間。
已在資源組中購買靈駿智算資源并創(chuàng)建資源配額。具體操作,請參見靈駿智算資源配額。
使用限制
僅支持在華北6(烏蘭察布)地域使用靈駿智算資源提交該任務(wù)。
提交MPIJob類型的訓(xùn)練任務(wù)
提交分布式訓(xùn)練任務(wù)的具體操作步驟如下:
步驟一:準備代碼源
使用官方Deepspeed examples代碼合集創(chuàng)建代碼集,其中關(guān)鍵參數(shù)配置如下,其他參數(shù)取默認配置。具體操作,請參見代碼配置。
名稱:自定義代碼集名稱,本方案示例為:deepspeed-examples。
步驟二:提交分布式訓(xùn)練任務(wù)
支持使用以下兩種方式提交分布式訓(xùn)練任務(wù):
mpirun方式
進入新建任務(wù)頁面。
登錄PAI控制臺。
在左側(cè)導(dǎo)航欄單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應(yīng)工作空間內(nèi)。
在工作空間頁面的左側(cè)導(dǎo)航欄選擇 ,在分布式訓(xùn)練(DLC)頁面中單擊新建任務(wù),進入新建任務(wù)頁面。
在新建任務(wù)頁面,配置以下關(guān)鍵參數(shù),更多參數(shù)配置詳情,請參見創(chuàng)建訓(xùn)練任務(wù)。
節(jié)點鏡像:本方案提供了一個測試鏡像,單擊鏡像地址,在文本框中輸入
registry.cn-wulanchabu.aliyuncs.com/pai-dlc/deepspeed-training:23.08-gpu-py310-cu122-ubuntu22.04
,用于提交MPIJob分布式訓(xùn)練任務(wù)。啟動命令:在分布式作業(yè)的每個POD中執(zhí)行的腳本命令。本方案使用系統(tǒng)環(huán)境變量的默認配置,您也可以在執(zhí)行命令中配置環(huán)境變量來覆蓋默認配置。更多詳細內(nèi)容,請參見系統(tǒng)環(huán)境變量。
cd /root/code/DeepSpeedExamples/training/cifar/ # --np 2 表示啟動兩個節(jié)點。 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
資源配額:選擇已創(chuàng)建的資源配額。
框架:選擇MPIJob。
任務(wù)資源:節(jié)點數(shù)量配置為2,CPU(核數(shù))配置為4,GPU(卡數(shù))配置為1,內(nèi)存(GiB)配置為8,共享內(nèi)存(GiB)配置為8。
驅(qū)動設(shè)置:使用上方提供的測試鏡像時,建議選擇535.54.03版本的驅(qū)動。
單擊確定。
deepspeed(pdsh)方式
使用該方式提交分布式訓(xùn)練任務(wù),啟動命令的配置如下,其他參數(shù)與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作業(yè),您需要在鏡像中安裝MPIJob和Deepspeed所需的庫。另外,您也可以從DockerHub上獲取Deepspeed官方鏡像,該鏡像已經(jīng)預(yù)裝了MPIJob和Deepspeed所需的庫。
本方案使用系統(tǒng)環(huán)境變量的默認配置,您也可以在啟動命令中配置環(huán)境變量來覆蓋默認配置。更多詳細內(nèi)容,請參見系統(tǒng)環(huán)境變量。
步驟三:查看任務(wù)詳情和日志結(jié)果
任務(wù)提交成功后,在分布式訓(xùn)練(DLC)頁面,單擊任務(wù)的名稱。
在任務(wù)詳情頁面,即可查看任務(wù)的基本信息和執(zhí)行狀態(tài)。
在任務(wù)詳情頁面底部的實例區(qū)域,單擊launcher類型的實例操作列下的日志,查看作業(yè)運行情況。
系統(tǒng)環(huán)境變量
在MPI分布式作業(yè)中,存在Launcher和Worker兩種角色。這兩種角色在訓(xùn)練過程中需要進行通信。在DLC中,針對Launcher角色已經(jīng)設(shè)置了默認環(huán)境變量,您也可以根據(jù)具體場景的需求,在執(zhí)行命令時配置環(huán)境變量以覆蓋默認配置。
環(huán)境變量 | 描述 | 默認值 | 適用場景 |
OMPI_MCA_btl_tcp_if_include | 為Launcher和Worker指定通信的網(wǎng)卡,多個網(wǎng)卡之間使用半角逗號(,)分隔。 | eth0 | 適用于使用mpirun方式啟動作業(yè)。 |
OMPI_MCA_orte_default_hostfile | 為mpirun命令指定hostfile,在PAI-DLC中可以自動生成hostfile,無需手動修改。 |
| |
OMPI_MCA_plm_rsh_agent | 為Launcher指定如何遠程啟動Worker任務(wù)。 |
| |
PDSH_RCMD_TYPE | PDSH的遠程命令類型。 | ssh | 適用于使用DeepSpeed方式啟動作業(yè)。 |