阿里云弹性AI服务 -- 基于Docker和EGS一键创建高性能Tensorflow分布式训练

简介: Tensorflow是目前使用最为广泛的深度学习框架之一,但是目前搭建分布式多机多卡训练比较困难,而且Tensorflow原生的分布式的性能很差。为了解决这个问题,我们创建了一个容器镜像:registry.

一. 概述

Tensorflow是目前使用最为广泛的深度学习框架之一,但是目前搭建分布式多机多卡训练比较困难,而且Tensorflow原生的分布式的性能很差,特别在云计算虚拟化环境下并行的挑战更大。

为了解决这个问题,我们创建了一个容器镜像:registry.cn-beijing.aliyuncs.com/ai_beijing/deep_learning:vx.x.x,目前包含了Tensorflow很新版本v1.6.0-rc0以及NVidia工具系列很新的版本:CUDA v9.0, cuDNN v7.0.5, NCCL v2.1;分布式训练上引入了horovod v0.11.2 + NCCL v2.1作为高性能Tensorflow分布式运行的框架,Horovod是基于MPI的Tensorflow分布式框架,因此也加入了Tensorflow对OpenMPI v3.0.0的支持,Horovod通过调用NCCL做了多机多卡的环形All-Reduce性能优化,分布式训练性能比原生的Tensorflow提高很多;另外通过Docker容器的host网络、不同的ssh登陆端口和免密登陆,为MPI和NCCL提供了高性能的通信通道;该镜像还打入了支持Horovod的性能优化的ResNet-50分布式训练的Demo程序。

本文通过容器服务一键创建EGS训练集群,并通过容器服务的资源编排一键搭建分布式训练环境,并运行性能优化的ResNet-50分布式训练程序获得基于EGS的高性能分布式训练性能。

二. 创建步骤

2.1. 创建集群

进入阿里云首页:https://www.aliyun.com/
在“弹性计算”里打开“容器服务”,点击“管理控制台”,点击侧边栏的"集群"->"创建Swarm集群":
1.png
2.png

“集群名称”填写:tensorflow-cluster,“地域”选择“华北5”(华北5的EGS特惠),网络类型选择“专有网络”,其他的默认:
3.png

2.2. 创建节点

点击“创建节点”,“操作系统”选择“Ubuntu 16.04 64位”,“实例系列”选择“系列III”,“实例类型”选择“GPU计算型gn5”,“实例规格”选择“ecs.gn5-c8g1.4xlarge”(这是双卡实例:2xP100 GPU、vCPU 16核心、Memory 120GB、网络带宽为Ethernet 8Gbps以太网,也可以选择别的实例),“实例数量”自选,至少需要2台,当前创建了4台:
4.png

点击“创建集群”,等待集群创建成功:
5.png
6.png

2.3. 创建应用

点击侧边栏的“应用”,选择刚才创建的集群,点击“创建应用”:
7.png

“应用名称”填“horovod-test”,“部署集群”选刚才创建的集群,点“使用编排模板创建”:
8.png

要创建的支持MPI的Service有2种类型,一种是mpihead作为MPI的头节点,设置网络类型为host:network_mode: host,设置ssh通信端口SSH_PORT为33端口(因为使用host网络,需要不同于默认的22端口),image镜像名填:registry.cn-beijing.aliyuncs.com/ai_beijing/deep_learning:vx.x.x,每个容器使用2块GPU:aliyun.gpu=2,mpihead容器数量为1个:aliyun.scale=1;
另一种是mpinode作为MPI的计算节点,设置网络类型为host:network_mode: host,设置ssh通信端口SSH_PORT为33端口,image镜像名填:registry.cn-beijing.aliyuncs.com/ai_beijing/deep_learning:vx.x.x,每个容器使用2块GPU:aliyun.gpu=2,mpinode容器数量为3个:aliyun.scale=3(根据创建的节点数:1个mpihead+3个mpinode=当前创建的4个EGS节点),点击右下角“创建并部署”:
9.png

点击“查看应用列表”:
10.png
11.png

点击刚创建的应用“horovod-test”进去可以看到“服务列表”里的2个服务mpihead, mpinode都运行正常:
12.png

2.4. 执行单机多卡训练

点击“mpihead”,再点击“远程终端”,进入mpihead容器的控制台,执行ls,在当前目录下,benchmark里有ResNet-50的Horovod分布式代码;start.sh是每次容器拉起来都会执行的脚本,会修改ssh的端口号和启动sshd;hvd-local.sh会执行单机多卡的训练程序;hvd-distribute.sh会执行多机多卡训练程序。先执行./hvd-local.sh 1/2,会执行单机1卡和2卡的训练程序:
14.png

