云上深度学习实践(一)-GPU云服务器TensorFlow单机多卡训练性能实践

简介: 本文将介绍TensorFlow在阿里云GPU云服务器上的单机性能表现,并对单机多卡的性能调优给出了一些建议。

目录
云上深度学习实践(一)-GPU云服务器TensorFlow单机多卡训练性能实践
云上深度学习实践(二)-云上MXNet实践

tensorflow_logo

1 背景
  2015年11月9日,Google发布深度学习框架TensorFlow。Google表示,TensorFlow在设计上尤其针对克服其第一代深度学习框架DistBelief 的短板,灵活、更通用、易使用、更快,而且完全开源。在短短的一年时间内,在GitHub上,TensorFlow就成为了最流行的深度学习项目。
  本文将介绍TensorFlow在阿里云GPU云服务器上的单机性能表现,并对单机多卡的训练性能调优给出了一些建议。

2 使用卷积神经网络进行图像分类
  卷积神经网络(Convolutional Neural Network)是一种前馈神经网络,对于图像处理有非常出色的表现。早在20世纪80年代末,Yann LeCun(曾在多伦多大学跟随深度学习鼻祖Geoffrey Hinton进行博士后研究)作为贝尔实验室的研究员提出了卷积网络技术,并展示如何使用它来大幅度提高手写识别能力。
  2012年,Geoffrey E. Hinton的弟子Alex Krizhevsky在ILSVRC-2012的图像分类比赛中使用2块Nvidia GTX 580 GPU训练的多层神经网络(后来被称为AlexNet)以15.3%的top-5测试错误率摘得冠军。AlexNet包含6000万参数和65万神经节点。
  2014年,Google公司的GoogleNet摘得ILSVRC挑战赛的冠军,将Top5 的错误率降低到6.67%,它是一个22层的卷积神经网络,有500多万个参数。
  VGG,ILSVRC-2014的亚军,Top5 的错误率为7.32%,16层的VGG网络,参数高达1亿3千多万。
  ResNet,ILSVRC’15数据集可以达到3.57%的Top-5错误率,50层的ResNet参数90多万,152层参数230多万。
  InceptionV3,GoogLeNet的升级版,参数不到250万,ILSVRC-2012数据集Top-5错误率可以达到3.5%。
  卷积神经网络在图像分类领域已经取得了非常好的表现,被广泛采用,我们将会使用以上几个主流的卷积神经网络的TensorFlow训练BenchMark在阿里云GN5 GPU云服务器(8卡P100)上进行性能测试,并给出性能调优的一些建议。

3 调优策略
  如何在多GPU机器上获得最优的训练性能是用户非常关心的问题。通常的方法是使用数据并行。也就是说要将模型的多个拷贝放到每个GPU上,将一个batch的数据划分到每个GPU上计算。每个GPU如何获取更新的变量以及返回梯度对最终的性能和扩展性都会有影响。
  针对不同复杂度的网络,会有不同的策略。网络的复杂度体现在变量的数目以及网络的深度,最终会体现在参数传递的数据量和计算量上,对于单机多卡,会更多的考虑变量的规模,这会直接决定训练过程中的通信数据量,从而影响最终的扩展性。
  目前在TensorFlow上对于变量的放置主要有两种策略,一种是Parameter Server,一种是Replicated。
  下面几节会详细介绍这些策略以及相应的使用场景,但在阿里云GPU云服务器上的最佳策略,我们会在后面的数据实测章节通过实验来说明。
3.1 Parameter Server
  这种模式下,梯度的聚合放到参数服务器(Parameter Server)上,参数服务器可以是CPU也可以是GPU,通常会放到CPU上。每个GPU上的训练模型副本都会从参数服务器获取最新的变量并各自更新自己本地的变量。获取变量的方式是使用TensorFlow中的标准显示拷贝。
  一般建议像ResNet、InceptionV3这样的参数规模较小的网络,可以选择参数服务器模式,拷贝的压力不会太大。
3.2 Replicated
  这种模式下,服务器上的每个GPU都有模型的副本和自己的变量。变量的值在获取到完全聚合的梯度后会在本地完成变量的更新。所以在训练开始的时候变量和数据本地都已准备好,可以立即开始前向的计算,后向计算需要汇总说有的GPU计算结果后使用聚合的梯度。
  梯度聚合一般有两种方式:

  1. 使用标准的TensorFlow操作汇总到一个设备上(CPU或者是GPU),然后再将聚合的梯度拷贝回所有的GPU。
  2. 使用NVIDIA的NCCL,具体会在下节阐述。
    一般建议像AlexNet和VGG这样的参数规模比较大的网络使用这种方式,避免使用Parameter Server模式时集中在一个设备上做梯度聚合和变量更新导致出现通信性能瓶颈。

