最近几天,已收到史丹福,UCL,CMU和NYU博士offer,目前就读于华府大学的知名评测博主蒂姆·德特默斯在其网站上推出了深度学习领域的GPU深度评测性能和性价比谁是王者
众所周知,在处理深度学习和神经网络任务时,最好使用GPU而不是CPU,因为在神经网络中,即使是相对低端的GPU也会胜过CPU。
深度学习是一个对计算需求很大的领域在一定程度上,GPU的选择会从根本上决定深度学习的体验
但问题是,如何选择合适的GPU也是一个让人头疼的问题。
如何避免踩雷,如何做出性价比高的选择。
已经收到史丹福博士,UCL,CMU,NYU,offer,目前就读于华府大学的知名评测博主Tim Dettmers写了一篇长文,探讨深度学习领域需要什么样的GPU,并结合自己的经验,最后给出了DL领域推荐的GPU。
Tim Dettmers的研究方向是表征学习和硬件优化的深度学习,他自己的网站在深度学习和计算机硬件领域也很有名。
本文推荐的Tim Dettmers的GPU都是N厂的他显然也认为AMD对于机器学习来说名不副实
边肖的原始链接也贴在下面。
RTX40和30系列的优缺点
与英伟达图灵架构RTX 20系列相比,新的英伟达安培架构RTX 30系列具有更多优势,如稀疏网络训练和推理其他函数,比如新的数据类型,更应该被看作是一个易于使用的函数,因为它们提供了与图灵架构相同的性能提升,但不需要任何额外的编程要求
阿达RTX 40系列有更多的进展,如张量记忆加速器和8位浮点运算以上介绍与RTX 30相比,RTX 40系列有类似的电源和温度问题通过正确连接电源电缆,可以轻松避免RTX 40电源连接器电缆熔化的问题
稀疏网络训练
Ampere允许以密集的速度自动执行细粒度结构的稀疏矩阵乘法这是怎么做到的以一个权重矩阵为例,把它切成四个元素的块现在想象这四个元素中有两个是零图1显示了这种情况
图1:1:Ampere架构GPU中稀疏矩阵乘法函数支持的结构
当您将这个稀疏权重矩阵与一些密集输入相乘时,Ampere的稀疏矩阵张量核心函数会自动将稀疏矩阵压缩为密集表示,其大小是图2所示的一半。
压缩后,密集压缩的矩阵瓦片被发送到张量核,张量核计算的矩阵乘法是通常大小的两倍这有效地产生了两倍的速度,因为在共享内存的矩阵乘法过程中,带宽需求减半
图2:矩阵相乘前,稀疏矩阵被压缩成密集表示。
我在研究中致力于稀疏网络训练,也写过一篇关于稀疏训练的博文对我工作的一个批评是:你减少了网络需要的FLOPS数量,但并没有提高速度,因为GPU无法执行快速稀疏矩阵乘法
伴随着张量核的稀疏矩阵乘法函数的增加,我的算法或其他稀疏训练算法现在在训练时实际上提供了两倍的速度。
开发的稀疏训练算法有三个阶段:确定每层的重要性删除最不重要的权重提升与各层重要性成比例的新权重
虽然这个功能还在实验阶段,训练稀疏网络也不常见,但在你的GPU上拥有这个功能,意味着你已经为稀疏训练的未来做好了准备。
低精度计算
在我的工作中,我已经证明了新的数据类型可以提高低精度反向传播过程中的稳定性。
图4:低精度深度学习8位数据类型深度学习训练受益于高度专业化的数据类型
目前如果要使用16位浮点数进行稳定的反向传播,最大的问题是常见的FP16数据类型只支持范围内的数字如果你的渐变滑过这个范围,你的渐变会爆炸成NaN值
为了防止FP16训练中出现这种情况,我们通常会对损失进行缩放,即在反向传播之前将损失乘以一个小数字,以防止这种梯度爆炸。
Brain Float 16格式对于指数使用的位数较多,所以可能的数值范围与FP32相同,BF16精度较低,也就是有效数,但是梯度精度对于学习来说并不是那么重要。
所以BF16做的就是你不再需要做任何损耗缩放,也不需要担心渐变会很快爆炸所以我们应该看到使用BF16格式训练的稳定性有所提高,因为精度略有损失
这对你意味着什么使用BF16精度,训练可能比使用FP16精度更稳定,同时提供相同的速度增加使用TF32 precision,您可以获得接近FP32的稳定性,同时提供接近FP16的速度提升
要使用这些数据类型,你只需要用TF32替换FP32,用BF16替换FP16,不需要修改代码。
但一般来说,这些新的数据类型可以被视为懒惰数据类型,因为您可以通过一些额外的编程工作获得旧数据类型的所有好处。
因此,这些数据类型不提供速度,但提高了在训练中使用低精度的便利性。
风扇设计和GPU温度
虽然RTX 30系列的新风扇设计在冷却GPU方面表现非常好,但非原装GPU的不同风扇设计可能会导致更多问题。
如果你的GPU发热超过80C,它会自我节流,降低计算速度/功率解决这个问题的方法是使用PCIe扩展器在GPU之间创建空间
使用PCIe扩展器来分配GPU对于散热是非常有效的华盛顿大学的其他博士生和我都使用过这个设置,并取得了巨大的成功
下面这个系统已经运行4年了,一点问题都没有如果没有足够的空间在PCIe插槽中安装所有的GPU,也可以使用这种方法
图5:带PCIE扩展口的4显卡系统看起来很乱,但是散热效率高。优雅地解决功耗限制的问题
可以在你的GPU上设置一个功率限制因此,您可以通过编程将RTX 3090的功率限制设置为300瓦,而不是标准的350瓦..在四个GPU系统中,这相当于节省了200W,可能刚好够用1600W PSU搭建一个4x的RTX 3090系统
这也有助于保持GPU冷却所以设置功率限制可以解决4x RTX 3080或者4x RTX 3090的两个主要问题,即散热和供电对于4x设置,您仍然需要一个带高效冷却风扇的GPU,但这解决了电源问题
图6:降低功率限制有轻微的冷却效果将RTX 2080 Ti的功率极限降低50—60W,温度略有下降,风扇运转更安静
你可能会问,这样不会让GPU变慢吗是的,会的,但问题是多少
我在不同的功率限制下对图5所示的4x RTX 2080 Ti系统进行了基准测试我在推理过程中对BERT Large的500个小批量的时间进行了基准测试选择BERT大推理对GPU的压力最大
图7:RTX 2080 Ti在给定功率极限下的实测速度下降。
我们可以看到,设置功率限制并不会严重影响性能把功率限制在50W,性能只会下降7%
RTX 4090连接器的火灾问题
有一种误解认为RTX 4090电源线着火是因为过度弯曲其实只有0.1%的用户有这个原因,主要问题是线缆插的不对
因此,如果您遵循以下安装说明,使用RTX 4090是完全安全的。
1.如果您使用旧电缆或旧GPU,请确保触点没有碎屑/灰尘。
2.使用电源连接器并将其插入插座,直到您听到咔嗒声—这是最重要的部分。
3.通过从左向右扭转电源线来测试适用性电缆不应移动
4.目视检查与插座的接触情况,线缆与插座之间没有间隙。
H100和RTX40支持8位浮点运算
支持8位浮点是RTX 40系列和H100 GPU的一大优势。
8位输入,可以让你以两倍的速度加载矩阵乘法的数据,可以在缓存中存储两倍的矩阵元素在Ada和Hopper架构中,缓存非常大现在有了FP8张量核,你可以为RTX 4090计算0.66 PFLOPS
这比2007年世界上最快的超级计算机的计算能力总和还要高RTX 4090的运算速度是FP8的4倍,可与2010年世界上最快的超级计算机相媲美
可以看出,最佳8位基线无法提供良好的零性能我开发的LLM.int8方法可用于int8的矩阵乘法,结果与16位基线相同
但是Int8已经被RTX 30/A100/Ampere支持,为什么FP8在RTX 40是大升级FP8数据类型比Int8数据类型稳定得多,并且易于在层规范或非线性函数中使用,这在整数数据类型中很难做到
这将使其在训练和推理中的使用非常简单明了我觉得这样会让FP8的训练和推理在几个月后变得相对普遍
下面你可以看到本文中关于Float和Integer数据类型的一个相关的主要结果我们可以看到,FP4数据类型比Int4数据类型保留了更多的信息,从而提高了四个任务的平均LLM零点的准确性
GPU深度学习性能排名
我们来看看上图中GPU的原始性能排名,看看谁最能发挥。
我们可以看到H100 GPU的8位性能和针对16位性能优化的老卡有着巨大的差距。
上图是GPU的原始相对性能例如,对于8位推理,RTX 4090的性能大约是H100 SMX的0.33倍
换句话说,与RTX 4090相比,H100 SMX的8位推理速度快了3倍。
对于这些数据,他没有为旧的GPU建立8位计算模型。
由于8位推理和训练在Ada/Hopper GPU上更有效,张量记忆加速器节省了大量寄存器,在8位矩阵乘法中非常准确。
FP8也支持Ada/Hopper,使得8位训练更加有效在Hopper/Ada上,8位训练的性能大概是16位训练的3—4倍
对于老GPU来说,老GPU的Int8推理性能接近16位推理性能。
一美元能买多少计算能力。
那么问题来了,GPU性能强但是我买不起。......
对于预算不足的小伙伴,接下来的图表是他根据每个GPU的价格和性能统计的每美元的性能排名,体现了GPU的性价比。
选择完成深度学习任务且符合预算的GPU可以分为以下几个步骤:
首先确定自己需要多少GPU内存,
对于选择8位还是16位,建议可以用16位,8位在处理复杂编码任务时还是会有困难,
根据上图的指标,找出相对性价比最高的GPU。
我们可以看到,对于8位和16位推理,RTX4070Ti性价比最高,而对于16位训练,RTX3080性价比最高。
这些GPU虽然性价比最高,但内存也是短板,10GB和12GB内存不一定能满足所有要求。
但对于刚入坑深学的新手来说,可能是理想的GPU。
其中一些GPU非常适合Kaggle比赛,并在Kaggle比赛中取得了不错的成绩工作方式比模型大小更重要,所以很多更小的GPU都很适合
Kaggle自称是世界上最大的数据科学家聚集平台,拥有大量专家,并且对孟新友好。
如果学术研究和服务器运营最好的GPU好像是A6000 Ada GPU。
同时H100 SXM性价比高,内存大,性能强。
个人来说,如果要为公司/学术实验室搭建一个小型集群,我推荐66—80%的A6000 GPU和20—33%的H100 SXM GPU。
综合建议
说到这里,终于到了GPU安利环节。
Tim Dettmers专门做了一个GPU购买流程图,预算充足的话可以获得更高的配置如果预算不足,请参考性价比高的选择
首先在这里强调一点:无论你选择哪种GPU,首先要保证它的内存能满足你的需求。为此,你必须问自己几个问题:
我要用GPU做什么是用来参加Kaggle比赛,学习深度学习,做CV/NLP研究还是玩小项目
如果预算充足,可以查看上面的基准,选择最适合自己的GPU。
你也可以通过在vast.ai或者Lambda Cloud中运行你的问题一段时间来估算一下需要的GPU内存,看看是否能满足你的需求。
如果只是偶尔需要一个GPU,不需要下载处理大数据集,那么vast.ai或者Lambda Cloud也可以很好的工作。
但是,如果你一个月每天都用GPU,并且经常使用,云GPU通常不是一个好的选择。
参考资料: