时代变了大人:RTX3090时代,哪款显卡配得上我的炼丹炉?

机器之心报道

机器之心编辑部

在9月2日RTX30系列发布时,英伟达宣传了新显卡在性能上和效率上的优势,并称安培可以超过图灵架构一倍。但另一方面,除了3090之外,新一代显卡的显存看起来又有点不够。在做AI训练时,新一代显卡效果究竟如何?

近日,曾经拿到过斯坦福、UCL、CMU、NYU、UW博士offer、目前在华盛顿大学读博的知名评测博主TimDettmers发布了一篇新文章,就深度学习从业者如何选择GPU发表了他的看法。

众所周知,深度学习是一个很吃算力的领域,所以,GPU选得好不好直接决定了你的炼丹体验。那么,哪些指标是你在买GPU时应该重视的呢?RAM、core还是tensorcore?如何做出一个高性价比的选择?文本将重点讨论这些问题,同时指出一些选购误区。

RTX3070打2080Ti,这是真的吗?不少人已经被这样一张性能对比图「改变了信仰」。

选择GPU时你需要知道的东西

在选购GPU之前,你需要知道一些指标在深度学习中意味着什么。

首先是TensorCore,它可以让你在计算乘法和加法时将时钟周期降至1/16,减少重复共享内存访问,让计算不再是整个流程中的瓶颈(瓶颈变成了获取数据的速度)。现在安培架构一出,更多的人可以用得起带TensorCore的显卡了。

在一些案例中,我们可以体验到TensorCore的强大,它是如此之快,以至于总是在等内存传来的数据——在BERTLarge的训练中,TensorCore的TFLOPS利用率约为30%,也就是说,70%的时间里TensorCore处于空闲状态。这意味着在比较两个具有TensorCore的GPU时,最重要的单一指标就是它们的内存带宽。A100的内存带宽为1555GB/s,而V100的内存带宽为900GB/s,因此A100与V100的加速比粗略估算为1555/900=1.73x。

我们预计两代配备TensorCore的GPU架构之间的差异主要在于内存带宽,其他提升来自共享内存/L1缓存以及TensorCore中更好的寄存器使用效率,预估的提升范围约在1.78-1.87倍之间。

在实际应用中,通过,TeslaA100的并联效率又要比V100提升5%。我们可以根据英伟达提供的直接数据来估算特定深度学习任务上的速度。与TeslaV100相比,A100的速度提升是:

SE-ResNeXt101:1.43倍

MaskedR-CNN:1.47倍

Transformer(12层机器翻译,在WMT14en-de数据集上):1.70倍

看来对于计算机视觉任务来说,新架构的提升相对不明显。这可能是因为小张量尺寸、准备矩阵乘法所需的运算无法让GPU满负载。也可能是由于特定架构(如分组卷积)导致的结果。在Transformer上,预估的提升和实际跑起来非常接近,这可能是因为用于大型矩阵的算法非常简单,我们可以使用这些实际效果来计算GPU的成本和效率。

当然,在发布会中英伟达着重指出:安培架构在稀疏网络的训练当中速度提升了一倍。稀疏训练目前应用较少,但是未来的一个趋势。安培还带有新的低精度数据类型,这会使低精度更加容易,但不一定比以前的GPU更快。

英伟达花费大量精力介绍了新一代RTX3090的风扇设计,它看起来很好,但并联起来效果如何还要打上问号。在任何情况下水冷都是效果更好的方案,如果想要并联4块GPU,你需要注意水冷的解决方案——它们可能会体积过大。解决散热问题的另一种方法是购买PCIe扩展器,并在机箱内原先不可能的位置放GPU。这非常有效,华盛顿大学的其他博士研究生和作者本人使用这种方法都取得了成功。它看起来不漂亮,但是可以让你的GPU保持凉爽!

4块RTX2080Ti创始版GPU的装法:虽然看起来乱作一团,但用了两年没出问题。

还有电源问题,RTX3090是一个3插槽GPU,因此在采用英伟达默认风扇设计的情况下,你不能在4x的主板上使用它。这是合情合理的,因为它的标准功率是350W,散热压力也更大。RTX3080的320WTDP压力只是稍稍小一点,想要冷却4块RTX3080也将非常困难。