3.3 NCCL
  如上节所述,为了在不同GPU间广播变量和聚合梯度,可以使用TensorFlow的拷贝机制,也可以选择NCCL。
  NCCL(NVIDIA Collective Communications Library)提供了不同GPU间广播和聚合数据的高效通信原语。NCCL会在每个GPU上调度一个协同工作的kernel,这个kernel知道如何最好的利用底层硬件的拓扑(比如可以利用GPUDirect P2P技术或者NVLink)从而选择合理的通信策略,这个kernel会使用GPU上的一个SM(streaming multiprocessor)来完成上述通信工作。
  使用NCCL通常能够带来更高的通信速度,但是并不一定能够加速整体的训练性能。因为尽管NCCL可以有更快的传输数据,但是它会占用一个SM资源,同时会增加L2 Cache的压力,所以在某些场景下可能反而加速效果并不如拷贝机制。比如当GPU数目比较多时可能使用NCCL效果会比较好,但是GPU比较少时,拷贝可能会比较好。我们可以从后面的实测数据分析中看到这个结论。

4 性能实测
  我们在阿里云上的GN5 GPU云服务器(8卡P100)上使用TensorFlow测试了InceptionV3、ResNet50、ResNet152、AlexNet、VGG16几个经典卷积神经网络的用于图像分类模型的训练性能,并使用不同的策略做了比较,具体实测数据如下。
4.1 InceptionV3
Parameter Server(CPU):
1
Parameter Server(GPU):
2
Replicated(NCCL):
3
Replicated(NONE):
4
Replicated(PSCPU):
5
4.2 ResNet50
Parameter Server(CPU):
6
Parameter Server(GPU):
7
Replicated(NCCL):
8
Replicated(NONE):
9
Replicated(PSCPU):
10
4.3 ResNet152
Parameter Server(CPU):
11
Parameter Server(GPU):
12
Replicated(NCCL):
13
Replicated(NONE):
14
Replicated(PSCPU):
15
4.4 AlexNet
Parameter Server(CPU):
16
Parameter Server(GPU):
17
Replicated(NCCL):
18
Replicated(NONE):
19
Replicated(PSCPU):
20
4.5 VGG16
Parameter Server(CPU):
21
Parameter Server(GPU):
22
Replicated(NCCL):
23
Replicated(NONE):
24
Replicated(PSCPU):
25
5 数据分析

  从以上实测数据,我们可以总结出在GN5实例上的性能策略:

  1. InceptionV3和ResNet这样参数规模不是很大的网络,使用CPU做Parameter Server的8卡性能都比较好,另外,使用Replicated策略时,只使用CPU做梯度聚合时的8卡性能最好,甚至比CPU做Parameter Server还好。所以借助CPU集中处理参数更新或者梯度聚合,对于参数规模不大的网络来说,的确具有更好的多卡性能扩展性。
  2. 对于AlexNet和VGG16这样的参数规模比较大的网络,使用Replicated策略的NCCL和PSCPU方式的性能都比较好,不过使用CPU做Parameter Server的效果也不错。当然,对于即将发布的支持NVLink的GN6(V100)GPU云服务来说,相信针对NVLink特别优化的NCCL会有更出色表现,后续我们会在GN6上通过实测来分析验证。
  3. 使用Replicated策略时,NCCL在2卡或者4卡的性能都不是最好的或者是相对较差的,不如拷贝的方式,8卡时往往性能都比较好,这也说明了NCCL在GPU数量较多时的效果会更好一些。