经过100步的训练,双卡训练性能为442.37 images/second:
15.png

2.5. 执行多机多卡训练

点击左侧栏的“节点”,获取当前集群tensorflow-cluster的所有节点的IP地址,填入到hosts文件中:
16.0.png
16.png

编辑当前“远程终端”下的hvd-distribute.sh文件,-np后面填所有的GPU卡数(这里填4台*2卡=8),-npernode后面填每台节点的GPU卡数(这里每台是2卡),执行./hvd-distribute.sh就会运行4机一共8卡的分布式训练:
17.0.png
17.png

经过100步的训练,4机一共8卡训练性能为1701.23 images/second:
18.png

三. 本文Tensorflow多机多卡性能加速比

我们把相关的性能优化都打到docker容器镜像里了,用户可以基于Docker和EGS一键创建高性能Tensorflow分布式训练。本文跑的ResNet-50分布训练,4机一共8块P100比单卡的加速比可以达到7.3倍,多机多卡的并行效率可以达到91.2%。
19.2.png

四. 性能优化的ImageNet真实数据Tensorflow的加速比

上面是基于拟合数据的性能,我们在持续优化基于EGS的Tensorflow分布式训练性能,目前ImageNet真实数据的性能加速比如下,4机一共32块P100 GPU比单卡的加速比可以达到28.9倍,多机多卡的并行效率可以达到90.3%。
20.png

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
目录
相关文章
|
8天前
|
人工智能 弹性计算 算法
一文解读:阿里云AI基础设施的演进与挑战
对于如何更好地释放云上性能助力AIGC应用创新?“阿里云弹性计算为云上客户提供了ECS GPU DeepGPU增强工具包,帮助用户在云上高效地构建AI训练和AI推理基础设施,从而提高算力利用效率。”李鹏介绍到。目前,阿里云ECS DeepGPU已经帮助众多客户实现性能的大幅提升。其中,LLM微调训练场景下性能最高可提升80%,Stable Difussion推理场景下性能最高可提升60%。
124994 215
|
8天前
|
人工智能 程序员
AI程序员入职阿里云
AI程序员入职阿里云
|
8天前
|
人工智能 弹性计算 算法
一文解读:阿里云AI基础设施的演进与挑战
一文解读:阿里云AI基础设施的演进与挑战
|
5天前
|
人工智能 Serverless 异构计算
上海站丨飞天技术沙龙 Serverless + AI 专场开启报名!
"飞天技术沙龙——Serverless 技术实践营"将于2024年5月31日举行,聚焦Serverless在AI中的应用。活动包括演讲、实操,探讨Serverless演进趋势、AI应用开发及降低成本等议题。限额80人,报名审核制,现场还有大奖和证书待您领取。扫描链接<https://summit.aliyun.com/Serverless2024shanghai>报名。
上海站丨飞天技术沙龙 Serverless + AI 专场开启报名!
|
6天前
|
人工智能 云计算
阿里云携手合作伙伴得云AI举办《AI赋能 · 智能革新沙龙》
阿里云与得云AI联合举办了《AI赋能·智能革新沙龙》,探讨云计算和AI前沿技术。
|
8天前
|
人工智能 自然语言处理 JavaScript
阿里云发布 AI 编程助手 “通义灵码”——VSCode更强了 !!
阿里云发布 AI 编程助手 “通义灵码”——VSCode更强了 !!
160 3
|
8天前
|
Java Linux 数据安全/隐私保护
Docker自定义JDK镜像并拉取至阿里云镜像仓库全攻略
Docker自定义JDK镜像并拉取至阿里云镜像仓库全攻略
132 0
|
8天前
|
消息中间件 人工智能 监控
|
8天前
|
数据采集 机器学习/深度学习 人工智能
【AI 生成式】LLM 通常如何训练?
【5月更文挑战第5天】【AI 生成式】LLM 通常如何训练?
|
8天前
|
人工智能 运维 Serverless
【云故事探索】NO1:看森马服饰,在阿里云上如何用AI实现创新?
在数字化转型中,云计算成为企业创新的关键驱动力。森马服饰借助阿里云函数计算,应对新零售挑战,实现业务模式重塑和效率提升。面对AI技术落地的困难,如高成本、长决策周期和复杂运维,森马通过阿里云的Serverless解决方案,快速将AI融入核心业务,优化了从设计到营销的全链条流程。通过函数计算,森马降低了AI项目初期的硬件投入和运维难题,提升了设计师的工作效率,将设计时间从3天缩短到30秒,实现了服装设计和营销的智能化升级。