当前位置: 首页 > 科技观察

深度学习GPU最全面对比,谁才是性价比之王?

时间:2023-03-19 01:26:34 科技观察

搞AI,谁没有“GPU困惑”?张量核心、显存带宽、16位能力……各种繁杂的GPU参数让人眼花缭乱,该如何取舍?从不到千元的1050Ti到近3万元的TitanV,GPU价格跨度如此之大,该从何入手?谁才是性价比之王?让GPU执行不同的任务,最佳选择也会随之改变。将其用于计算机视觉与进行NLP不同。而且,用云TPU和GPU可以吗?而在处理任务时本地GPU应该如何分配才能省钱呢?什么是最合适的AI加速设备?现在,为了帮助您找到最合适的人选,华盛顿大学博士。学生TimDettmers将比较浓缩为实用指南,同时考虑了最新的模型和硬件。谁能在众多GPU中脱颖而出?评估后将立即公布。文末还有一个特别精简的GPU选购建议,欢迎围观。对于不同的深度学习架构,最重要的参数是不同的。GPU参数选择的优先级不同。一般来说,卷积网络和Transformer有两条路线:张量核>FLOPs(每秒浮点运算)>显存带宽>16位浮点计算能力循环神经网络:显存带宽>16位浮点计算能力>tensorcore>FLOPs这种排序背后有一套逻辑,下面会详细解释。在明确哪个GPU参数对速度特别重要之前,让我们先看看两个最重要的张量运算:矩阵乘法和卷积。举个栗子🌰,以运算矩阵乘法A×B=C为例,将A和B复制到显存比直接计算A×B消耗更多的资源。也就是说,如果您想使用LSTM等来处理具有大量小矩阵乘法的递归神经网络,内存带宽是GPU最重要的属性。矩阵乘法越小,内存带宽就越重要。相反,卷积运算更受计算速度的制约。因此,要衡量运行ResNets等卷积架构的GPU的性能,最好的指标就是FLOPs。张量核可以显着增加FLOP。Transformer中使用的大矩阵乘法介于卷积运算和RNN的小矩阵乘法之间。16位存储、tensorcore和TFLOPs适用于大型矩阵乘法,但它仍然需要较大的内存带宽。需要特别注意的是,如果要发挥tensorcore的优势,必须使用16位数据和权重,避免使用RTX显卡进行32位运算!下面Tim总结了一个GPU和TPU的标准性能数据。值越高,性能越好。RTX系列假设使用16位计算,WordRNN值指的是长度<100的段序列的biLSTM性能。这个benchmark是用PyTorch1.0.1和CUDA10做的。△GPU和TPU的性能数据成本分析成本性能可能是选择GPU最重要的考虑因素。在指南中,我执行了以下计算来测试每张显卡的性能:使用语言模型Transformer-XL和BERT对Transformer性能进行基准测试。使用最先进的biLSTM对词级和字符级RNN进行基准测试。上面的两个测试是针对TitanXp、TitanRTX和RTX2080Ti进行的,其他GPU的性能差异呈线性缩放。借鉴现有的CNN基准。显卡在亚马逊和易趣上的平均售价被用作GPU的参考成本。最后可以得到CNN、RNN、Transformer的归一化性能/成本比如下:更强。可以看出RTX2060的性价比比RTX2070、RTX2080或RTX2080Ti都要高,甚至比TeslaV100的性价比高出5倍以上。因此,本轮性价比之王已经确定,毫无疑问是RTX2060。不过,这种思路更倾向于小GPU,而且由于游戏玩家不喜欢RTX系列显卡,因此RTX2060的价格GTX10xx系列显卡充气了。此外,也存在一些单GPU偏差,一台配备四个RTX2080Ti的计算机比两台配备八个RTX2060的计算机更具成本效益。所需的显存和16位训练GPU的显存对于一些应用来说是至关重要的,比如常见的计算机视觉、机器翻译和一些NLP应用。也许你觉得RTX2070性价比高,但你要知道它的内存很小,只有8GB。但是,有一些补救措施。通过16位的训练,几乎可以拥有16位的显存,相当于显存增加一倍。此方法同样适用于RTX2080和RTX2080Ti。也就是说,16位运算可以节省50%的内存,16位8GB显存的大小相当于12GB32位显存的大小。云端还是本地?TPU还是GPU?弄清楚参数后,摆在我们面前的选择就更加眼花缭乱了:谷歌云、亚马逊AWS、微软的云计算平台都可以搞机器学习。不自己买GPU可以吗?Nvidia、AMD、Intel,各种初创公司……也有很多品牌的AI加速芯片可以选择。面对整个行业的围攻,蒂姆分析了各个平台的优缺点。NvidiaNvidia无疑是深度学习硬件的领导者,大多数深度学习库对NvidiaGPU的支持最好。AMD的OpenCL没有这么强大的标准库。软件是NvidiaGPU非常强大的部分。NVIDIA在过去几个月也一直在向该软件投入更多资源。例如,Apex库在PyTorch中提供了对16位梯度的支持,还包括像FusedAdam这样的融合快速优化器。但是Nvidia现在有一个非常作弊的政策。如果在数据中心使用CUDA,则只能使用TeslaGPU,不能使用GTX或RTXGPU。由于法律问题,研究机构和大学经常被迫购买成本效益较低的TeslaGPU。然而,Tesla与GTX和RTX相比并没有真正的优势,而且价格要贵10倍。AMDAMDGPU性能强大,但软件太弱。虽然有可以将CUDA转换为可移植C++代码的ROCm,但问题是TensorFlow和PyTorch代码库难以移植,极大地限制了AMDGPU的应用。TensorFlow和PyTorch对AMDGPU有一定的支持,所有主流网络都可以在AMDGPU上运行,但是如果要开发新的网络,有些细节可能不支持。对于只想让GPU流畅运行的普通用户,Tim并不推荐AMD。但支持AMDGPU和ROCm开发者将有助于对抗Nvidia的垄断,从长远来看将使所有人受益。IntelTim尝试了XeonPhi处理器,但体验令人失望。英特尔目前还不是Nvidia或AMDGPU的真正竞争对手。XeonPhi对深度学习的支持相对较差,不支持部分GPU设计特性,难以编写优化代码,不完全支持C++11的特性,对NumPy和SciPy的兼容性较差。英特尔原计划在今年下半年推出神经网络处理器(NNP),希望与GPU和TPU竞争,但该项目一直被推迟。GoogleGoogleTPU已经发展成为非常成熟的云端产品。您可以将TPU简单地想象成这样:将它想象成多个专门的GPU组合在一起,目的只有一个——进行快速矩阵乘法。如果您查看具有张量核心的V100GPU与TPUv2的性能指标,您会发现两个系统的性能几乎相同。TPU本身支持TensorFlow,对PyTorch的支持也在测试中。TPU在训练大型TransformerGPT-2方面取得了巨大成功,BERT和机器翻译模型也可以在TPU上进行高效训练,比GPU快约56%。但TPU并非没有问题。一些文献指出在TPUv2上使用LSTM不收敛。TPU在长期使用时也面临着成本累积的问题。TPU性能高,最好用在训练阶段。在原型设计和推理阶段,应该依靠GPU来降低成本。总而言之,TPU目前最适合训练CNN或大型Transformer,应该补充其他计算资源而不是主要的深度学习资源。Amazon和MicrosoftCloudGPUAmazonAWS和MicrosoftAzure的云GPU非常有吸引力,人们可以根据需要轻松地扩大和缩小使用规模,这对于在论文截止日期或大型项目结束前赶成果非常有用.然而,与TPU类似,云GPU的成本会随着时间的推移而快速增长。目前,云GPU单独使用太昂贵,Tim建议在对云GPU进行最终训练之前使用一些便宜的GPU进行原型设计。初创公司的AI硬件有许多初创公司生产下一代深度学习硬件。但问题是这些硬件需要开发一套完整的软件套件才能具有竞争力。Nvidia和AMD之间的对比就是一个鲜明的例子。总结总的来说,NvidiaGPU是本地计算的首选,对深度学习的支持比AMD好很多;谷歌TPU是云计算的首选,性价比超过亚马逊AWS和微软Azure。在训练阶段使用TPU,在原型设计和推理阶段使用本地GPU可以帮助您节省成本。如果您对项目期限或灵活性有要求,请选择成本较高的云GPU。最终建议简而言之,在GPU的选择上遵循三个原则:1.使用GTX1070或更好的GPU;2.购买张量核心的RTXGPU;3.在GPU上做原型,然后用TPU或者cloud在GPU上训练模型。针对不同的研究目的和不同的预算,Tim给出了以下建议:最佳GPU:RTX2070避免的坑:所有Tesla、Quadro、FoundersEdition(创始人版)显卡,以及TitanRTX、TitanV、TitanXP成本-有效:RTX2070(高端)、RTX2060或GTX1060(6GB)(低端)穷人的选择:GTX1060(6GB)破产选择:GTX1050Ti(4GB),或CPU(原型)+AWS/TPU(训练),或者ColabKaggle竞赛:RTX2070ComputerVisionorMachineTranslationResearcher:GTX2080TiwithBlastdesign,如果训练非常大的网络,选择RTXTitansNLPResearcher:RTX2080Ti已经开始研究深度学习:从RTX2070开始,并在未来根据需要添加更多RTX2070尝试开始深度学习:GTX1050Ti(2GB或4GB显存)