【GPU选择指南】绝佳性价比的深度学习解决方案要这么选!
从不到1k的1050 Ti到数万元的Tesla A100显卡,GPU价格的跨度这么大,该从何价位下手?谁才是性价比之王?张量核心、显存带宽、16位能力...参数纷繁复杂,让人头昏眼花。所以此次就要让大家深度了解GPU.
针对不同深度学习架构,GPU参数的选择优先级是不一样的,总体来说分两条路线:
卷积网络和Transformer:张量核心(Tensor Core)>FLOPs(每秒浮点运算次数)>显存带宽>16位浮点计算能力
循环神经网络:显存带宽>16位浮点计算能力>张量核心>FLOPs
下面总结了一张GPU和TPU的标准性能数据,值越高代表性能越好。RTX系列假定用了16位计算,WordRNN数值是指长度<100的段序列的biLSTM性能。
这项基准测试是用PyTorch 1.0.1和CUDA 10完成的。
▲GPU和TPU的性能数据
性价比可能是选择一张GPU最重要的考虑指标。在攻略中,进行了如下运算测试各显卡的性能:
用语言模型Transformer-XL和BERT进行Transformer性能的基准测试。
用最先进的biLSTM进行了单词和字符级RNN的基准测试。
上述两种测试是针对Titan Xp、Titan RTX和RTX2080 Ti进行的,对于其他GPU则线性缩放了性能差异。
借用了现有的CNN基准测试。
用了亚马逊和eBay上显卡的平均售价作为GPU的参考成本。
最后,可以得出CNN、RNN和Transformer的归一化性能/成本比值,如下所示:
▲CNN、RNN和Transformer的每美元性能
在上面这张图中,数字越大代表每一美元能买到的性能越强。可以看出, RTX 2060比RTX 2070,RTX2080或RTX 2080 Ti更具成本效益。
不过,这种考量方式更偏向于小型GPU,且因为游戏玩家不喜欢RTX系列显卡,导致GTX 10xx系列的显卡售价虚高。此外,还存在一定的单GPU偏差,一台有4个RTX 2080 Ti的计算机比两台带8个RTX 2060的计算机性价比更高。
GPU的显存对某些应用至关重要,比如常见的计算机视觉、机器翻译和一部分NLP应用。可能你认为RTX 2070具有成本效益,但需要注意其显存很小,只有8 GB。
不过,也有一些补救办法。
通过16位训练,你可以拥有几乎16位的显存,相当于将显存翻了一倍,这个方法对RTX 2080和RTX 2080 Ti同样适用。
也就是说,16位计算可以节省50%的内存,16位 8GB显存大小与12GB 32位显存大小相当。
搞清楚了参数,还有更眼花缭乱的选项摆在面前:谷歌云、亚马逊AWS、微软的云计算平台都能搞机器学习,是不是可以不用自己买GPU?
英伟达、AMD、英特尔、各种创业公司……AI加速芯片也有不少品牌可选。
面对整个行业的围攻分析了各家平台的优缺点。
英伟达无疑是深度学习硬件领域的领导者,大多数深度学习库都对英伟达GPU提供最佳支持。而AMD的OpenCL没有这样强大的标准库。
软件是英伟达GPU非常强大的一部分。在过去的几个月里,NVIDIA还在为软件注入更多资源。例如,Apex库对PyTorch中的16位梯度提供支持,还包括像FusedAdam这样的融合快速优化器。
如果在数据中心使用CUDA,那么只能使用Tesla GPU而不能用GTX或RTX GPU。
这里特别注意,在选择英伟达的显卡时,一定要区分显卡的类型。NVIDIA主要有三个系列的显卡:GeForce,Quadro,Tesla。
GeForce面向游戏,Quadro面向3D设计、专业图像和CAD等,Tesla面向科学计算。GeForce面向游戏,性能高,但精度低,稳定性比Telsa差很多。毕竟玩游戏的时候如果程序崩了也就丢个存档,但服务器崩了没准挂掉一个公司。
Tesla从诞生之初就瞄准高精度科学计算,所以Tesla严格意义上不是块显卡,是个计算加速卡。(对于不带视频输出的Tesla显卡而言,玩游戏是指望不上的)。
Tesla的设计上双精度浮点数的能力比起Geforce系列强很多,不过从深度学习的角度看,双精度显得不那么重要,经典的AlexNet就是两块GTX580训练出来的。
除了精度,Tesla主要面向工作站和服务器,所以稳定性很好,同时会有很多针对服务器的优化。
综上,如果在大规模集群上进行深度学习研发和部署,Tesla是首选。单机上开发的话,土豪或者追求稳定性高的人请选Tesla,最有性价比且能兼顾日常使用的选择是GeForce.
AMD GPU性能强大但是软件太弱。虽然有ROCm可以让CUDA转换成可移植的C++代码,但是问题在于,移植TensorFlow和PyTorch代码库很难,这大大限制了AMD GPU的应用。
TensorFlow和PyTorch对AMD GPU有一定的支持,所有主要的网络都可以在AMD GPU上运行,但如果想开发新的网络,可能有些细节会不支持。
对于那些只希望GPU能够顺利运行的普通用户,并不推荐AMD。但是支持AMD GPU和ROCm开发人员,会有助于稳定GPU市场价格均势,将使每个人长期受益。
一些人曾经尝试过至强融核(Xeon Phi)处理器,但体验让人失望。英特尔目前还不是英伟达或AMD GPU真正的竞争对手。
至强融核对深度学习的支持比较差,不支持一些GPU的设计特性,编写优化代码困难,不完全支持C++ 11的特性,与NumPy和SciPy的兼容性差。
英特尔曾计划在今年下半年推出神经网络处理器(NNP),希望与GPU和TPU竞争,但是该项目已经跳票。
谷歌TPU已经发展成为一种非常成熟的云端产品。你可以这样简单理解TPU:把它看做打包在一起的多个专用GPU,它只有一个目的——进行快速矩阵乘法。
TPU本身支持TensorFlow,对PyTorch的支持也在试验中。
TPU长时间使用时,却面临着累积成本的问题。TPU具有高性能,最适合在训练阶段使用。在原型设计和推理阶段,应该依靠GPU来降低成本。
总而言之,目前TPU最适合用于训练CNN或大型Transformer,并且应该补充其他计算资源而不是主要的深度学习资源。
亚马逊AWS和Microsoft Azure的云GPU非常有吸引力,人们可以根据需要轻松地扩大和缩小使用规模,对于论文截稿或大型项目结束前赶出结果非常有用。
然而,与TPU类似,云GPU的成本会随着时间快速增长。目前,云GPU过于昂贵,且无法单独使用,建议在云GPU上进行最后的训练之前,先使用一些本地GPU进行原型开发。
有一系列初创公司在生产下一代深度学习硬件。但问题在于,这些硬件需要开发一个完整的软件套件才能具有竞争力。英伟达和AMD的对比就是鲜明的例子。
小结:
总的来说,本地运算首选英伟达GPU,它在深度学习上的支持度比AMD好很多;云计算首选谷歌TPU,它的性价比超过亚马逊AWS和微软Azure。
训练阶段使用TPU,原型设计和推理阶段使用本地GPU,可以帮你节约成本。如果对项目deadline或者灵活性有要求,请选择成本更高的云GPU。
总之,在GPU选择上有3个原则:
1、使用GTX 1070或更好的GPU;
2、购买带有张量核心(Tensor Core)的RTX GPU;
3、在GPU上进行原型设计,然后在TPU或云GPU上训练模型。
针对不同研究目的、不同预算,给出了如下的建议:
高性价比:RTX 2070(高端),RTX 2060或GTX 1060 (6GB)(中低端)
穷人之选:GTX 1060 (6GB)
破产之选:GTX 1050 Ti(4GB),或者CPU(原型)+ AWS/ TPU(训练),或者Colab (丐中丐)
Kaggle竞赛:RTX 2070
计算机视觉或机器翻译研究人员:采用鼓风设计的GTX 2080 Ti,如果训练非常大的网络,请选择RTX Titans
NLP研究人员:RTX 2080 Ti
大规模集群:Tesla系列
已经开始研究深度学习:RTX 2070起步,以后按需添置更多RTX 2070
尝试入门深度学习:GTX 1050 Ti(2GB或4GB显存)
宽泛科技旗下Cloudhin®云轩支持Deep learning和高性能计算服务器定制,针对主要深度学习框架(如TensorFlow、Caffe 2、Theano或Torch)进行了优化和设置,在桌面上即可提供强大的深度学习功能。
Cloudhin®云轩GS4288-P4采用Intel C612最高速芯片组,性能稳定,把握十足。其支持两颗E5-2600 v4/v3(24核48线程),内存最大支持3TB内存。
最高可搭载8个NVIDIA图形处理器,RTX 2080/S/TI、RTX TITAN/V、TESLA T4/P100/V100,均支持按需定制。它可以让你轻松应对分子动力学模拟、排序,生命科学与医疗分析、石油天然气勘探、GPU虚拟化服务器,是复杂模型计算的理想选择。
专业勤修,锐意进取。云轩技术工程师毕业于NVIDIA深度学习研究所,丰富经验,值得信赖。更多定制方案请联系客服,我们将实时响应您的定制需求。