在4xRTX3090的情况下,你很难为4x350W=1400W的系统找到很好的供电方式。1600W的电源或许可以,但最好选择超过1700W的PSU——毕竟黄仁勋在发布中希望你给单卡的RTX3080装上700W的电源。然而目前市面上并没有超过1600W的台式电脑电源,你得考虑服务器或者矿机PSU了。

GPU深度学习性能排行

下图展示了当前热门的Nvidia显卡在深度学习方面的性能表现(以RTX2080Ti为对比基准)。从图中可以看出,A100(40GB)在深度学习方面表现最为强劲,是RTX2080Ti两倍还多;新出的RTX3090(24GB)排第二,是RTX2080Ti的1.5倍左右。但比较良心的是,RTX3090的价格只涨了15%。

每一美元能买到多少算力?

排在天梯图顶端的显卡确实是香,但普通人更关心的还是性价比,也就是一块钱能买到多少算力。在讨论这个问题之前,先来看一下各种任务的大致内存需求:

使用预训练transformer和从头训练小型transformer:=11GB;

训练大型transformer或卷积网络:=24GB;

原型神经网络(transformer或卷及网络):=10GB;

Kaggle比赛:=8GB;

应用计算机视觉:=10GB。

下图是根据各种GPU在亚马逊、eBay上的价格和上述性能排行榜算出的「每一美元的GPU性能」:

图3:以RTX3080为基准(设为1),各种GPU的每一美元性能排行(1-2个GPU)。

图4:以RTX3080为基准(设为1),各种GPU的每一美元性能排行(4个GPU)。

图5:以RTX3080为基准(设为1),各种GPU的每一美元性能排行(8个GPU)。

GPU购买建议

这里首先强调一点:无论你选哪款GPU,首先要确保它的内存能满足你的需求。为此,你要问自己几个问题:

我要拿GPU做什么?是拿来参加Kaggle比赛、学深度学习、做CV/NLP研究还是玩小项目?

为了实现我的目标,我需要多少内存?

使用上述成本/性能图表来找出最适合你的、满足内存标准的GPU;

我选的这款GPU有什么额外要求吗?比如,如果我要买RTX3090,我能顺利地把它装进我的计算机里吗?我的电源瓦数够吗?散热问题能解决吗?

针对以上问题,作者给出了一些自己的建议:

什么情况下需要的内存=11GB?

上面说过,如果你要使用预训练transformer或从头训练小型transformer,你的内存至少要达到11GB;如果你要做transformer方向的研究,内存最好能达到24GB。这是因为,之前预训练好的那些模型大多都对内存有很高的要求,它们的预训练至少用到了11GB的RTX2080Ti。因此,小于11GB的GPU可能无法运行某些模型。

除此之外,医学影像和一些SOTA计算机视觉模型等包含很多大型图像的任务(如GAN、风格迁移)也都对内存有很高的要求。

总之,多留出来一些内存能让你在竞赛、业界、研究中多一丝从容。

什么情况下<11GB的内存就够用了?

RTX3070和RTX3080性能都很强大,就是内存有点小。但在很多任务中,你确实不需要那么大的内存。

如果你想学深度学习,RTX3070是最佳选择,因为把模型或输入图像缩小一点就能学到大部分架构的基本训练技巧。

对于原型神经网络而言,RTX3080是迄今为止性价比最高的选择。在原型神经网络中,你想用最少的钱买最大的内存。这里的原型神经网络涉及各个领域:Kaggle比赛、为初创公司开拓思路/模型、以及用研究代码进行实验。RTX3080是这些场景的最佳选择。

假设你要领导一个研究实验室/创业公司,你可以把66-80%的预算投到RTX3080上,20-33%用于推出带有强大水冷装置的RTX3090。这是因为,RTX3080性价比更高,而且可以通过一个slurm集群设置作为原型机共享。由于原型设计应该以敏捷的方式完成,所以应该使用更小的模型和更小的数据集,RTX3080很适合这一点。一旦学生/同事有了一个很棒的原型模型,他们就可以在RTX3090机器上推出该模型并将其扩展为更大的模型。

