跑深度模型的显卡_不止显卡!这些硬件因素也影响着你的深度学习模型性能

加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注 极市平台 公众号 ,回复 加群,立刻申请入群~

作者:Justin ho

来源:https://zhuanlan.zhihu.com/p/67785062

本文已经作者授权,转载请联系原作者

程序员之于计算机就相当于赛车手对待跑车一样,必须十分熟悉它的每一个部件,明白各自的用途,然后在每一次调教当中充分发挥各部分的潜力,最终才能爆发出最大的性能。本次分享以图像任务训练为例,将从cpu、内存、硬盘、显卡这些方面对算法性能的影响进行逐一分析,配合相应的实验,给出相应的优化建议。笔者为图像算法工程师,因此下面均以图像数据为例,但无需任何图像算法的前置知识,大概只要写过代码的都能理解(首先感谢 老狼 的技术支持,给出了宝贵的建议)

  • 老狼 链接:

    https://www.zhihu.com/people/mikewolfwoo/activities

数据流动路径

假设我们现在有一批图片集放在硬盘当中,待读取进内存送入GPU运算,那么一般会经历以下流程:

  1. cpu发出读取指令,从硬盘中找到图片数据,并存到内存中;

  2. cpu从内存中取出一批数据,转化为numpy array,并作数据预处理/增强操作,如翻转、平移、颜色变换等。处理完毕后送回内存。

  3. cpu内存(后面简称内存)和gpu内存(后面简称显存)各开辟一块缓冲区,内存中的一个batch的数据通过PCIe通道传输到显存当中。

  4. GPU核心从显存中获取数据进行并行计算,计算结果返回至显存中。

  5. 计算好的结果将从显存经过PCIe通道返回到内存。

这5个步骤涉及到几个影响数据传输速度的环节:

  1. 硬盘读取速度;

  2. PCIe传输速度;

  3. 内存读写速度;

  4. cpu频率。

我们首先来说说硬盘。

硬盘

c0629b8d65b3d2bb115a0c499c245b7e.png
9a63f20be4d3e96a5c76ac6bf7196745.png

每秒3565张!为什么mxnet能如此快因为API内部是实现了多线程读图的操作,这也就是影响读图速度的软件的方面,后面再详细讲。

PCIe

内存中的数据通过PCIe总线传输到GPU显存当中,具体PCIe的介绍请参考 老狼 的深入PCI与PCIe之一:硬件篇。如果是单显卡的机器,大部分都能工作在PCIe 3.0 x16带宽下,此时的带宽为15.754GB/s。PCIe各代速率对比如下图,来自百度百科:

  • 深入PCI与PCIe之一:硬件篇 链接:

    https://zhuanlan.zhihu.com/p/26172972

d4403d2096af7614d750e5f405aca71b.png

实际上,由于所有数据预处理的操作都在cpu上执行,因此cpu频率越高,生成图片的速度就越快,这样的差距也在情理之中。当机器拥有多显卡时,cpu喂数据的速度可能会成为整个系统的瓶颈。

内存频率

我们来测试一下在不同内存频率下,opencv读图的速度。内存频率分别设为2133MHz、2400MHz、2666MHz、3000MHz,其它硬件参数同上。

31066bf424cd9775e4d099c35e7695c5.png
图来自wikipedia

从表中看出,即使内存频率低至1866MHz,带宽已经达到15GB/s,已经接近PCIe 3.0 x16的带宽(15.75GB/s),也就是说内存传输数据到显存的时候也能跑满PCIe 3.0 x16的带宽,因此内存带宽远远不是瓶颈。

显卡

有钱就买最贵的就对了(误)。目前市面上许多深度学习装机教程已经对显卡的选择作了非常细致的解释,这里就不作推荐什么价位买什么显卡的重复劳动了,这里聊聊显卡的几项指标(如非特别说明,本文提到的显卡一律指Nvidia的显卡,目前几乎没人用AMD显卡做深度学习,或许未来有)。

  • CUDA核心数

CUDA核心数基本确定了一张显卡的算力,当前服务器级别算力最强的Tesla V100显卡拥有高达5120个cuda核心;工作站级别最强的RTX 8000显卡以及TITAN系列最强的RTX TITAN,CUDA数为4608个;而当前桌面级别最强的RTX2080ti,拥有4352个CUDA核心(很快这些当前最强就会变成老爷车了)。核心数越多意味着执行并行计算的量就更多。详细的显卡规格对比可以参考维基百科:List of Nvidia graphics processing units

  • 内存颗粒

