AIACC-ACSpeed(簡稱ACSpeed)作為阿里云自研的AI訓練加速器,在提高訓練效率的同時能夠降低使用成本,可以實現無感的分布式通信性能優化。ACSpeed軟件包中已為您提供了適配DDP的示例代碼,您可以參考本文快速體驗使用ACSpeed進行模型分布式訓練的過程以及性能提升效果。
操作步驟
本文以原生DDP的啟動方式運行Pytorch_ddp_benchmark.py文件,以模型為resnet50的amp混合精度訓練為例,通過適配ACSpeed v1.0.2來體驗單機8卡和多機多卡實例類型的分布式訓練過程和性能提升效果。
在操作前,確保您已創建具有初始Python環境的阿里云GPU實例。
執行如下命令,安裝指定版本的PyTorch。
本示例以torch 1.9.1為例。
pip install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio==0.9.1 -f https://download.pytorch.org/whl/torch_stable.html
安裝和啟用ACSpeed。
具體操作,請參見安裝和使用AIACC-ACSpeed。
執行如下命令,進入ACSpeed示例代碼目錄。
cd `python -c "import acspeed; print(acspeed.__path__[0]+'/examples/')"`
說明ACSpeed代碼相比原始的DDP基線代碼只是增加一行
import acspeed
,注釋掉該代碼行,即為原始的DDP基線代碼。啟動訓練。
以下示例為單機8卡和多機多卡模型訓練的啟動命令。其中,單機8卡在ecs.ebmgn7t.32xlarge和ecs.ebmgn6t.24xlarge機型上的提升效果比較顯著。
單機8卡模型
啟動命令
NP=8 ADDR=localhost PORT=6006 model=resnet50 python -m torch.distributed.run --nnodes 1 --node_rank 0 --nproc_per_node ${NP} --master_addr ${ADDR} --master_port ${PORT} Pytorch_ddp_benchmark.py --model ${model} --precision amp
訓練結果
通過原始的DDP基線代碼訓練后,訓練結果如下所示:
8 GPUs -- 1M/8G: p50: 0.073s 440/s p75: 0.073s 438/s p90: 0.073s 437/s p95: 0.073s 436/s
通過ACSpeed代碼訓練后,訓練結果如下所示:
8 GPUs -- 1M/8G: p50: 0.054s 597/s p75: 0.054s 592/s p90: 0.056s 569/s p95: 0.056s 568/s
效果對比
相比較通過原始的DDP基線代碼訓練模型,使用ACSpeed代碼訓練單機8卡模型時性能提升35%,即(597-440)/440=35%。
多機多卡模型
啟動命令
# node0 python -m torch.distributed.run --nnodes 2 --node_rank 0 --nproc_per_node 8 --master_addr <node1_ip> --master_port <port> Pytorch_ddp_benchmark.py --model resnet50 --precision amp # node1 python -m torch.distributed.run --nnodes 2 --node_rank 1 --nproc_per_node 8 --master_addr <node1_ip> --master_port <port> Pytorch_ddp_benchmark.py --model resnet50 --precision amp
訓練結果
通過原始的DDP基線代碼訓練后,訓練結果如下所示:
16 GPUs -- 2M/16G: p50: 0.091s 351/s p75: 0.091s 349/s p90: 0.092s 348/s p95: 0.092s 347/s
通過ACSpeed代碼訓練后,訓練結果如下所示:
16 GPUs -- 2M/16G: p50: 0.071s 449/s p75: 0.072s 442/s p90: 0.073s 436/s p95: 0.074s 432/s
效果對比
相比較通過原始的DDP基線代碼訓練模型,使用ACSpeed代碼訓練多機多卡模型時性能提升27%,即(449-351)/351=27%。
相關文檔
使用AIACC-ACSpeed訓練多個模型時,其性能可顯著提升。如需了解更多機型的性能測試效果,請參見AIACC-ACSpeed性能數據。