建议汇总

总之,RTX30系列是非常强大的,值得大力推荐。选购时还要注意内存、电源要求和散热问题。如果你在GPU之间有一个PCIe插槽,散热是没有问题的。否则,RTX30系列需要水冷、PCIe扩展器或有效的鼓风机卡。

作者表示,他会向所有买得起RTX3090的人推荐这款GPU,因为在未来3-7年内,这是一款将始终保持强大性能的显卡。他认为,HBM内存在未来的三年之内似乎不会降价,因此下一代GPU只会比RTX3090的性能提升25%左右。未来5-7年有望看到HBM内存降价,但那时你也该换显卡了。

对于那些算力需求没那么高的人(做研究、参加Kaggle、做初创公司),作者推荐使用RTX3080。这是一个高性价比的解决方案,而且可以确保多数网络的快速训练。

RTX3070适合用来学深度学习和训练原型网络,比RTX3080便宜200美元。

如果你觉得RTX3070还是太贵了,可以选择一个二手RTX2070。现在还不清楚会不会有RTX3060,但如果你确实预算有限,可以选择再等等。

GPU集群建议

GPU集群的设计高度依赖于你的应用场景。对于一个+1024GPU的系统,网络是最重要的;但如果用户的系统一次只用32个GPU,那大手笔投资网络基础设置就是一种浪费。

一般情况下,RTX显卡被禁止通过CUDA许可协议接入数据中心,但通常高校例外。你可以与英伟达取得联系,以寻求豁免。

如果你被允许使用RTX显卡,作者推荐使用装有RTX3080或RTX3090的标准Supermicro8GPU系统(如果散热没问题的话)。一小组8xA100节点就可以保证原型的rollout,特别是在无法保证8xRTX3090服务器能够有效冷却的情况下。在这种情况下,作者推荐使用A100,而不是RTX6000/RTX8000,因为A100性价比很高,也颇有潜力。

如果你想在GPU集群上训练非常大的网络,作者推荐装备了A100的NVIDIADGXSuperPOD系统。在+256GPU的规模下,网络变得非常重要。如果你想扩展到256个GPU以上,你就需要一个高度优化的系统。

如果到了+1024GPU的规模,市场上唯一有竞争力的方案就只剩下GoogleTPUPod和NVIDIADGXSuperPod。在这个级别上,作者更推荐GoogleTPUPod,因为它们定制的网络基础设施似乎优于NVIDIADGXSuperPod系统,尽管两个系统非常接近。

与TPU系统相比,GPU系统可以为深度学习模型和应用提供更大的灵活性,但TPU系统也有优势,它可以支持更大的模型并提供更好的扩展。

这些GPU别买

不建议买RTXFoundersEdition(任何一个)或RTXTitan,除非你有PCIec扩展器能解决散热问题。

不建议买TeslaV100或A100,因为性价比不高,除非你被逼无奈或者想在庞大的GPU群集上训练非常大的网络。

不建议买GTX16系列,这些卡没有张量核心,因此在深度学习方面性能较差,不如选RTX2070/RTX2060/RTX2060Super。

什么时候不要入手新的GPU?

如果已经拥有RTX2080Ti或更好的GPU,升级到RTX3090可能没什么意义。相比于RTX30系列的PSU和散热问题,性能提升所带来的好处有些微不足道。从4xRTX2080Ti升级到4xRTX3090的唯一原因可能是,在做Transformer或其他高度依赖算力去训练网络的研究。

如果你有一个或多个RTX2070GPU,这也已经相当不错了。但如果常常受到8GB内存的限制,那么转让这些再入手新的RTX3090是值得的。

一言以蔽之,如果内存不够,升级GPU还是很有意义的。

GPU相关疑难问题解答

用户关于GPU肯定有很多不了解甚至是误解的地方,本文作者做出了以下相关问答总结,主要涉及、RTX3090/3080以及NVLink等等。

我需要吗?

一般来说不需要。如果你有一个GPU集群,那么拥有棒极了。如果你有一个8xGPU机器,那么拥有也挺好的。但除此之外,就没什么用。

