**
**
参考链接: nvidia官方网站
根据nVidia官方介绍,nVidia出品的支持CUDA的产品有
1、Tesla:用于技术和科学计算
2、Quadro:用于专业可视化
3、NVS:用于商务多屏演示
4、GeForce 和 TITAN:用于游戏娱乐
5、Jetson:用于边缘测AI自主机器
五类产品。
从描述上看,能用于人工智能训练和推理的GPU应该是【Tesla、Quadro、GeForce、TITAN、Jetson】,NVS应该是有多个显示输出接口,以便于商务台式机或笔记本做分屏演示。但是考虑我司的用途,本文档仅对Tesla、GeForce、TITAN等部分系列做对比。
要从众多类型、型号中选出适合公司应用场景的产品,说老实话,还是不那么容易的,因为这个要结合很多实际生产情况而定,比如,是用在训练还是推理上,是做研发测试还是生产环境上,是主要考虑稳定性还是考虑价格等等的因素。
根据我司的实际情况,有两个场景需要用到nVidia GPU资源,一个是『训练』,就是在公司的研发测试上,另一个是『推理』,就是在客户方的生产环境部署。
参考链接:知乎 | 深度学习训练和推理有何不同
训练,就好比我们在学校中学习某个知识或者某项技能一样。人工智能需要完成某项工作,也要接受教育。
没有训练,就不可能会有推理。这很容易讲通,因为我们人类大多时候就是这样获取和使用知识的。正如我们不需要一直围着老师、满架的书架或名牌院校转也能阅读莎士比亚的十四行诗一样,推理并不需要其训练方案中的所有基础设施就能做得很好。
在这篇 “为什么深度学习和神经网络需要GPU? - 知乎” 文章中描述了CPU和GPU的设计区别,基本上解释了为什么在进行深度学习相关业务的时候需要用到GPU,主要是因为它快,快得飞起。
有一个例子我感觉很形象:将CPU比作几个教授,GPU比作很多小学生。当需要进行复杂运算,比如解方程,计算高级函数等等这种操作很显然教授比小学生更出色,当需要进行的计算是简单且大量的四则运算的时候,一个或者几个教授显然比不过成百上千的小学生。而深度神经网络的模型训练就是这种大量的并行的矩阵乘法类似的四则运算,GPU的计算核心和CPU根本就是量级上的差距,而且GPU也更擅长做这类型的计算。
根据不同的深度学习应用场景,又有各种浮点运算精度的区别,比如“单精度,双精度,半精度,混合精度”等等。我司主要业务是针对图像分类,特征识别等(用词可能不太专业),这并非是计算精度要求十分严格的科学计算,如航空航天,医学,核能等领域,所以在“图像识别”这类模型训练中一般采用的是单精度或半精度,或者混合精度。
这些各种精度的运算有什么区别,可以参考 知乎 | 单精度、双精度、多精度和混合精度计算的区别是什么?
还有一个十分重要的参数就是显卡的显存、位宽、显存频率(显存带宽=显存频率x显存位宽/8)。显存就跟主存(内存)差不多,显存带宽就是显存与GPU交换数据的速率。本博文中即将进行对比的几个型号的显卡内存从8GB到40GB不等,显存带宽也由192GB/s到1555GB/s不等。这是个啥概念呢,比如我们的内存,一般大小是8GB到16GB,DDR4的理论带宽是50GB/s到136GB/s左右。
显存越大,就代表等待GPU运算核心处理的数据越多,显存带宽越大,就代表GPU运算核心单位时间内可以拿到数据的能力越大(理论上拿到的数据越多),数据交换越顺畅。
因为在训练中,有大量的素材、中间参数、运算结果等需要存储在显存中,以及运算核心和显存之间在进行着大量的数据交换,所以这个参数也成为深度学习模型训练选择显卡的重要参数了。
俗话说:一分钱一分货。要想获得好的体验,好的效果,那必然是要投入足够的成本的,但是无论是个人还是企业,在研发或者生产过程中都必须要考虑成本(家里有矿的除外),这就需要我们在性能和价格上做好衡量,选择性价比相对最优的方案。
nVidia除了Tesla系列的产品是自己生产加工的(大家称为“公版”)之外,其他系列如GeForce(另外的系列有没有代加工不清楚)都有很多加工厂商。所以根据不同厂商的生产条件如板卡设计,用料等情况的不同,价格和质量都有一些差距。
综上所述,我认为我们在研发测试的训练(推理)场景下可以选择性能较优,价格相对温和的GeForce或TITAN系列的GPU,如TITAN RTX,GeForce RTX 3090、3080Ti等。
根据nVidia官方给出的数据,我整理了一份表格,可以作为参照。(数据不全,有的是因为官方没给出来,可能定位不一样,给出的参考数据有限。)
在选择『训练』用卡的时候,我们主要注意“张量核心、CUDA核心、精度性能、显存、显存带宽、价格(这个价格比较粗糙,只看了京东上较便宜的一家)”这几个参数。
我司之前购买的TITAN RTX性价比还是比较高的,但是当时为啥没买RTX 3090呢,因为那时候3090还没出,买不到。。。如果后期还有采购需求,我会建议考虑GeForce RTX 3090。
推理其实就是将我们研发测试环境训练好的模型部署到生产环境中去进行应用,训练有一个反向传播的过程,因为要不断的调整权重和参数,以达到最好的效果,但是推理则没有反向传播,所以在对硬件的要求上,应该是要低一些的。
举个不太恰当的栗子,我们在学习的时候要到学校去,要在教室,要有课本,要住宿舍等等,学校教室课本宿舍等这些都是硬件条件,但是我们考试或者毕业之后在解题的时候是不需要这些硬件条件的,这就是训练到推理的过程。
所以推理的向前传播可以不同于训练,目的是为了更快,比如推理中会删掉一些增强处理、做蒸馏、用加速库等。
模型训练的时候侧重计算精度,而推理的时候更注重实时性和速度,也就是模型运行的性能。衡量推理整体性能最简单的办法就是吞吐量,也就是运行某个模型时,每秒钟能够处理的图片数量。平均每张图的用时长度就是时延。一般来说,常用的时延单位是毫秒(ms)。
芯片的算力性能常用TOPS衡量,即为在深度学习领域的每秒基础算子操作数。如果将芯片的标称算力作为硬件的衡量标准,那么吞吐量则是软硬件一体化作用的结果,和数据结构、模型结构甚至批量处理的批次大小都有很高的相关性。一般来说,对于同样类型和大小的数据,参数量越少的模型,处理的绝对速度就越快,吞吐量就越大。
nVidia官方给出了Tesla系列部分型号的推理性能数据,参考:NVIDIA 数据中心深度学习产品性能
在生产环境中,除了考虑性能之外,更重要的也要考虑稳定性。因为严格的讲,服务器是7*24h不间断工作的,所以用于服务器环境的GPU也应该具有可靠的稳定性,这点Tesla显然比GeForce或者TITAN表现要好得多。因为根据实践经验,之前在生产环境中使用的GeForce GTX 1080 Ti已经坏了三个了,所以在新的部署环境中,我们选择了Tesla T4这个型号的GPU。
同样,我根据nVidia官方给出的数据,对Tesla部分型号的显卡进行了数据统计。
由此可见,我们选择的Tesla T4这个类型的算力卡性价比也还不错,或者也可以考虑P100和P40这两个类型的产品。但是从价格上看,我个人更偏向于T4。
本人对于深度学习、神经网络,以及GPU硬件都不是很了解,只是在这一年多的接触中耳濡目染,“偷听”到一些名词,然后结合网上找的资料,写出来这篇“自以为是”的博文,所以,如果有不对的地方,欢迎读者批评指正,我本人也会继续学习,希望能自我修正。
关于深度学习的一些名词解释,这个链接进行了描述:深度学习名词解释
原文链接:https://blog.csdn.net/qq_44159782/article/details/117416930
从图上可以看到,nVidia显卡架构是“Tesla(特斯拉)→Fermi(费米) → Kepler(开普勒) → Maxwell(麦克斯韦) → Pascal(帕斯卡) → Volta(伏特) → Turing(图灵) → Amper(安培)[图上没有,因为这个是最新的架构]”这么个路线,都是一些为科学做过突出贡献的历史名人。。。按照这种发展方向,预计不久的将来可能会发布“爱因斯坦”架构。
原文链接:NVIDIA显卡及架构介绍
Tesla(特斯拉)本来是第一代架构,现在发展为数据中心专用GPU型号代名词了。
另外,因为nVidia将产品分类化,有些设计也在慢慢改变,比如专门用于计算的,大家也称之为“计算卡、算力卡”,这种显卡严格意义上已经不能称之为显卡了,因为它已经将图形输出这部分砍掉了,连个显示器接口都没有了,比如Tesla系列。
为什么挖矿大多选用的是GeForce这类的游戏卡呢,个人认为是矿场对于显卡的需求体量还是比较大的,而且是追求算力性能的,在控制成本的前提下,选择算力性能较优的游戏卡,是最好的方案。即使是挖着挖着坏了个把子显卡,换了就是了。而且锻炼个一两年,翻个新就卖二手矿卡,还能赚点。
如果选择Tesla这种专业显卡来挖矿,一个是投入成本高,另一个也不好卖二手的啊,因为用户没那么多。
所以,有的朋友可能需要购买GeForce这类型的显卡,不管是作为深度学习训练还是个人娱乐使用的时候,都要找可靠的渠道购买,最好不要贪便宜,因为保不准就买到了二手矿卡。
我严重怀疑我司之前用的出现故障的GeForce GTX 1080 Ti就是翻新卡,因为更换的时候我看到板子背面有大面积像油一样的东西,后来刷到抖音上电子维修的博主,发现这玩意儿就是焊接用的助焊剂(焊油之类的东西),显然是被修过的。。。
最后,还有一些不错的文章,有兴趣的读者可以参考阅读。
1、深度学习选什么显卡性价比最高?
2、深度学习中GPU和显存分析