https://timdettmers.com/2020/09/07/which-gpu-for-deep-learning/#How_do_I_cool_4x_RTX_3090_or_4x_RTX_30802020年9月7日通过蒂姆·德特默斯 1527条评论
你对GPU的深度学习和深度学习的要求从根本上决定了你对GPU的深度学习需求。但是如
果你想买一个新的GPU,哪些特性是重要的呢?GPU内存,核心,张量核心?如何做出一
个有成本效益的选择?这篇博文将深入探讨这些问题,解决常见的误解,让你对如何看
待gpu有一个直观的理解,并将为你提供建议,这将帮助你做出正确的选择。
这篇博客文章旨在给你不同层次的理解gpu和新的安培系列gpu从NVIDIA。您可以选择:
(1)如果您对GPU如何工作的细节不感兴趣,是什么使GPU更快,以及新NVIDIA RTX 30
安培系列的独特之处,您可以直接跳到性能和性能/美元图表和推荐部分。这些构成了博
客文章的核心和最有价值的内容。
(2) 如果你担心具体的问题,我已经回答和解决了最常见的问题和误解在后面的博客
文章。
(3) 如果你想深入了解gpu和Tensor核心是如何工作的,最好从头到尾阅读博客文章。
基于对所介绍主题的理解,您可能希望跳过一两节。
我会在每一个主要部分的开头写一个小摘要,这可能会帮助你决定是否要读这一部分。
目录 隐藏
概述
GPU是如何工作的?
对深度学习处理速度最重要的GPU规范
张量核
无张量核的矩阵乘法
矩阵核相乘
内存带宽
共享内存/一级缓存大小/寄存器
评估安培深度学习性能
理论安培速度估计
实际安培速度估计
估计中可能存在的偏差
安培/RTX 30系列的附加注意事项
稀疏网络训练
低精度计算
新风扇设计/热问题
3插槽设计和电源问题
限电:解决电力问题的一个优雅的解决方案?
GPU深度学习性能
每美元GPU深度学习绩效
GPU建议
我什么时候需要>=11 GB的内存?
什么时候<11 GB的内存可以?
如何将+24GB的型号放入10GB内存?
从rtx20升级到rtx30gpu值得吗?或者我应该等待下一个GPU?
一般性建议
对GPU群集的建议
不要购买这些GPU
什么时候最好不要买新的GPU?
问题与解答
我需要PCIe 4.0吗?
是否需要8x/16x PCIe通道?
如果每个插槽占用3个PCIe插槽,如何安装4x RTX 3090?
如何冷却4x RTX 3090或4x RTX 3080?
我可以使用不同GPU类型的多个GPU吗?
什么是NVLink,它有用吗?
我没有足够的钱,即使是你推荐的最便宜的GPU。我能做什么?
GPU的碳足迹是多少?如何在不污染环境的情况下使用gpu?
我需要在两台机器之间并行处理什么?
稀疏矩阵乘法特性一般适用于稀疏矩阵吗?
我需要一个Intel CPU来启动多GPU设置吗?
电脑机箱的设计对散热有影响吗?
AMD的gpu+ROCm会赶上NVIDIA的gpu+CUDA吗?
什么时候使用云比使用专用GPU桌面/服务器更好?
TL;DR建议
版本历史记录
致谢
相关岗位
概述
这篇博文的结构如下。首先,我将解释什么使GPU快。我将讨论CPU与GPU、张量核心、内
存带宽和GPU的内存层次结构以及这些与深度学习性能的关系。这些解释可能会帮助您更
直观地了解在GPU中要查找的内容。然后我将对GPU性能进行理论估计,并将它们与一些
营销基准从NVIDIA获得可靠、无偏见的性能数据。我讨论了新的NVIDIA RTX 30安培GPU
系列的独特功能,如果您购买了GPU,值得考虑。从那里,我为1-2,4,8 GPU设置和GP
U集群提出GPU建议。接下来是Twitter线程中常见问题的问答部分;在该部分中,我还将
讨论常见的误解和一些其他问题,例如云与桌面、散热、AMD与NVIDIA等
GPU是如何工作的?
如果您经常使用gpu,了解它们的工作原理是很有用的。这些知识将有助于理解为什么g
pu在某些情况下可能很慢,而在另一些情况下可能很快。反过来,你也许能更好地理解
为什么你首先需要一个GPU,以及其他未来的硬件选项如何能够与之竞争。如果您只想使
用有用的性能数字和参数来帮助您决定购买哪个GPU,可以跳过这一部分。对于gpu如何
工作的问题,最好的高层解释是我下面的Quora答案:
阅读蒂姆·特默斯'回答到为什么gpu非常适合深度学习?在库拉
这是一个高层次的解释,很好地解释了为什么gpu比cpu更适合深度学习。如果我们看一
下细节,我们就能理解是什么让一个GPU比另一个更好。
对深度学习处理速度最重要的GPU规范
本节可以帮助您更直观地了解如何思考深度学习绩效。这种理解将有助于你自己评估未
来的GPU。
张量核
小结:
张量核将计算乘法和加法运算所需的周期减少了16倍——在我的例子中,对于32×32矩
阵,从128个周期减少到8个周期。
张量核心减少了对重复共享内存访问的依赖,从而为内存访问节省了额外的周期。
张量核是如此之快,计算不再是一个瓶颈。唯一的瓶颈是将数据传输到张量核心。
现在有足够便宜的GPU,几乎每个人都能买得起张量核心的GPU。这就是为什么我只推荐
使用张量核心的gpu。了解它们是如何工作的,以了解这些专门用于矩阵乘法的计算单元
的重要性是很有用的。在这里,我将向您展示一个简单的a*B=C矩阵乘法的例子,其中所
有矩阵的大小都是32×32,无论有没有张量核,计算模式都是什么样子的。这是一个简
化的例子,并不是一个高性能的矩阵乘法内核的编写方式,但它有所有的基础知识。CU
DA程序员会将此作为第一个“草稿”,然后使用双缓冲、寄存器优化、占用优化、指令
级并行等概念逐步对其进行优化,我在这里将不讨论这些概念。
为了完全理解这个例子,你必须理解循环的概念。如果处理器以1GHz的频率运行,它每
秒可以运行10^9个周期。每个周期代表一个计算的机会。然而,比大多数手术周期要长
。因此,它创建了一个管道,其中一个操作要启动,它需要等待前一个操作完成所需的
周期数。这也称为操作的延迟。
以下是一些重要的操作周期计时或延迟:
全局内存访问(最高48GB):~200周期
共享内存访问(每个流式多处理器最多164 kb):~20个周期
融合乘法和加法(FFMA):4个循环
张量核矩阵乘法:1个周期
此外,您应该知道GPU上线程的最小单位是一组32个线程-这称为扭曲。翘曲通常以同步
模式运行-一个扭曲中的线程必须相互等待。所有GPU上的操作都经过优化。对于一个32
字节的全局线程来说,在一个32字节的全局内存中正好发生一次扭曲。在一个流式多处
理器(SM)中,我们最多可以有32个warp=1024个线程,这个GPU相当于一个CPU核心。S
M的资源被分配给所有活跃的扭曲者。这意味着有时我们希望运行更少的warp,以便每个
warp拥有更多的寄存器/共享内存/张量核心资源。
对于下面两个例子,我们假设我们有相同的计算资源。对于这个32×32矩阵乘法的小例
子,我们使用8个SM(大约是rtx3090的10%)和8个翘曲。
无张量核的矩阵乘法
如果我们要做A*B=C矩阵乘法,其中每个矩阵的大小为32×32,那么我们需要将我们反复
访问的内存加载到共享内存中,因为它的延迟大约要低10倍(200个周期对20个周期)。
共享内存中的内存块通常被称为内存块或只是内存块。使用2*32扭曲可以并行地将两个
32×32浮点加载到共享内存块中。我们有8个SMs,每个SMs有8个翘曲,因此由于并行化
,我们只需要执行从全局到共享内存的单个顺序加载,这需要200个周期。
要进行矩阵乘法,我们现在需要从共享内存a和共享内存B加载一个32个数字的向量,并
执行融合乘法和累加(FFMA)。然后将输出存储在寄存器C中。我们将功除以每个SM做8
个点积(32×32)来计算C的8个输出。为什么这正好是8(在旧算法中是4个)是非常技
术性的。我推荐Scott Gray在矩阵乘法明白这一点。这意味着我们有8倍的共享内存访问
,每次20个周期,8个FFMA操作(32个并行),每个周期花费4个周期。因此,我们的总
成本为:
200个周期(全局内存)+8*20个周期(共享内存)+8*4个周期(FFMA)=392个周期
让我们看看使用张量核的周期成本。
张量核矩阵乘法
利用张量核,我们可以在一个周期内进行4×4矩阵乘法。要做到这一点,我们首先需要
把内存放入张量核心。与上面类似,我们需要从全局内存(200个周期)中读取并存储在
共享内存中。要进行32×32矩阵乘法,我们需要进行8×8=64张量核运算。单个SM有8个
张量核。因此,8个短信,我们有64张量核心-只是我们需要的数字!我们可以通过1次内
存传输(20个周期)将数据从共享内存传输到张量核心,然后进行64次并行张量核操作
(1个周期)。这意味着张量核矩阵乘法的总成本在这种情况下为:
200个周期(全局内存)+20个周期(共享内存)+1个周期(张量核心)=221个周期。
因此,我们通过张量核将矩阵乘法的开销从392个周期显著降低到221个周期。在这个简
化的例子中,张量核心降低了共享内存访问和FFMA操作的成本
虽然这个例子大致遵循了有和没有张量核的计算步骤的顺序,请注意这是一个非常简化
的例子。矩阵乘法的实际情况涉及更大的共享内存块和稍微不同的计算模式。
然而,我相信从这个例子中,也可以清楚地知道为什么下一个属性,内存带宽,对于配
备张量核心的gpu来说是如此重要。由于全局内存是张量核矩阵乘法周期开销中最重要的
部分,因此如果能够减少全局内存延迟,我们甚至可以拥有更快的gpu。我们可以通过增
加存储器的时钟频率(每秒更多的周期,但也需要更多的热量和更高的能量需求)或者
通过增加在任何时候可以传输的元素的数量(总线宽度)来实现这一点。
内存带宽
在上一节中,我们已经看到张量核非常快。他们从最快的记忆中,等待着他们最快的记
忆。例如,在使用巨大矩阵的BERT大型训练中,张量核越大越好,我们的张量核心TFLO
PS利用率约为30%,这意味着70%的时间,张量核心是闲置的。
这意味着,当比较两个GPU与Tensor内核时,每个GPU性能的最佳指标之一就是它们的内
存带宽。例如,A100 GPU的内存带宽为1555GB/s,而V100的内存带宽为900GB/s。因此,
A100与V100的加速比基本估计为1555/900=1.73x。
共享内存/一级缓存大小/寄存器
由于内存传输到张量核心是性能的限制因素,我们正在寻找其他GPU属性,以实现更快的
内存传输到张量核心。共享内存、一级缓存和使用的寄存器数量都是相关的。要了解内
存层次结构如何实现更快的内存传输,有助于了解如何在GPU上执行矩阵乘法。
为了执行矩阵乘法,我们利用GPU的内存层次结构,从慢速全局内存到快速本地共享内存
,再到闪电般快速的寄存器。然而,内存越快,它就越小。因此,我们需要把矩阵分解
成更小的矩阵。我们在本地共享内存中执行矩阵乘法,它速度快,接近流式多处理器(
SM)——相当于CPU核心。对于张量核心,我们更进一步:我们获取每个tile并将这些t
ile的一部分加载到Tensor core中。共享内存中的矩阵内存块比全局GPU内存快10-50倍
,而张量核心的寄存器比全局GPU内存快约200倍
拥有更大的磁贴意味着我们可以重用更多的内存。我在我的TPU与GPU博客文章。事实上
,你可以看到tpu对于每个张量核心都有非常非常大的分片。因此,tpu可以在每次从全
局内存传输时重用更多的内存,这使得tpu在矩阵乘法方面比gpu更高效。
每个磁贴大小取决于每个流式多处理器(SM)有多少内存—相当于GPU上的“CPU核心”
。我们在以下体系结构上有以下共享内存大小:
Volta:96kb共享内存/32kbl1
图灵:64kb共享内存/32KB L1
安培:164 kb共享内存/32 kb L1
我们看到Ampere有一个更大的共享内存,允许更大的磁贴大小,这减少了全局内存访问
。因此,Ampere可以更好地利用GPU内存上的总内存带宽。这将提高大约2-5%的性能。对
于大型矩阵,性能提升尤为明显。
安培张量核心的另一个优点是它们在线程之间共享更多的数据。这减少了寄存器的使用
。寄存器限制为每个流式多处理器(SM)64k或每个线程255。比较Volta和安培张量核心
,安培张量核心使用的寄存器少3倍,允许更多的张量核心为每个共享内存块激活。换言
之,我们可以用相同数量的寄存器提供3倍多的张量核。然而,由于带宽仍然是瓶颈,您
将只看到实际tflop与理论tflop之间的微小增长。新的张量核心提高了大约1-3%的性能
。
总的来说,您可以看到Ampere架构经过了优化,通过使用改进的内存层次结构(从全局
内存到共享内存块、为张量核心注册磁贴)使可用内存带宽更有效。
评估安培深度学习性能
小结:
基于存储器带宽和安培gpu改进的存储层次的理论估计,加速比为1.78x到1.87x。
英伟达提供特斯拉A100和V100 GPU的精确基准数据。这些数据出于营销目的是有偏差的
,但是可以构建这些数据的借记模型。
从基准数据中可以看出,特斯拉A100与V100相比,NLP的速度是V100的1.70倍,计算机视
觉的速度是V100的1.45倍。
本节是为那些想了解我如何得出安培GPU性能估计的技术细节的人准备的。如果您不关心
这些技术方面,可以跳过本节。
理论安培速度估计
我们所期望的是,将两种处理器的核心处理器的带宽结合起来。更多的好处来自于更多
的共享内存/L1缓存和更好的寄存器在Tensor内核中的使用。
如果我们拿特斯拉A100的GPU带宽和Tesla V100的带宽相比,我们可以得到1555/900=1.
73x的加速比。另外,我预计更大的共享内存可以有2-5%的加速,而改进的张量核心会有
1-3%的加速。这使得加速范围在1.78x到1.87x之间。通过类似的推理,你可以估计出其
他安培系列gpu与特斯拉V100相比的加速
实际安培速度估计
假设我们有一个GPU架构的GPU的估计值,比如Ampere、Turing或Volta。很容易将这些结
果外推到来自同一架构/系列的其他gpu。幸运的是,英伟达已经基准A100与V100在广泛
的计算机视觉和自然语言理解任务。不幸的是,无论何时使用不同数量的NVIDU,都无法
直接与这些数量的产品进行比较。所以从某种意义上说,基准数据部分是诚实的,部分
是市场数据。一般来说,您可以认为使用较大的批处理大小是公平的,因为A100有更多
的内存。为了评估相同的处理器性能,我们还是应该比较相同的批处理性能。
为了得到一个无偏的估计,我们可以用两种方法来缩放V100和A100的结果:(1)考虑批
处理大小的差异,(2)考虑使用1gpu和8gpu时的差异。我们很幸运,我们可以在NVIDI
A提供的数据中找到这两种偏差的估计值
将批处理大小增加一倍,将图像/秒(CNN)的吞吐量提高13.6%。我在我的RTX泰坦上对
变压器做了同样的测试,结果出人意料的是,结果是一样的:13.5%,看来这是一个稳健
的估计。
当我们在越来越多的gpu上并行化网络时,由于一些网络开销,我们会失去性能。A100
8x GPU系统比V100 8x GPU系统(NVLink 2.0)具有更好的网络连接(NVLink 3.0)-这
是另一个混淆因素。直接查看来自NVIDIA的数据,我们可以发现对于CNNs,8x A100系统
的开销比8x V100系统低5%。这意味着,如果从1x A100到8x A100的加速比为7.00x,那
么从1x V100到8x V100的加速仅为6.67x。对于变压器,这个数字是7%
使用这些数字,我们可以从NVIDIA提供的直接数据中估计一些特定深度学习架构的加速
。特斯拉A100比特斯拉V100有以下加速:
SE-ResNeXt101:1.43倍
蒙面-R-CNN:1.47倍
变压器(12层,机器翻译,WMT14 en de):1.70倍
因此,这些数字略低于计算机视觉的理论估计值。这可能是由于较小的张量维数、准备
矩阵乘法(如img2col或快速傅立叶变换(FFT))所需的操作的开销,或无法使GPU饱和
的操作(最终层通常相对较小)。它也可能是特定架构的产物(分组卷积)。
实际变压器估算值与理论估算值非常接近。这可能是因为计算大矩阵的算法非常简单。
我将使用这些实际的估计来计算gpu的成本效率。
估计中可能存在的偏差
以上估计值是针对A100和V100。在过去,NVIDIA偷偷地将性能下降隐藏到“游戏”RTX
GPU中:(1)降低了Tensor核心的利用率,(2)用于冷却的游戏风扇,(3)禁用了点
对点GPU传输。与全安培A100相比,RTX 30系列可能存在未经宣布的性能下降。
到目前为止,发现其中一个退化:张量核心性能下降,因此rtx30系列gpu在深度学习方
面不如Quadro卡。这也是为RTX20系列所做的,所以这不是什么新鲜事,但这一次也是为
泰坦等效卡RTX 3090而做的。RTX Titan没有启用性能降级。
我将更新这篇博文,因为有关进一步未经宣布的性能下降的信息变得可用。
安培/RTX 30系列的附加注意事项
小结:
Ampere允许稀疏网络训练,可以将训练速度提高2倍。
稀疏网络训练仍然很少使用,但将使安培证明未来。
Ampere有新的低精度数据类型,这使得使用低精度非常容易,但不一定比以前的gpu快。
新的风扇设计是优秀的,如果你有空间之间的gpu,但不清楚是否多个gpu之间没有空间
,将有效地冷却。
rtx3090的3插槽设计使得4xgpu构建成问题。可能的解决方案是2插槽变体或使用PCIe扩
展器。
4x RTX 3090将需要比市场上任何一个标准电源单元现在所能提供的更多的电力
新的NVIDIA安培RTX 30系列比NVIDIA图灵rtx20系列有更多的优点,例如稀疏网络训练和
推理。其他特性,比如新的数据类型,应该更多地被看作是一个易于使用的特性,因为
它们提供了与图灵相同的性能提升,但不需要任何额外的编程。
稀疏网络训练
安培允许细粒度结构自动稀疏矩阵乘法在密集的速度。这是怎么回事?取一个权重矩阵
,把它分成4个元素。现在假设这4个元素中的2个元素为零。图1显示了这种情况。
图1:安培GPU中稀疏矩阵乘法特性支持的结构。该图取自Jeff Pool的GTC 2020演示文稿
,该演示文稿由NVIDIA提供,旨在加速NVIDIA安培架构中的稀疏性。
图1:安培GPU中稀疏矩阵乘法特性支持的结构。该数据取自Jeff Pool关于GTC 2020的演
示文稿NVIDIA安培体系结构中加速稀疏性的研究由英伟达提供。
当您将这个稀疏权重矩阵与一些密集输入相乘时,Ampere中的稀疏矩阵张量核心特性会
自动将稀疏矩阵压缩为一个密集表示,其大小为图2中所示的一半。压缩后,密集压缩的
矩阵块被送入张量核心,张量核心计算两倍于通常大小的矩阵乘法。这有效地产生了2倍
的加速,因为共享内存的矩阵乘法的带宽需求减少了一半。
图2:在执行矩阵乘法之前,稀疏矩阵被压缩成稠密表示。
图2:在执行矩阵乘法之前,稀疏矩阵被压缩成稠密表示。该数据取自Jeff Pool关于GT
C 2020的演示文稿NVIDIA安培体系结构中加速稀疏性的研究由英伟达提供。
我正在努力稀疏网络训练在我的研究中,我还写了关于稀疏训练的博客文章. 对我的工
作的一个批评是“你减少了网络所需的浮点运算,但它不能产生加速,因为GPU不能进行
快速的稀疏矩阵乘法。”好吧,随着稀疏矩阵乘法功能的张量核心,我的算法,或其他
稀疏 训练 算法,现在在训练中实际提供了2倍的加速。
图3:我开发的稀疏训练算法有三个阶段:(1)确定每一层的重要性。(2) 去掉最小
的,不重要的重量。(3) 根据每个层的重要性增加新权重。在我稀疏的培训博客中阅
读更多关于我工作的内容。
图3:稀疏训练算法我的研究分为三个阶段:(1)确定每一层的重要性。(2) 去掉最小
的,不重要的重量。(3) 根据每个层的重要性增加新权重。在我的稀疏训练博客文章
.
虽然这项功能还处于试验阶段,训练稀疏网络还不常见,但在你的GPU上拥有这个功能意
味着你已经为稀疏训练的未来做好了准备。
低精度计算
在我的工作中,我已经展示了新的数据类型可以在低精度反向传播.
图4:我开发的低精度深度学习8位数据类型。深度学习培训受益于高度专业化的数据类
型。我的dynamictree数据类型使用一个动态位,它表示二进制二分树的开始,它量化了
范围[0,0.9],而之前的所有位都用于指数。这允许动态地以高精度表示大小数字。
图4:我开发的低精度深度学习8位数据类型。深度学习培训受益于高度专业化的数据类
型。我的dynamictree数据类型使用一个动态位,它表示二进制二分树的开始,它量化了
范围[0,0.9],而之前的所有位都用于指数。这允许动态地以高精度表示大小数字。
目前,如果您希望使用16位浮点数字(FP16)实现稳定的反向传播,最大的问题是普通
的FP16数据类型只支持范围在[-65504,65504]范围内的数字。如果渐变超过此范围,则
渐变将爆炸为NaN值。为了防止在FP16训练期间发生这种情况,我们通常会进行损耗缩放
,在反向传播之前,将损耗乘以一个小数值,以防止这种梯度爆炸
Brain Float 16格式(BF16)使用更多的位作为指数,这样可能的数字范围与FP32相同
:[-3*10^38,3*10^38]。BF16的精度较低,即有效位数,但梯度精度对学习来说并不那
么重要。所以BF16所做的就是你不再需要做任何损失缩放或担心梯度迅速膨胀。因此,
我们应该看到使用BF16格式的训练稳定性有了提高,只是精度略有下降。
这对你意味着什么:使用BF16精度,在提供相同加速的同时,训练可能比使用FP16精度
更稳定。使用TF32精度,您可以获得接近FP32的稳定性,同时使加速接近FP16。好在,
要使用这些数据类型,只需将FP32替换为TF32,将FP16替换为BF16-无需更改代码!
总的来说,这些新的数据类型可以被看作是懒惰的数据类型,因为您可以通过一些额外
的编程工作(适当的损失缩放、初始化、规范化、使用Apex)获得旧数据类型的所有好
处。因此,这些数据类型不提供加速,而是提高了低精度训练的易用性。
新风扇设计/热问题
RTX 30系列的新风扇设计具有鼓风机风扇和推/拉风扇。设计是巧妙的,将是非常有效的
,如果你有空间之间的gpu。因此,如果您有2个GPU和它们之间有一个插槽空间(+3个P
CIe插槽),您将没事,并且不会有散热问题。但是,如果在一个有2个以上gpu的设置中
,gpu将如何执行还不清楚。鼓风机风扇将能够通过支架排气,远离其他GPU,但无法判
断其工作情况,因为鼓风机风扇的设计与以前不同。所以我的建议是:如果你想在4个P
CIe插槽中购买1个GPU或2个GPU,那么应该没有问题。但是,如果您要相邻使用3-4个RT
X 30 GPU,我会等待热性能报告来知道您是否需要不同的GPU冷却器、PCIe扩展器或其他
解决方案。我会更新博客文章的信息,因为它是可用的。
为了克服热问题,水冷却将在任何情况下提供解决方案。许多厂商为rtx3080/rtx3090卡
提供水冷块,即使在4x GPU设置下也能保持冷却。如果你想运行一个4x的GPU设置,请注
意GPU的一体式水冷解决方案,尽管在大多数桌面情况下很难将散热器展开。
另一个解决方案是购买PCIe扩展器和GPU中的散热问题。这是非常有效的,我和华盛顿大
学的其他博士生使用这个装置非常成功。它看起来不漂亮,但它让你的gpu很酷!如果你
没有足够的空间来扩展gpu,它也会有所帮助。例如,如果您可以在台式电脑机箱内找到
空间,则可以购买标准的3插槽宽度RTX 3090,并在机箱内使用PCIe扩展器扩展它们。这
样,您就可以用一个简单的解决方案来解决4x RTX 3090设置的空间问题和冷却问题。
图5:4x GPU(带PCIe扩展器)。看上去一团糟,但对降温很有效。我用了2年的钻机和冷
却是优秀的,尽管有问题的RTX2080TI创始人版GPU。
图5:4x GPU(带PCIe扩展器)。看上去一团糟,但对降温很有效。我用了2年的钻机和冷
却是优秀的,尽管有问题的RTX2080TI创始人版GPU。
3插槽设计和电源问题
rtx3090是一个3插槽的GPU,所以你将不能使用它在一个4x设置与默认风扇设计从NVIDI
A。这是一种很难在350GPU上运行的时隙。RTX 3080在320W TDP下仅稍好,冷却4x RTX
3080设置也将非常困难。
在4x RTX 3090的情况下,也很难为4x 350W=1400W的系统供电。1600W的电源设备(PSU
)随时可用,但只有200W的电源来为CPU和主板可能太紧了。组件的最大功率仅在组件充
分利用的情况下使用,而在深度学习中,CPU通常只在弱负载下工作。这样,一个1600W
的PSU可能与4x RTX 3080版本配合得很好,但是对于4x RTX 3090版本,最好选择高功率
的PSU(+1700W)。我的一些追随者在密码挖掘PSU方面取得了巨大成功-请在评论部分查
看更多信息。否则,需要注意的是,并非所有插座都支持1600W以上的PSU,尤其是在美
国。这就是为什么在美国,目前市场上没有一个1600W以上的标准台式机PSU。如果你有
一个服务器或密码挖掘PSU,小心外形因素-确保它适合你的电脑外壳。
限电:解决电力问题的一个优雅的解决方案?
有可能在你的gpu上设置一个功率限制。所以你可以通过编程将RTX 3090的功率限制设置
为300W,而不是标准的350W。在一个4x GPU系统中,这可以节省200W,这可能只够构建
一个1600W PSU可行的4x RTX 3090系统。它也有助于保持gpu的凉爽。因此,设置功率限
制可以同时解决4x RTX 3080或4x RTX 3090设置的两个主要问题:冷却和电源。对于4x
设置,您仍然需要有效的鼓风机gpu(而标准设计可能已经证明足够了),但这解决了P
SU问题。
图6:降低功率限制有轻微的冷却效果。将RTX2080Ti功率限制降低50-60W,温度略有下
降,风扇运行更安静。
图6:降低功率限制有轻微的冷却效果。将RTX2080Ti功率限制降低50-60W,温度略有下
降,风扇运行更安静。
你可能会问,“这不会减慢GPU的速度吗?“是的,是的,但问题是多少钱。我在不同的
功率限制下对图5所示的4x RTX 2080 Ti系统进行了基准测试。在推断过程中,我对BER
T Large的500个小批量的时间进行了基准测试(不包括softmax层)。我选择BERT大型推
理,因为根据我的经验,这是最强调GPU的深度学习模型。因此,我预计功率限制将是这
一模式的最大减速。因此,这里报告的减速可能接近您可以预期的最大减速。结果如图
7所示。
图7:RTX 2080 Ti在给定功率限制下测得的减速。测量值是推断过程中500个小批量BERT
-Large的平均处理时间(不包括softmax层)。
图7:RTX 2080 Ti在给定功率限制下测得的减速。测量值是推断过程中500个小批量BERT
-Large的平均处理时间(不包括softmax层)。
如我们所见,设置功率限制不会严重影响性能。将功率限制为50W(足以处理4x RTX 30
90)的性能仅降低7%。
GPU深度学习性能
下面的基准测试不仅包括特斯拉A100与特斯拉V100基准测试,而且我构建了一个模型,
该模型适用于这些数据以及基于Titan V、Titan RTX、RTX 2080 Ti和RTX 2080的四种不
同基准[1,2,三,4]在一次更新中,我还考虑了最近发现的rtx30系列gpu的性能下降。自
从我写了这篇博文,我们现在也有了第一篇可靠的基准电脑视觉,它能确认我的数字。
除此之外,我通过在基准数据的数据点之间插值来缩放中间卡,如RTX2070、RTX2060或
QuadroRTX6000&8000卡。通常,在一个体系结构中,gpu相对于流式多处理器和带宽是相
当线性的,而我的架构内模型就是基于此。
我只收集了混合精度FP16训练的基准数据,因为我认为没有充分的理由可以使用FP32训
练。
标准化GPU性能安培
图8:相对于RTX 2080 Ti的标准化GPU深度学习性能。
与RTX 2080 Ti相比,RTX 3090的卷积网络和变压器的加速比分别为1.41倍和1.35倍,同
时释放价格高出15%。因此,安培RTX 30在原始性能方面比图灵RTX 20系列有了实质性的
改进,而且具有成本效益(如果您不必升级电源等)。
每美元GPU深度学习绩效
什么样的GPU能给你带来最好的回报?这取决于整个系统的成本。如果你有一个昂贵的系
统,投资于更昂贵的gpu是有意义的
给你三个PCIe 3.0版本,我用它作为2/4 GPU系统的基本成本。我把这些基本成本加上G
PU成本。GPU成本是GPU的亚马逊和eBay成本的平均值。对于新的安培GPU,我只使用发行
价格。再加上上面的性能值,这些gpu系统的每美元性能值都会产生。对于8-GPU系统,
我使用了一个超级微型的裸体(RTX服务器的行业标准)作为基准成本。请注意,这些条
形图不考虑内存需求。你应该先考虑一下你的内存需求,然后在图表中寻找最佳选择。
以下是一些关于记忆的粗略指南:
使用预训练的变压器;从头开始训练小型变压器>=11GB
在研究/生产中培训大型变压器或卷积网络:>=24 GB
原型神经网络(变压器或卷积网络)>=10 GB
Kaggle竞赛>=8 GB
应用计算机视觉>=10GB
视频神经网络:24 GB
强化学习=10GB+a强深度学习桌面你能负担得起的最大的Threadripper或EPYC CPU。
每美元安培标准化1和2 GPU性能
图9:相对于RTX 3080,每美元的标准化深度学习绩效。
标准化每美元安培4 GPU性能
图10:相对于RTX 3080,每美元的标准化4 GPU深度学习性能。
每美元安培的标准化8 GPU性能
图11:与RTX 3080相比,每美元的标准化8 GPU深度学习性能
GPU建议
首先需要强调的是:如果你选择了一个GPU,你需要确保它有足够的内存来完成你想做的
事情。为您选择最佳深度学习GPU的步骤应该是:
我想用GPU做什么:Kaggle竞赛、机器学习、学习深度学习、小项目黑客攻击(GAN fun
还是大语言模型?)从事计算机视觉/自然语言处理/其他领域的研究,还是其他领域的
研究?
我想做什么需要多少记忆?
使用上面的成本/性能图表,找出哪一个GPU最适合您,满足内存标准。
对于我选择的GPU还有其他的注意事项吗?例如,如果它是RTX 3090,我能把它装进我的
电脑吗?我的电源设备(PSU)是否有足够的瓦数来支持我的GPU?散热是个问题,还是
我可以有效地冷却GPU?
其中一些细节要求你自我反省一下你想要什么,也许还需要研究一下gpu有多少内存,其
他人用在你感兴趣的领域。我可以给你一些指导,但我不能涵盖所有方面。
我什么时候需要>=11 GB的内存?
我在前面提到过,如果你使用变形金刚,你应该至少有11GB的内存,如果你研究变形金
刚,那么更好的是,>=24GB内存。这是因为大多数预先训练过的模型都有很高的内存需
求,而且这些模型都是用至少有11gb内存的rtx2080tigpu训练的。因此,小于11GB的内
存可能会导致某些模型难以运行的情况。
其他需要大量内存的领域包括任何医学成像、一些最先进的计算机视觉模型、任何具有
非常大图像的东西(GAN、风格转换)。
一般来说,如果你想建立一个能让你在竞争中处于优势的模型,不管是研究、工业还是
Kaggle竞争,额外的内存将为你提供一个可能的优势。
什么时候<11 GB的内存可以?
rtx3070和rtx3080是强大的卡,但它们缺少一点内存。但是,对于许多任务,您不需要
那么多内存。
RTX 3070是完美的,如果你想学习深入学习。这是因为训练大多数架构的基本技能可以
通过缩小一点或者使用更小的输入图像来学习。如果我想再次学习深度学习,我可能会
使用一个rtx3070,或者如果我有钱的话,甚至多个rtx3070。
RTX 3080是目前最具成本效益的卡,因此非常适合原型制作。对于原型,您需要最大的
内存,这仍然是便宜的。关于原型设计,我指的是任何领域的原型设计:研究、竞争对
手Kaggle、为一家初创公司破解想法/模型、试验研究代码。对于所有这些应用,rtx30
80是最好的GPU。
假设我会领导一个研究实验室/创业公司。我会把66-80%的预算放在rtx3080机器上,20
-33%用于“推出”rtx3090机器和一个强大的水冷设置。其想法是,rtx3080更具成本效
益,可以通过slurm集群设置作为原型机来共享。由于原型设计应该以敏捷的方式完成,
所以应该用更小的模型和更小的数据集来完成。RTX 3080非常适合于此。学生们可以在
一个更大的模型上展示一个更大的原型
如何将+24GB的型号放入10GB内存?
这有点矛盾,我刚才说如果你想训练大模型,你需要大量的内存,但是自从BERT的冲击
和解决方案的出现,在10gb内存中训练24gb的模型,我们一直在与大模型做斗争。如果
你没有钱或者没有什么可以避免rtx3090的冷却/电源问题,你可以得到rtx3080,并接受
你需要通过添加内存节省技术来做一些额外的编程。有足够的技术可以让它发挥作用,
而且它们正变得越来越普遍。
以下是一些常见的技巧:
FP16/BF16培训(顶)
梯度检查点(只存储一些激活并在反向过程中重新计算)
GPU到CPU内存交换(交换CPU不需要的层;将它们及时交换回backprop)
模型并行性(每个GPU包含每层的一部分;由fairseq支持)
流水线并行(每个GPU占用网络的几层)
零并行性(每个GPU包含部分层)
三维平行度(模型+管道+零)
下一个CPU状态正在前进,而优化器正在进行下一个CPU/CPU更新
如果你不害怕做一点修改并实现其中的一些技术——这通常意味着将支持它们的包与你
的代码集成——你将能够在一个更小的GPU上安装24GB的大型网络。有了这种黑客精神,
rtx3080,或者任何内存少于11gb的GPU,都可能是一个很棒的GPU。
从rtx20升级到rtx30gpu值得吗?或者我应该等待下一个GPU?
如果我是你,我会三思而后行从RTX20GPU升级到RTX30GPU。你可能渴望得到30%左右更快
的培训,但它可以是一个大头痛处理所有其他的rtx30 GPU问题。你需要把旧的冷却电源
卖掉。这一切值得吗?
我可以想象如果你需要额外的内存,例如,从RTX 2080 Ti到RTX 3090,或者如果你想大
幅提升性能,比如从RTX 2060到RTX 3080,那么它是非常值得的。但是如果你继续“在
你的联盟中”,也就是说,从泰坦RTX到RTX 3090,或者,RTX 2080 Ti到RTX 3080,这
几乎是不值得的。你获得了一点性能,但你会头疼的电源和冷却,你是一个很好的一块
钱的轻。我认为这不值得。我会等到一个更好的替代GDDR6X内存发布。这将使gpu使用更
少的能量,甚至可能使它们更快。也许等上一年,看看从那以后情况有什么变化。
值得一提的是,技术无论如何都在放缓。你可能要等5年以上的GPU。总有一天,廉价的
HBM内存可以被制造出来。如果那时候到了,你买了那个GPU,你可能会在那个GPU上呆7
年以上。这样的gpu可能在3-4年内可用。因此,玩等待游戏是一个相当明智的选择。
一般性建议
一般来说,rtx30系列非常强大,我推荐这些gpu。但也要注意到前一节所讨论的散热要
求。如果您在GPU之间有一个PCIe插槽,那么冷却就不会有任何问题。否则,使用RTX 3
0卡,请确保获得水冷、PCIe扩展器或有效的风机卡(接下来几周的数据将显示NVIDIA风
扇设计足够)。
一般来说,我会向任何有能力的人推荐rtx3090。它将不仅装备你现在,而且将是一个非
常有效的卡片在未来3-7年。因此,这是一项保持强劲的良好投资。HBM内存不太可能在
三年内变得便宜,所以下一代GPU只会比RTX 3090好25%。我们可能会在3-5年内看到廉价
的HBM内存,所以在那之后,你肯定想升级。
对于博士生来说想成为博士生吗或者那些开始攻读博士学位,我建议rtx3080gpu用于原
型设计,rtx3090gpu用于展开。如果你的部门有GPU集群,我强烈推荐泥巴带有8台GPU机
器的GPU群集。但是,由于8x GPU服务器设置中RTX 3080 GPU的冷却值得怀疑,因此您不
太可能运行这些GPU。如果冷却工作,我会建议66-80%的RTX 3080 GPU和其余的GPU要么
RTX 3090或特斯拉A100。如果冷却不起作用,我建议66-80%的RTX 2080,其余的是特斯
拉A100。同样,至关重要的是,你要确保在你的GPU服务器的加热问题,在你承诺为你的
服务器的特定的GPU之前得到处理。更多关于GPU集群的信息如下。
如果你有多个RTX 3090,确保你选择的解决方案,以保证足够的冷却和电力。随着越来
越多的数据在一个合适的设置中滚动,我将更新关于这一点的博客文章。
对于没有严格竞争要求的人(研究、竞争性Kaggle、竞争性初创公司),我会按顺序推
荐:二手RTX 2080 Ti、二手RTX 2070、新RTX 3080、新RTX 3070。如果你不喜欢用过的
卡,但是RTX 3080。如果你买不起rtx3080,那就买rtx3070吧。所有这些卡都是非常划
算的解决方案,将确保大多数网络的快速培训。如果你使用了正确的内存技巧,并且可
以进行一些额外的编程,那么现在有足够的技巧使一个24gb的神经网络适合10gb的GPU。
因此,如果您接受一点不确定性和一些额外的编程,RTX 3080可能也是比RTX 3090更好
的选择,因为这些卡之间的性能非常相似。
如果你的预算有限,而RTX 3070太贵了,那么在易趣上,二手RTX 2070大约要260美元。
目前还不清楚是否会有一个rtx3060,但如果你是在有限的预算,它可能也值得等待多一
点。如果价格类似于RTX2060和GTX1060,你可以期待250到300美元的价格和相当强劲的
性能。
如果你的预算是有限的,但你仍然需要大量的内存,那么旧的,用过的特斯拉或Quadro
卡从易趣可能是最好的。QuadroM6000有24GB的内存,在eBay上售价400美元。特斯拉K8
0有一个2合1的GPU,2倍12 GB内存,售价约200美元。与更现代的卡相比,这些卡的速度
很慢,但是额外的内存对于内存最重要的特定项目来说非常有用。
对GPU群集的建议
GPU集群设计高度依赖于使用。对于一个+1024 GPU系统,联网是最重要的,但是如果用
户在这样一个系统上一次最多使用32个GPU,那么投资于强大的网络基础设施是一种浪费
。在这里,我将使用类似的原型展示推理,如RTX 3080 vs RTX 3090案例中所述
在通用数据中心协议中,数据中心禁止使用数据卡。然而,大学通常可以从这条规定中
获得豁免。有人向英伟丹请求豁免是值得的。如果允许您使用RTX卡,我建议您使用标准
的Supermicro 8 GPU系统和RTX 3080或RTX 3090 GPU(如果可以保证足够的冷却)。一
组8x A100节点可确保原型制作后的有效“部署”,尤其是在无法保证8x RTX 3090服务
器能够充分冷却的情况下。在这种情况下,我建议使用A100而不是RTX6000/RTX8000,因
为A100非常经济划算而且经得起未来考验。
如果你想在一个GPU集群上训练庞大的网络(+256个GPU),我推荐NVIDIA DGX SuperPO
D系统和一个100个GPU。在+256gpu规模下,网络正变得至关重要。如果你想扩展到256个
以上的gpu,你需要一个高度优化的系统,而把标准解决方案放在一起再也不会削减它
尤其是在+1024 gpu的规模下,市场上唯一有竞争力的解决方案是Google TPU Pod和NVI
DIA DGX SuperPod。在这种规模下,我更喜欢谷歌的TPU吊舱,因为他们定制的网络基础
设施似乎优于NVIDIA DGX SuperPod系统——尽管两个系统都非常接近。相对于TPU系统
,GPU系统提供了更大的深度学习模型和应用程序的灵活性,而TPU系统支持更大的模型
并提供更好的扩展性。所以这两种制度各有利弊。
不要购买这些GPU
我不建议购买多个RTX Founders版本(任何)或RTX Titan,除非您有PCIe扩展器来解决
冷却问题。他们的表现我也会在下面的图表中显示出来。4x RTX 2080 Ti Founders Ed
ition GPU将很快突破90摄氏度,将降低其核心时钟,并将运行速度低于适当冷却的RTX
2070 GPU。
除非你不想买一个大的GPU或是不太有效的数据中心,否则你不想购买这些数据中心。
如果你买得起更好的卡,不要买GTX 16系列卡。这些卡片没有张量核心,因此,提供相
对较差的深度学习性能。我会选择一个用过的rtx2070/rtx2060/rtx2060超级卡而不是g
tx16系列卡。但是,如果你缺钱,GTX 16系列卡是个不错的选择。
什么时候最好不要买新的GPU?
如果你已经有了rtx2080tis或更好的gpu,升级到rtx3090可能没有意义。你的GPU已经相
当不错了,与担心PSU和新的耗电量大的RTX 30卡的冷却问题相比,性能的提升微不足道
——只是不值得。
我想从4x RTX 2080 Ti升级到4x RTX 3090的唯一原因是如果我研究大型变压器或其他高
度依赖计算机的网络培训。但是,如果内存是个问题,在升级到rtx3090之前,您可以先
考虑一些内存技巧,以适合4xrtx2080tis上的大型模型。
如果你有一个或多个rtx2070gpu,我会三思而后行的升级。这些GPU相当不错。不过,如
果你发现自己经常受到8GB内存的限制,那么在eBay上转售这些GPU并获得RTX 3090还是
有意义的。这种推理对于其他许多gpu也是有效的:如果内存不足,升级是正确的。
问答与误解
小结:
PCIe通道和2X0.GPU中的PCIe设置无关紧要。对于4x GPU设置,它们仍然不重要。
RTX 3090和RTX 3080冷却会有问题。使用水冷卡或PCIe扩展卡。
NVLink没有用。只对GPU集群有用。
您可以在一台计算机上使用不同类型的gpu(例如,gtx1080+rtx2080+rtx3090),但您
无法有效地在它们之间并行化。
您需要Infiniband+50Gbit/s网络,以便在两台以上的机器上并行培训。
AMD CPU比Intel CPU便宜;Intel CPU几乎没有优势。
尽管软件工程做出了英勇的努力,但由于缺乏社区和张量核心等效物,AMD gpu+ROCm可
能无法与NVIDIA竞争至少1-2年。
如果您使用云gpu的时间不到1年,那么它将非常有用。桌面解决方案更便宜。
我需要PCIe 4.0吗?
一般来说,没有。如果您有一个GPU群集,PCI4.0是非常好的。如果你有一个8x的GPU机
器,这是可以的,但否则,它不会产生很多好处。它允许更好的并行化和更快的数据传
输。数据传输在任何应用程序中都不是瓶颈。在计算机视觉中,在数据传输管道中,数
据存储可能是一个瓶颈,但不是从CPU到GPU的PCIe传输。因此,对于大多数人来说,没
有真正的理由安装PCIe 4.0。这样做的好处是,在一个4gpu的环境下,并行性可能会提
高1-7%。
是否需要8x/16x PCIe通道?
通常与第4.0号PCIe相同。PCIe通道用于并行化和快速数据传输,这很少是一个瓶颈。在
4x车道上运行gpu是可以的,特别是如果你只有2个gpu。对于4GPU设置,我更喜欢每个G
PU 8个通道,但如果在所有4个GPU上并行,则以4x通道运行它们可能只会降低性能约5-
10%。
如果每个插槽占用3个PCIe插槽,如何安装4x RTX 3090?
您需要获得两个插槽变体中的一个,或者可以尝试使用PCIe扩展器将其展开。除了空间
,你还应该立即考虑冷却和一个合适的PSU。似乎最容易管理的解决方案将是获得4倍RT
X 3090 EVGA水电铜有一个定制的水冷却回路。这会让卡片很酷。EVGA多年来一直在生产
hydro-copper版本的GPU,我相信您可以相信他们的水冷GPU的质量。也许还有其他更便
宜的变体。
PCIe扩展器也可以解决空间和冷却问题,但您需要确保您的案例中有足够的空间来扩展
GPU。确保您的PCIe扩展器足够长!
如何冷却4x RTX 3090或4x RTX 3080?
参见上一节。
我可以使用不同GPU类型的多个GPU吗?
是的,你可以!但是你不能在不同类型的gpu之间高效地并行化。我可以想象一个3xrtx
3070+1rtx3090可以用于原型发布分割。另一方面,如果你能让模型适合那些gpu,那么
在4x RTX 3070 gpu上并行化会非常快。我能想到的另一个原因就是如果你要用你的旧G
PU。这很好,但是跨这些GPU的并行化将是低效的,因为最快的GPU将等待最慢的GPU赶上
同步点(通常是渐变更新)。
什么是NVLink,它有用吗?
一般来说,NVLink是没有用的。NVLink是gpu之间的高速互连。如果你有一个128+的GPU
集群是有用的。否则,与标准PCIe传输相比,它几乎没有任何好处。
我没有足够的钱,即使是你推荐的最便宜的GPU。我能做什么?
一定要买二手GPU。用过的RTX2070($400)和RTX2060($300)都很棒。如果你负担不起
,下一个最好的选择是尝试得到一个二手的GTX1070($220)或GTX1070TI($230)。如
果这太贵了,一辆二手GTX980Ti(6GB$150)或二手GTX1650 Super(190美元)。如果这
太贵了,最好使用免费的GPU云服务。这些通常提供有限时间/学分的GPU,之后您需要支
付。在服务和帐户之间轮换,直到你买得起自己的GPU。
GPU的碳足迹是多少?如何在不污染环境的情况下使用gpu?
我建了一个碳计算器计算你的学术碳足迹(从航班到会议的碳排放量+GPU时间)。计算
器也可以用来计算纯GPU碳足迹。你会发现gpu产生的碳比国际航班多得多。因此,如果
你不想有天文数字的碳足迹,你应该确保你有一个绿色的能源来源。如果我们地区没有
电力供应商提供绿色能源,最好的办法就是购买碳补偿。许多人对碳补偿持怀疑态度。
它们有用吗?他们是骗局吗?
我相信怀疑论在这种情况下是有害的,因为不做任何事比冒着被骗的风险更有害。如果
你担心诈骗,只需投资于抵消投资组合,以尽量减少风险。
十年前,我参与了一个产生碳补偿的项目。在中国,甲烷燃烧所产生的碳补偿是由燃烧
产生的。联合国官员跟踪了这一过程,他们要求对项目现场进行干净的数字数据和实地
检查。在这种情况下,所产生的碳补偿是非常可靠的。我相信其他很多项目都有类似的
质量标准。
我需要在两台机器之间并行处理什么?
如果你想安全起见,如果你想跨机器并行,你应该至少有+50Gbits/s的网卡来获得加速
。我建议至少有一个EDR Infiniband设置,这意味着网卡的带宽至少为50Gbit/s。在eB
ay上,两张带有有线电视的EDR卡大约500美元。
在某些情况下,10 Gbit/s以太网可能会让您逃脱惩罚,但这通常只适用于特殊网络(某
些卷积网络)或使用某些算法(Microsoft DeepSpeed)。
稀疏矩阵一般适用于稀疏矩阵吗?
似乎并非如此。由于稀疏矩阵的粒度需要有2个零值元素,每4个元素,稀疏矩阵需要非
常结构化。可以稍微调整一下算法,这涉及到将4个值集中到2个值的压缩表示中,但这
也意味着安培GPU不可能实现精确的任意稀疏矩阵乘法。
需要一个多CPU的英特尔处理器吗?
我不推荐英特尔CPU,除非你在Kaggle竞赛中大量使用CPU(CPU上有大量的线性代数)。
尽管如此,即使是在Kaggle竞赛和CPU上也仍然很不错。对于深度学习,AMD CPU比Inte
l CPU更便宜、更好。对于一个4xgpu构建,我的gotocpu将是一个线程裂土器。在我们的
大学里,我们用ThreadRipper建立了几十个系统,它们都工作得很好——还没有抱怨。
对于8x GPU系统,我通常会选择您的供应商有经验的cpu。在8x系统中,CPU和PCIe/系统
可靠性比直接的性能或直接的成本效益更重要。
电脑机箱的设计对散热有影响吗?
不,如果gpu之间至少有一个小间隙,gpu通常是完全冷却的。外壳设计将为您提供1-3摄
氏度的更好温度,GPU之间的空间将为您提供10-30摄氏度的改善。底线是,如果GPU之间
有空间,冷却就不重要了。如果GPU之间没有空间,则需要正确的冷却器设计(风扇风扇
)或其他解决方案(水冷、PCIe扩展器),但无论哪种情况,机箱设计和机箱风扇都无
关紧要。
AMD的gpu+ROCm会赶上NVIDIA的gpu+CUDA吗?
在未来1-2年内不会。这是一个三方面的问题:张量核心、软件和社区
AMD GPU在纯硅方面非常出色:出色的FP16性能,出色的内存带宽。然而,与NVIDIA gp
u相比,由于缺乏张量核心或等效内核,其深度学习性能较差。打包的低精度数学不能解
决这个问题。如果没有这个硬件特性,AMD gpu将永远不会有竞争力。传闻显示一些数据
中心卡张量核当量计划在2020年,但此后没有新的数据出现。仅仅拥有具有张量核心的
数据中心卡也意味着很少有人能负担得起这样的AMD gpu,这将给NVIDIA带来竞争优势。
假设AMD在未来引入了类似张量核心的硬件特性。然后很多人会说,“但是没有软件可以
为AMD GPU工作!我该怎么用呢?“这主要是一种误解。AMD的ROCm软件很好的支持了。
虽然我没有看到很多关于AMD GPU+Pythorch的经验报告,但所有的软件功能都是集成的
。似乎,如果你选择任何一个网络,你会很好地运行在AMD GPU上。所以AMD已经走了很
长的路,这个问题或多或少得到了解决。
然而,如果你解决软件和张量核心的缺乏,AMD仍然有一个问题:缺乏社区。如果你对N
VIDIA gpu有问题,你可以通过Google找到解决方案。这对NVIDIA GPU建立了很大的信任
。你有基础设施,使使用NVIDIA gpu容易(任何深入学习的框架,任何科学问题都是很
好的支持)。你有黑客和技巧,使使用NVIDIA gpu轻而易举(例如,apex)。你可以找
到有关NVIDIA GPU和编程的专家,而我知道的AMD GPU专家要少得多。
在社区方面,AMD有点像Julia vs Python。Julia有很多潜力,很多人会说,这是科学计
算的高级编程语言。然而,与Python相比,Julia很少被使用。这是因为Python社区非常
强大。Numpy、SciPy、Pandas是功能强大的软件包,大量的人聚集在一起。这个问题非
常类似于AMD对NVIDIA。因此,AMD很可能在张量核心等效物被引入之前(1/2到1年?)
一个强大的社区是围绕着ROCm建立的(2年?)。AMD总是会在特定的分组(如加密货币
挖掘、数据中心)中抢占一部分市场份额。不过,在深度学习方面,英伟达可能会继续
垄断至少几年。
什么时候使用云比使用专用GPU桌面/服务器更好?
经验法则:如果你想做一年以上的深度学习,买一个桌面GPU会更便宜。否则,云实例是
最好的,除非你有丰富的云计算技能,并希望从gpu数量的随意伸缩中获益。
对于云GPU比桌面更贵的确切时间点,在很大程度上取决于您所使用的服务,最好自己对
此做一点计算。下面我对一个带有1xv100的awsv100spot实例做了一个示例计算,并将其
与一个带有单个rtx3090的桌面的价格进行了比较(性能类似)。带有RTX 3090的桌面售
价2200美元(2-GPU裸骨+RTX 3090)。另外,假设你在美国,每千瓦时的电费要增加0.1
2美元。相比之下,AWS on-demand实例每小时2.14美元。
以每年15%的利用率,桌面使用:
(350瓦(GPU)+100瓦(CPU))*0.15(利用率)*24小时*365天=每年591千瓦时
每年额外的电费是每小时591美元。
桌面与云实例的盈亏平衡点为15%(您在一天中使用云实例的时间为15%),大约为300天
(2311美元对2270美元):
$2.14/小时*0.15(利用率)*24小时*300天=$2311
因此,如果您希望在300天后运行深度学习模型,那么最好购买一台桌面,而不是使用A
WS随需应变实例。
awspot实例稍微便宜一点,大约每小时0.9美元。然而,Twitter上的许多用户告诉我,
按需实例是一场噩梦,而spot实例却是噩梦地狱. AWS自己列出了v100gpu spot实例的平
均中断频率超过20%。这意味着您需要一个非常好的spot实例管理基础设施来使用spot实
例。但如果你有,AWS spot实例和类似的服务是相当有竞争力的。你需要拥有并运行一
个桌面20个月才能运行,即使与awspot实例相比也是如此。这意味着,如果您希望在未
来20个月内运行深度学习工作负载,那么台式机将更便宜(并且更易于使用)。
您可以对任何云服务进行类似的计算,以决定是否选择云服务或桌面。
常用利用率如下:
博士生个人桌面:<15%
博士生slurm GPU集群:>35%
公司范围内的slurm研究集群:>60%
一般来说,对于那些思考前沿思想比开发实用产品更重要的职业,利用率更低。一些领
域的利用率很低(可解释性研究),而其他领域的利用率则高得多(机器翻译、语言建
模)。一般来说,个人机器的利用率总是被高估。通常,大多数个人系统的利用率在5-
10%之间。这就是为什么我会强烈推荐slurgpu集群给研究小组和公司,而不是单独的桌
面GPU机器。
TL;DR建议
最佳GPU总成绩:RTX 3080和RTX 3090。
要避免的GPU(作为个人):任何特斯拉卡;任何Quadro卡;任何创始人版卡;Titan R
TX、Titan V、Titan XP。
成本效益高但价格昂贵:RTX 3080。
成本效益和成本更低:RTX 3070,RTX 2060超级
我几乎没有钱:购买二手卡。层次结构:RTX 2070($400)、RTX 2060($300)、GTX
1070($220)、GTX 1070 Ti($230)、GTX 1650 Super($190)、GTX 980 Ti(6GB$1
50)。
我几乎没有钱:有很多初创公司都在宣传他们的云:使用免费的云信用卡,在你买得起
GPU之前切换公司账户。
我是Kaggle:RTX 3070。
我是一个有竞争力的计算机视觉,预培训,或机器翻译研究员:4个RTX 3090。等到冷却
良好的工作版本,以及足够的电力被确认(我会更新这篇博客文章)。
我是NLP研究员:如果您不从事机器翻译、语言建模或任何类型的预培训工作,RTX 308
0就足够了,而且具有成本效益。
我开始深入学习,我是认真的:从RTX 3070开始。如果你在6-9个月后仍然是认真的,卖
掉你的RTX 3070,买4个RTX 3080。根据你下一步选择的领域(创业、Kaggle、研究、应
用深度学习),卖掉你的GPU,并在大约三年后购买更合适的GPU(下一代RTX 40s GPU)
。
我想尝试深入学习,但我不是认真的:RTX 2060 Super性能优异,但可能需要使用新的
电源。如果您的主板有一个PCIe x16插槽,并且您有一个300瓦左右的电源,GTX 1050
Ti是一个很好的选择,因为它不需要任何其他计算机组件来与您的台式计算机一起工作
。
用于小于128个GPU的并行模型的GPU群集:我们保证您可以购买30%的RTX冷却系统,如果
您购买的是RTX 30/80%的RTX,则只允许您购买30%的RTX。如果RTX 3090s的冷却不够,
请购买33%的RTX 6000 GPU或8x特斯拉A100。如果不允许您购买RTX gpu,我可能会选择
8x100超级微节点或8x RTX 6000节点。
用于跨128个GPU的并行模型的GPU群集:想想8倍的特斯拉A100设置。如果你使用512gpu
以上,你应该考虑得到一个dgx100超级系统,适合你的规模。
--
FROM 112.47.163.*