可以实现更好的并行化处理以及更快的数据传输。但是数据传输不会成为任何应用中的瓶颈。在计算机视觉领域,数据存储可以成为数据传输pipeline的瓶颈,但从CPU到GPU的PCle传输却不会成为瓶颈。

所以对于大多数人来说,是没有必要的。在4个GPU设置下,只能实现1%-7%的并行化提升。

我需要8x/16xPCle通路吗?

与一样,一般来说不需要。

在4x通路上运行GPU就挺好的,特别是当你只有2个GPU时。在4个GPU设置下,作者倾向于每个GPU上有8x通路,但如果你在全部4个GPU上进行并行化处理,则在4x通路上运行可能仅降低大约5%-10%的性能。

如果4xRTX3090每个都占用3个PCle插槽,如何把它们塞进机箱?

你需要一个双插槽变体或者尝试使用PCle扩展器。除了空间外,还应该考虑冷却和合适的PSU。所以最可行的解决方案是获取带有自定义水冷回路的4xRTX3090EVGAHydroCopper。

PCle扩展器或许也可以同时解决空间和冷却问题,但你需要确保有足够的空间来扩展GPU。

我可以使用多个不同型号的GPU吗?

当然可以。

也许你想要使用多个不同型号的GPU的原因是:想要利用旧的GPU。这种情况下正常运行是没问题的,但这些GPU上的并行化处理将会非常低效,因为速度最快的GPU需要等待最慢的GPU来赶上一个同步点(通常是梯度更新)。

什么是NVLink,它有用吗?

一般来说没有用。NVLink是GPU之间的高速互连,当你拥有一个配备128个GPU以上的GPU集群时,它才有用。否则相较于标准PCle传输来说,NVLink几乎没有任何益处。

即使是最便宜的GPU,我也买不起,怎么办?

买二手GPU也没问题。二手的RTX2070(400美元)和RTX2060(300美元)都很棒,如果还是买不起,可以试试二手的GTX1070(220美元)或GTX1070Ti(230美元),以及GTX980Ti(6GB,150美元)或GTX1650Super(190美元)。

实在不行,你还可以薅羊毛,去使用免费的GPU云服务。这种通常会有时间、账户等限制,超过之后需要付费。那么,就在不同账户之间切换使用吧,直到你买得起GPU。

如何跨计算机并行化?

这样的话,需要+50Gbits/s的网卡才能加快速度,之前作者写过一篇文章专门论述这件事()。现在的建议是至少要上EDRInfiniband,也就是至少50GBit/s带宽的网卡,价格大概在500美元左右。

我需要一块英特尔CPU来支持多GPU设置吗?

不建议使用英特尔CPU,除非你要在Kaggle竞赛中大量使用CPU。即便如此,使用AMDCPU也很棒。就深度学习而言,AMDCPU通常比IntelCPU更便宜且更好。

对于内置的4xGPU,作者的首选是Threadripper。在大学期间作者曾使用Threadripper搭建了数十个系统,它们都运行良好。对于8xGPU系统,CPU和PCIe/系统的可靠性比直接的性能或性价比更重要。

我要等等RTX3090Ti吗?

首先,我们不确定会不会有RTX3080Ti/RTX3090Ti/RTXAmpereTitan。

GTXXX90的名称通常会留给双GPU卡,现在英伟达算是打破了这个规则。从价格和性能上看,RTX3090似乎取代了RTX3080Ti。

电脑机箱的设计对于散热是否重要?

并不。

如果GPU之间存在间隙的话,通常能够很好地冷却。机箱的设计会带来1-3摄氏度的效果提升,但GPU之间的空间将带来10-30摄氏度的效果提升,所以说只要GPU之间留有空间,散热就不成问题。但如果GPU之间没有空间,则需要好的散热器设计(风扇)和其他解决方案(水冷、PCIe扩展)。

总而言之,散热与机箱设计和机箱风扇都没关系。

AMDGPU+ROCm是否会赶上NVIDIAGPU+CUDA?

在未来1到2年内不会。这个问题分三方面:张量核心、软件和社区。

