Alex 发自 凹非寺
量子位 | 公众号 QbitAI
春暖花开,各位深度学习er想不想给自己的“丹炉”升级一波?
“炼丹”爱好者们应该知道,在该领域中,**GPU的总体表现完胜CPU。
那么GPU应该怎么选?不妨来看看这篇超级详尽的“2023版GPU选购指南”。
知名测评博主、华盛顿大学在读博士Tim Dettmers亲测后,写下万字长文,手把手教你Pick性价比最高的显卡,避免踩雷。
△光是目录就有这么长……
至于谁是性价比之王,不卖关子,这里先放上Tim哥的结论:
对于16位训练过程,RTX 3080的性价比最高;对于8位和16位推理,RTX 4070Ti的性价比最高。
有意思的是,不只这俩,他在本文推荐的显卡全是英伟达家的——Tim哥觉得,对于深度学习,“AMD GPU+ROCm”目前还打不过“NVIDIA GPU+CUDA”。
手把手教你挑GPU
Tim哥自制了一张表格,展示出在训练和推理过程中,一美元能买到多少算力;这在一定程度上体现了英伟达众显卡的性价比。
△蓝色-16位训练;红色-16位推理;黄色-8位推理
看到这个,你可能一脸问号:从表格来看,不是RTX 4080在8位和16位推理上的性价比更高吗?
其实,咱们开头说的是“综合性价比”——
除了看一美元能买多少算力,还要结合显卡的运行成本,比如电费。所以总的来说,还是RTX 4070Ti的性价比更高。
虽然RTX3080和RTX 4070 Ti性价比高,但这俩的内存是个明显短板:
Tim哥指出,12GB在很多情况下都不够用,要运行Transformer模型的话,至少需要24GB。
于是,Tim哥又贴心地做了一个小程序,帮你根据不同的任务选择最合适的GPU。
其背后的核心思想是:不管干啥,一定要保证GPU的内存满足你的需求。
首先,要弄清楚这个GPU是个人用还是公用,还有就是要处理什么任务——比如,是要训练语言大模型(LLM)吗、参数量有没有超过130亿?还是就做点小项目?
然后再根据自己的钱包情况,参考上面的表格,选择最合适的GPU。
举个例子:
如果要训练LLM且参数量超过130亿,不差钱的可以选择支持Azure公有云的A100或者H100;追求性价比的话,可以选支持AWS的A100或者H100。
但如果预算实在有限,建议放弃……
(在亚马逊上,40GB的英伟达Tesla A100售价为11769美元起,约合人民币79529元。当然这都是针对国外的情况,在国内炼丹仅供参考)
另外,Tim哥还支了一招:最好用云GPU(比如Lambda云)来估测一下所需的GPU内存(至少12GB用于图像生成,至少24GB用于处理Transformer)。
其实假如GPU仅偶尔使用(每隔几天用几小时),甚至都不用去买个实体的,用云GPU就可以了。
对了~如果你真的不在乎这点(?)钱,就要追求极致性能,那可以看看这张表,即GPU的原始性能排行。
那如果实在钱不够,即使是Tim哥推荐的最便宜的GPU也买不起,还有办法吗?
那可以考虑二手呀!
先去买个便宜的GPU用于原型设计和测试,然后在云端进行全面的实验和测试。
关键性能点有哪些?
盘点完英伟达的一堆GPU后,再来叙一叙关乎深度学习速度的几大GPU性能关键点。
(如果你想稍微深入了解一些,请接着往下看。)
Tim哥指出,重点有四:GPU的内存、核心、Tensor Core和缓存。
而其中最重要的是Tensor Core。
Tensor Core是英伟达为其高端GPU开发的一项技术,本质上,就是加速矩阵乘法的处理单元。其中Tensor即张量,是一种能表示所有类型数据的数据类型。
Tim表示,在所有深度神经网络中,最昂贵的部分是矩阵乘法,而有了Tensor Core,运算速度会变得非常快,有助于大大减少成本。
就拿一个入门级的32×32矩阵乘法来说,通过Tensor Core,将矩阵乘法的运算时间从504个周期,降低到235个周期,直接减半。
而且即便是超大规模的矩阵运算,Tensor Core也能轻松处理。在规模堪比GPT-3的训练中,Tensor Core的TFLOPS利用率也就约为45-65%。
而当两个GPU都有Tensor Cores时,要比较它们性能,最佳指标之一就是内存带宽。
例如,A100 GPU的内存带宽为1555GB/s,而V100为900GB/s。因此,A100和V100相比,运算速度大概是后者的1555/900=1.73倍。
由此可见,内存带宽会影响到Tensor Core的性能发挥。于是研究人员开始寻找其他GPU属性,使内存数据传输到Tensor Core的速度更快。
然后,他们发现,GPU的一级缓存、二级缓存、共享内存和使用的寄存器数量也都是相关因素。
对于缓存来说,数据块越小,计算速度越快;所以需要把大的矩阵乘法,划分成小的子矩阵乘法。研究者们把这些小的子矩阵乘法称为“内存碎片”*(memory tiles)。
一部分“碎片”被加载到Tensor Core中,由寄存器直接寻址。
根据英伟达Ampere架构的规则,举个例子~
把每一个权重矩阵都切成4个“碎片”,并假设其中两个为零——于是就得到了一堆稀疏权重矩阵。
然后把这些稀疏权重矩阵与一些密集输入相乘,Tensor Core功能启动,将稀疏矩阵压缩为密集表示,其大小为下图所示的一半。
在压缩之后,密集压缩的“碎片”被送入Tensor Core,计算的矩阵乘法是一般大小的两倍。这样,运算速度就成了通常的2倍。
Tim哥表示,上述性能点,他在统计英伟达GPU性能时都考虑在内了。
如果你把这些东西吃透了话,以后就能完全靠自己配置出最合适的“炼丹炉”了。
原文传送门:
https://timdettmers.com/2023/01/30/which-gpu-for-deep-learning/