【Hello AI】AIACC-ACSpeed体验示例

简介: AIACC-ACSpeed(简称ACSpeed)作为阿里云自研的AI训练加速器,在提高训练效率的同时能够降低使用成本,可以实现无感的分布式通信性能优化。ACSpeed软件包中已为您提供了适配DDP的示例代码,您可以参考本文快速体验使用ACSpeed进行模型分布式训练的过程以及性能提升效果。

AIACC-ACSpeed(简称ACSpeed)作为阿里云自研的AI训练加速器,在提高训练效率的同时能够降低使用成本,可以实现无感的分布式通信性能优化。ACSpeed软件包中已为您提供了适配DDP的示例代码,您可以参考本文快速体验使用ACSpeed进行模型分布式训练的过程以及性能提升效果。

操作步骤

本文以原生DDP的启动方式运行Pytorch_ddp_benchmark.py文件,以模型为resnet50的amp混合精度训练为例,通过适配ACSpeed v1.0.2来体验单机8卡和多机多卡实例类型的分布式训练过程和性能提升效果。

重要在操作前,确保您已创建具有初始Python环境的阿里云GPU实例。

  1. 执行如下命令,安装指定版本的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
  1. 安装和启用ACSpeed。

具体操作,请参见安装和使用AIACC-ACSpeed

  1. 执行如下命令,进入ACSpeed示例代码目录。
cd `python -c "import acspeed; print(acspeed.__path__[0]+'/examples/')"`

说明ACSpeed代码相比原始的DDP基线代码只是增加一行import acspeed,注释掉该代码行,即为原始的DDP基线代码。

  1. 启动训练。

以下示例为单机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

【扫码填写上方调研问卷】

欢迎每位来到弹性计算的开发者们来反馈问题哦~

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
4月前
|
TensorFlow 调度 算法框架/工具
【Hello AI】通过Docker安装并使用cGPU服务
cGPU服务可以隔离GPU资源,实现多个容器共用一张GPU卡。该服务作为阿里云容器服务Kubernetes版ACK(Container Service for Kubernetes)的组件对外提供服务,本文介绍如何通过Docker安装并使用cGPU服务。
|
1月前
|
人工智能
|
1月前
|
人工智能 JSON Ubuntu
树莓派 5 AI 套件(Hailo)示例
树莓派 5 AI 套件(Hailo)示例
72 4
|
19天前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术在文本生成中的应用及代码示例
【8月更文挑战第31天】 本文将介绍AI技术在文本生成领域的应用,包括自然语言处理、机器学习和深度学习等。通过一个简单的Python代码示例,展示如何使用AI技术生成文本。最后,探讨AI技术在文本生成领域的未来发展趋势。
|
2月前
|
人工智能
AI问题之能不能给出一个ALM的应用示例
AI问题之能不能给出一个ALM的应用示例
|
3月前
|
SQL 存储 关系型数据库
AI代码提示工具可用于教学功能示例——MySQL
AI代码提示工具可用于教学功能示例——MySQL
54 0
|
4月前
|
人工智能 JavaScript 前端开发
【AI大模型应用开发】【LangChain系列】0. LangChain框架介绍,实现LangChain的Hello World
【AI大模型应用开发】【LangChain系列】0. LangChain框架介绍,实现LangChain的Hello World
122 0
|
4月前
|
JSON 人工智能 数据库
【AI大模型应用开发】【LangChain系列】1. 全面学习LangChain输入输出I/O模块:理论介绍+实战示例+细节注释
【AI大模型应用开发】【LangChain系列】1. 全面学习LangChain输入输出I/O模块:理论介绍+实战示例+细节注释
162 0
【AI大模型应用开发】【LangChain系列】1. 全面学习LangChain输入输出I/O模块:理论介绍+实战示例+细节注释
|
4月前
|
并行计算 Linux 文件存储
【Hello AI】安装并使用FastGPU-命令行使用说明
用户可以通过FastGPU的命令行,快速地部署云上GPU集群,管理资源的生命周期。还可以便捷地为集群安装深度学习环境,在集群运行代码,查看运行日志以及释放资源。
|
4月前
|
人工智能 弹性计算 固态存储
【Hello AI】AIACC-AGSpeed性能数据
本文展示了AIACC-AGSpeed(简称AGSpeed)的部分性能数据,相比较通过PyTorch原生Eager模式训练模型后的性能数据,使用AGSpeed训练多个模型时,性能具有明显提升。