就纯硅芯片来说,AMD的GPU非常优秀:出色的FP16性能和内存带宽。但与英伟达GPU相比,在缺少张量核心或等效条件下,AMD的深度学习性能更差。大量的低精度数学运算也未能解决这个问题。达不到这种硬件功能,AMDGPU将永远无法与之竞争。有传言表明,一些与张量核心等效的AMD数据中心卡计划于2020年推出,但估计很少有人会买吧。

即便假设AMD将来会推出类似张量核心的硬件功能,但很多人也会说:「可是没有适用于AMDGPU的软件,我该如何使用它?」这里存在一些误解,AMDROCm平台日渐成熟,并且对PyTorch也实现了原生支持,大可不必担心。

如果你解决了软件和不具有张量核心的问题,还会意识到另外一个问题:AMD的社区不成熟。如果你在使用英伟达GPU时遇到了什么问题,可以Google一下找到解决方案,而且还能了解到很多的使用技巧和专业人士的经验帖。AMD在这方面就不那么尽如人意了。

拿编程语言来举例的话,就像是Python和Julia的关系。Julia被认为潜力巨大,而且是科学计算领域的高级编程语言,但其使用者数量与Python完全无法相提并论。归根结底是因为Python社区非常完善。

综上所述,在深度学习领域,英伟达至少还可以垄断两年。

与专用GPU台式机/服务器相比,何时使用云计算更好?

1个建议:如果你从事深度学习超过一年,请使用台式机GPU。

一般来说,台式机GPU的利用率如下:

博士生个人台式机:

博士生slurmGPU集群:35%;

企业级slurm研究集群:60%。

在前沿研究重要性高于开发实体产品的行业,专用GPU的利用率较低。从研究领域上看,一些领域的利用率很低(可解释性研究),另一些领域的利用率则高得多(机器翻译、语言建模)。通常人们都会高估个人计算机的利用率,所以作者强烈建议研究小组和企业使用slurmGPU集群,但个人的话就不必了。

长求总

现在最好的GPU:RTX3080和RTX3090。

对于个人来说,这些GPU不要买:任何Tesla卡、任何Quadro卡、任何「创始版」GPU,还有包括TitanRTX的所有型号泰坦。

性价比高,但比较贵的:RTX3080。

性价比高,且较便宜的:RTX3070和RTX2060Super。

还想再便宜点?推荐度依次递减:RTX2070($400)、RTX2060($300)、GTX1070($220)、GTX1070Ti($230)、GTX1650Super($190)和GTX980Ti(6GB$150)。

什么也别说了,我没有钱:请使用各家云服务的免费额度,直到你买得起GPU。

我要搞Kaggle:RTX3070。

我是一个高端的计算机视觉、预训练模型或者机器翻译研究人员:四块RTX3090并联,但请等散热压得住的版本出现,而且也要考虑电源负载(作者还会继续更新这篇文章,可以等待未来的评测)。

我是普通NLP研究者:如果不研究机器翻译、语言模型、预训练等,一块RTX3080应该就够了。

我要入门深度学习,不开玩笑:你可以从购买一块RTX3070开始,如果半年之后仍然热情不减,你可以把RTX3070出售,购买四块RTX3080。再远的未来,随着你选择路线不同,需求也会出现变化。

我想试试深度学习:RTX2060Super非常出色,但你可能需要为它更换电源。如果你的主板有PCIe×16卡槽,电源有300W,一块GTX1050Ti是最适合的。

我们组要搭建一百块GPU的集群:66%的八块RTX3080并联和33%的八块RTX3090并联是最好选择,但如果RTX3090的冷却真的有问题,你可能需要买RTX3080或TeslaA100作为代替。

128块以上的GPU集群:在这个规模上,8块成组的TeslaA100效率更高。如果超过512块GPU,你应该使用DGXA100SuperPOD系统。

值得一提的是,TimDettmers在申请读博方面也颇有心得,他拿到了斯坦福大学、华盛顿大学、伦敦大学学院、卡内基梅隆大学以及纽约大学的offer并最终选择了华盛顿大学。在2018年的一篇博客文章中,他总结了自己申请读博的经验和技巧,需要的同学可以去读一下:《我收到了斯坦福、UCL、CMU、NYU、UW的博士offer,这是我的经验》。

免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系