最新几代的显存颗粒类型分别有GDDR5X(1080ti)、GDDR6(2080ti)、HBM、HBM2(V100),对应的带宽如下表:

c5ec91af77a207e191fd7022665d98dc.png

由FP32转换成FP16计算,能够减少一半的显存使用量,运算时的吞吐量大大增加。实际上,拥有640个tensorcore的V100,吞吐量是P100的12倍(详见nvidia的tensor core介绍文档)。

  • nvidia的tensor core介绍文档 链接:

    https://images.nvidia.com/content/volta-architecture/pdf/volta-architecture-whitepaper.pdf

我们来看看几款显卡的tensor core数量:

1318a5c0a0f22b03bde3fe25f86ed009.png
手动整理的表格,数据来自英伟达官网和GPU-L

当前单精度和半精度浮点算力最高的是RTX Titan,而算力紧追其后的是Tesla V100和Titan V,但这两款的核心数和显存均是最高。更大的显存意味着每次输入数据的batch size可以更大,以及在GAN应用中可以生成更大分辨率的图片。如果用于高精度的科学计算,Tesla V100和Titan V是最佳选择。如果要考虑性价比,那无疑是2080ti最佳。

为什么服务器级别的Tesla卡在算力上与桌面级、工作站级的显卡相差无几,价格却差这么大呢了上面的双精度算力最高之外,笔者认为还有以下因素——nvlink、nvswitch。

  • nvlink

0584d63b03fe586f58e5d97d6e80c8df.png
来源于英伟达官网

先看左图,有了nvlink,GPU与GPU之间的通信不需要再通过CPU,直接通过nvlink通信,双向带宽高达100GB/s(nvlink 2.0)。右图是单服务器双路CPU及8路GPU的架构,两个CPU分别对应4个GPU,当其中一组GPU需要向另一组GPU进行通信时,以往同样只能先通过PCIe传输到CPU,然后再通过QPI通道(带宽为25.6GB/s)传输到另一个CPU,最后再通过PCIe送进另一组GPU。而nvlink支持跨CPU节点的直接通信,V100每个GPU有6条nvlink通道,总带宽高达300GB/s。

但从上图可以看到,即使每个GPU拥有6条nvlink通道,仍然无法做到“全连接”(即任意两个GPU之间存在双向通道)。这就引出了下一个更加疯狂的技术:nvswitch。

  • nvswitch

54fc48f294c95e00f341790869e87937.png
图来源于nvidia官网

nvidia官网介绍视频的这两张图很好地介绍了两者之间的区别。下图一个主板上的8块GPU通过6块nvswitch芯片与另一块主板上的任意一块GPU进行通信,使得8对GPU能够同时以300GB/s的速度进行通信,实现16个GPU全连接。除此之外,nvswitch还能使得整个服务器作为一块拥有0.5TB显存、2PetaFLOPS算力的“大显卡”使用。

那么为什么V100敢卖这么贵(约8万RMB一张)strong>因为只有V100的nvlink和nvswitch是满血的,2080ti虽然也能使用nvlink,但速度被老黄砍了一刀。而且目前实现nvswitch的DGX2机器也只有V100的选项,因此这只能是土豪们的玩物。

-End-

*延伸阅读

  • AI初识:深度学习模型评估,从图像分类到生成模型

  • 活动 | 加入极市原创作者行列,实现一个小目标

  • 深度学习中的Normalization模型


CV细分方向交流群

添加极市小助手微信(ID : cv-mart),备注:研究方向-姓名-学校/公司-城市(如:目标检测-小极-北大-深圳),即可申请加入目标检测、目标跟踪、人脸、工业检测、医学影像、三维&SLAM、图像分割等极市技术交流群(已经添加小助手的好友直接私信),更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流,一起来让思想之光照的更远吧~

a15d7f3ee6da7f70ae0fbbb2b3032169.png

△长按关注极市平台

觉得有用麻烦给个在看啦~   9cb5b06064a0d06d6eb9e89b36a4121b.gif

相关资源:竞业达电子监考系统.zip_竞业达SIP服务器-网管软件文档类资源…

来源:weixin_39830303

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年10月20日
下一篇 2020年10月20日

相关推荐