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性能数据。
好啦!小弹的分享到此为止。我们更欢迎您分享您对阿里云产品的设想、对功能的建议或者各种吐槽,请扫描提交问卷并获得社区积分或精美礼品一份。https://survey.aliyun.com/apps/zhiliao/P4y44bm_8
【扫码填写上方调研问卷】
欢迎每位来到弹性计算的开发者们来反馈问题哦~