6 总结
  本文通过实测给出了在阿里云GPU云服务器上使用TensorFlow进行单机多卡训练的一些性能调优指南,对于其他网络和框架同样有一定的参考意义,读者可以根据自己框架和网络的特点调整相应参数,从而达到最优的训练性能。

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
1月前
|
存储 缓存 运维
阿里云服务器经济型e与通用算力型u1实例各自性能、适用场景区别及选择参考
在选择阿里云服务器实例规格时,经济型e实例和通用算力型u1实例因其高性价比和广泛适用性,备受个人开发者、中小企业的青睐。在同地域、相同配置的情况下,经济型e和通用算力型u1实例的价格相对于其他实例规格要低一些,很多个人和初创企业用户都会优先考虑选择这两个实例规格的云服务器,那么它们之间有什么区别?各自的性能、适用场景上有何区别?我们应该如何选择呢?本文将详细解析这两款实例的性能特点、适用场景、价格优势及购买建议,帮助用户更好地理解并选择合适的云服务器实例。
152 17
|
4天前
|
存储 运维 资源调度
阿里云服务器经济型e实例解析:性能、稳定性与兼顾成本
阿里云经济型e云服务器以其高性价比、稳定可靠的性能以及灵活多样的配置选项,成为了众多企业在搭建官网时的首选。那么,阿里云经济型e云服务器究竟怎么样?它是否能够满足企业官网的搭建需求?本文将从性能表现、稳定性与可靠性、成本考虑等多个方面对阿里云经济型e云服务器进行深入剖析,以供大家参考选择。
|
5天前
|
存储 人工智能 安全
阿里云服务器五代、六代、七代、八代实例简介及性能提升介绍参考
随着技术的不断进步,阿里云服务器实例也经历了多代升级,从五代实例到最新的八代实例,每一代都在性能、稳定性、能效比等方面取得了显著提升。有的用户由于是初次接触阿里云服务器,所以不是很清楚阿里云服务器五代、六代、七代、八代实例有哪些,它们各自在云服务器性能上有哪些提升。本文将详细介绍阿里云服务器五代、六代、七代、八代实例的特点及性能提升,以供了解及选择。
阿里云服务器五代、六代、七代、八代实例简介及性能提升介绍参考
|
9天前
|
存储 安全 数据安全/隐私保护
阿里云服务器五代、六代、七代、八代实例简介及性能提升介绍
随着技术的不断进步,到2025年,阿里云服务器实例也经历了多代升级,从五代实例到最新的八代实例,每一代都在性能、稳定性、能效比等方面取得了显著提升。有的用户由于是初次接触阿里云服务器,所以不是很清楚阿里云服务器五代、六代、七代、八代实例有哪些,它们各自在云服务器性能上有哪些提升。本文将详细介绍阿里云服务器五代、六代、七代、八代实例的特点及性能提升,帮助用户更好地了解并选择适合自己的云服务器实例。
|
16天前
|
存储 人工智能 网络协议
浅聊阿里云倚天云服务器:c8y、g8y、r8y实例性能详解与活动价格参考
选择一款高性能、高性价比的云服务器对于企业而言至关重要,阿里云推出的倚天云服务器——c8y、g8y、r8y三款实例,它们基于ARM架构,采用阿里自研的倚天710处理器,并基于新一代CIPU架构,通过芯片快速路径加速手段,实现了计算、存储、网络性能的大幅提升。2025年,计算型c8y云服务器活动价格860.65元一年起,通用型g8y云服务器活动价格1187.40元一年起,内存型r8y云服务器活动价格1454.32元一年起。本文将为大家详细解析这三款实例的性能特点、应用场景以及最新的活动价格情况,帮助大家更好地了解阿里云倚天云服务器。
|
10天前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
|
25天前
|
存储 弹性计算 运维
端到端的ECS可观测性方案,助力云上业务安全稳定
本文介绍了云原生时代保障业务系统可靠性的方法和挑战,重点探讨了阿里云ECS在提升业务稳定性、性能监控及自动化恢复方面的能力。文章分为以下几个部分:首先,阐述了业务可靠性的三个阶段(事前预防、事中处理、事后跟进);其次,分析了云上业务系统面临的困难与挑战,并提出了通过更实时的监测和自动化工具有效规避风险;接着,详细描述了ECS实例稳定性和性能问题的解决方案;然后,介绍了即将发布的ECS Lens产品,它将全面提升云上业务的洞察能力和异常感知能力;最后,通过具体案例展示了如何利用OS自动重启和公网带宽自适应调节等功能确保业务连续性。总结部分强调了ECS致力于增强性能和稳定性的目标。
|
1月前
|
存储 分布式计算 安全
阿里云服务器经济型、通用算力型、计算型、通用型各主要实例性能、适用场景对比
在阿里云目前的活动中,云服务器实例规格有几大类,分别是轻量应用服务器、经济型e实例、通用算力型u1实例,第七代计算型c7、通用型g7、内存型r7实例,第八代计算型c8i、通用型g8i、内存型r8i实例,倚天云服务器实例计算型c8y、通用型g8y、内存型r8y实例,不同类型的实例规格,性能和适用场景不同,本文将这些热门实例规格的性能和适用场景全部展示出来,以供大家做对比和选择参考,从而选择出适合自己需求的云服务器实例规格。
|
1月前
|
存储 缓存 安全
阿里云服务器通用算力型u1实例怎么样?实例性能与测评结果参考
本文将通过性能评测、适用场景、特点介绍、实测数据分享以及最新活动价格等多个方面,全方位解析这款云服务器实例,以供用户了解和参考。
|
1月前
|
存储 弹性计算 数据挖掘
阿里云服务器e实例和u1实例有什么区别?ECS经济型和通用算力性能特性及优势详解
阿里云ECS云服务器的经济型e实例和通用算力型u1实例在性能、适用场景和价格上各有优势。e实例适合个人开发者和轻量级应用,性价比高;u1实例则更适合中小企业,提供更稳定的性能和更高的网络带宽。选择时可根据具体需求和预算进行决策。