深度学习买什么:个人体验和GPU技巧

Tim Dettmers博士的深度学习和自然语言处理



NLP)深度学习(DL)是一个对计算能力有很高要求的领域,因此您对GPU的选择将从根本上决定您在该领域的经验。但是购买新的GPU时要考虑哪些重要属性?内存,核,张量核?如何在物有所值方面做出最佳选择?在本文中,我将详细分析所有这些问题,常见的误解,使您对GPU拥有直观的了解,并提供了一些技巧来帮助您做出正确的选择。



本文旨在为您提供对GPU的不同理解级别,其中包括。 NVIDIA的全新Ampere系列。您可以选择:



  1. 如果您对GPU的细节不感兴趣,究竟是什么使GPU快速运行,以及NVIDIA RTX 30 Ampere系列新GPU的独特之处,则可以跳过本文的开头,直接查看速度和每1美元成本的速度图表以及建议部分。这是本文的核心,也是最有价值的内容。
  2. 如果您对特定问题感兴趣,那么我将在本文的最后一部分中介绍最常见的问题。
  3. 如果您需要深入了解GPU和Tensor Core的工作方式,那么最好的选择是从头到尾阅读本文。根据对特定主题的了解,可以跳过一章或两章。


每个部分前面都有一个简短摘要,可帮助您决定是否完整阅读它。



内容



概述

GPU如何工作?

影响处理速度最重要的GPU特性

张量核

矩阵乘法不张芯

矩阵乘法与张量内核

内存带宽

共享内存/ L1缓存/寄存器

的GO安培效率估计

理论安培

速度估计实际安速度估计

估计可能不准确

别的遵循什么考虑安培/ RTX 30

稀疏学习

低精度计算

新风扇设计和散热

问题三槽卡和电源问题

深度学习中的GPU效率

GPU

GPU

11 ?

11 ?



GPU-

GPU

GPU?



PCIe 4.0?

PCIe 8x/16x?

RTX 3090, 3 PCIe?

4 RTX 3090 4 RTX 3080?

GPU ?

NVLink, ?

. ?

?

?

Intel GPU?

?

AMD GPU + ROCm - NVIDIA GPU + CUDA?

, – GPU?

,





本文的结构如下。首先,我解释了使GPU快速运行的原因。我将描述处理器与GPU,张量核心,内存带宽,GPU内存层次结构之间的差异,以及它们与GO任务中的性能之间的关系。这些说明可能有助于您更好地了解所需的GPU参数。然后,我将对GPU性能进行理论估计,并与NVIDIA进行的一些速度测试相对应,以获取可靠的性能数据而不会产生偏差。我将描述购买时要考虑的NVIDIA RTX 30 Ampere系列GPU的独特功能。然后,我将针对具有1-2个芯片,4个,8个和GPU集群的选项给出GPU建议。然后会有一部分回答我在Twitter上被问到的常见问题。它还将消除常见的误解,并突出各种问题,例如云与台式机,散热,AMD与NVIDIA等。



GPU如何工作?



如果您经常使用GPU,则了解GPU的工作方式将很有帮助。这些知识将帮助您理解为什么在某些情况下GPU速度较慢而在其他情况下GPU速度更快。然后,您可能会了解是否完全需要GPU,以及将来可以使用哪些硬件选件与之竞争。如果只需要一些有用的性能信息和用于选择特定GPU的参数,则可以跳过此部分。关于GPU如何工作的最好的一般解释是Quora答案



这是一个一般性的解释,它很好地解释了为什么GPU比处理器更适合GO的问题。如果我们研究细节,就可以了解GPU之间的差异。



影响处理速度的最重要GPU特性



本节将帮助您更直观地思考GO领域的性能。这种了解将帮助您自己评估未来的GPU。



张量核心



概要:



  • Tensor内核将计数乘法和加法所需的时钟周期数减少了16倍-在我的示例中,一个32×32矩阵从128个时钟周期减少到8个时钟周期。
  • Tensor内核减少了对重复访问共享内存的依赖,从而节省了内存访问周期。
  • Tensor内核是如此之快,以至于计算不再是瓶颈。唯一的瓶颈是向它们的数据传输。


如今有这么多廉价的GPU,几乎每个人都可以负担得起带有张量核的GPU。因此,我始终建议使用具有张量核心的GPU。了解它们的工作方式以了解这些专门用于矩阵乘法的计算模块的重要性非常有用。使用一个矩阵乘法A * B = C的简单示例,其中所有矩阵的大小为32×32,我将向您展示在有和没有张量内核的情况下乘法的外观。



要了解这一点,您首先需要了解钢筋的概念。如果处理器以1 GHz运行,则执行10 9每秒滴答声。每个时钟都是进行计算的机会。但在大多数情况下,操作需要一个时钟周期以上。事实证明,这是一条流水线-为了开始执行一项操作,您首先需要等待所需的时钟周期以完成上一个操作。这也称为延迟操作。



以下是一些重要的持续时间或操作延迟(以滴答为单位):



  • 存取高达48 GB的全局内存:〜200个时钟周期。
  • 共享内存访问(每个流式多处理器最多164 KB):〜20个时钟。
  • 组合乘法加法(SUS):4个小节。
  • 张量内核中的矩阵乘法:1个时钟周期。


另外,您需要知道GPU中最小的线程单元(一个32个线程的数据包)称为扭曲。 Warp通常同步工作-Warp中的所有线程都需要互相等待。所有GPU内存操作均针对扭曲进行了优化。例如,从全局内存中加载需要32 * 4字节-32个浮点数,warp中的每个线程都需要一个这样的数字。在流式多处理器(相当于GPU的处理器内核)中,最多可以有32个线程= 1024个线程。多处理器资源在所有活动扭曲之间共享。因此,有时我们需要较少的扭曲来工作,以便一个扭曲具有更多的寄存器,共享的内存和张量核心资源。



对于这两个示例,我们假设我们拥有相同的计算资源。在这个32×32矩阵乘法的小例子中,我们在一个多处理器上使用8个多处理器(约占RTX 3090的10%)和8个扭曲。



没有张量内核的矩阵乘法



如果我们需要将矩阵A * B = C相乘,每个矩阵的大小为32×32,那么我们需要将不断访问的内存中的数据加载到共享内存中,因为访问延迟大约少10倍(不是200巴和20巴)。共享内存中的一个内存块通常称为存储图块,或简称为图块。可以使用2 * 32扭曲并行地将两个32×32浮点数加载到共享内存块中。我们有8个多处理器,每个处理器有8个扭曲,因此,由于并行化,我们需要从全局内存到共享内存执行一个顺序加载,这将需要200个时钟周期。



要乘法矩阵,我们需要从共享内存A和共享内存B加载32个数字的向量,并执行CMS,然后将输出存储在寄存器C中。我们将这项工作除以使得每个多处理器处理8个标量积(32×32 )以计算C的8个输出数据。为什么恰好有8个(在旧算法中为4),这纯粹是技术特性。为了弄清楚,我建议阅读Scott Gray文章。这意味着我们将有8个对共享内存的访问,每个访问花费20个周期,以及8个CMS操作(并行32个),每个花费4个周期。总的来说,代价将是:



200个滴答声(全局内存)+ 8 * 20个滴答声(共享内存)+ 8 * 4个滴答声(CMS)= 392个滴答声



现在让我们看一下张量核的此开销。



张量内核的矩阵乘法



张量内核可用于在一个周期中将4×4矩阵相乘。为此,我们需要将内存复制到张量核心。如上所述,我们需要从全局内存中读取数据(200滴答)并将其存储在共享内存中。要相乘32×32矩阵,我们需要在张量内核中执行8×8 = 64运算。一个多处理器包含8个张量核。拥有8个多处理器,我们有64个张量核-数量足够多!我们可以在1个传输(20个时钟周期)中将数据从共享内存传输到张量核心,然后并行(1个时钟周期)执行所有这64个操作。这意味着张量内核中矩阵乘法的总成本为:



200个时钟周期(全局内存)+ 20个时钟周期(共享内存)+1个时钟周期(张量内核)= 221个时钟周期



因此,使用张量内核,我们将矩阵乘法的成本从392个时钟周期减少到221个时钟周期。在我们的简化示例中,张量内核降低了共享内存访问和SNS操作的成本。



尽管此示例大致遵循带有和不带有张量内核的计算步骤的顺序,但请注意,这是一个非常简化的示例。在实际情况下,矩阵乘法涉及的内容与大型内存块和动作序列稍有不同。



但是,在我看来,这个示例清楚地说明了为什么下一个属性(内存带宽)对于具有张量核心的GPU如此重要。由于将矩阵与张量核相乘时,全局内存是最昂贵的东西,因此,如果我们能够减少访问全局内存的延迟,我们的GPU将更快。这可以通过提高内存时钟速度(每秒更多的时钟,但更多的热量和功耗)或增加一次可以传输的元素数量(总线宽度)来实现。



记忆体频宽



在上一节中,我们看到了张量内核有多快。它们是如此之快,以致于大多数时间它们都处于空闲状态,等待来自全局内存的数据到达。例如,在BERT Large项目的训练中,使用了非常大的矩阵-越大,张量内核越好-TFLOPS中张量内核的利用率约为30%,这意味着张量内核处于空闲状态的时间为70%。



这意味着当比较两个具有张量内核的GPU时,每个GPU的最佳性能指标之一是内存带宽。例如,A100 GPU的带宽为1.555 GB / s,而V100的带宽为900 GB / s。一个简单的计算表明,A100将比V100快1555/900 = 1.73倍。



共享内存/ L1缓存/寄存器



由于速度限制因素是将数据传输到张量内核的内存,因此我们必须转向GPU的其他属性,以允许我们加快向其的数据传输。与此相关的是共享内存,L1缓存和寄存器数量。要了解内存层次结构如何加速数据传输,了解矩阵如何在GPU中相乘会很有帮助。



对于矩阵乘法,我们使用的内存层次结构从慢速全局内存到快速本地共享内存,再到超快速寄存器。但是,内存越快,内存越小。因此,我们需要将矩阵划分为较小的矩阵,然后在本地共享内存中将这些较小的图块相乘。然后,它将迅速发生,并且更接近流式多处理器(PM)-相当于处理器内核。 Tensor内核使我们可以再迈出一步:我们获取所有切片并将其中一些切片加载到张量内核中。共享内存处理矩阵图块的速度比全局GPU内存快10到50倍,而张量内核寄存器处理矩阵图块的速度比全局GPU内存快200倍。



增加磁贴的大小使我们可以重用更多的内存。我在文章TPU vs GPU中对此进行了详细介绍在TPU中,每个张量核心都有一个非常大的图块。每次从全局内存进行新的传输时,TPU都可以重用更多的内存,这使得它们在处理矩阵乘法方面比GPU效率更高。



切片大小由每个PM的内存量决定-相当于GPU上的处理器内核。根据体系结构,这些卷为:



  • Volta:96KB共享内存/ 32KB L1
  • 图灵:64KB共享内存/ 32KB L1
  • 安培:164KB共享内存/ 32KB L1


您可以看到Ampere具有更多的共享内存,这允许使用更大的切片,从而减少了全局内存访问的次数。因此,Ampere可以更有效地利用GPU内存带宽。这样可以将性能提高2-5%。这种增加在大型矩阵上尤其明显。



安培张量内核还有另一个优点-它们具有多个线程共有的大量数据。这减少了寄存器调用的次数。寄存器的大小限制为每个PM 64 k或每个线程255。与Volta相比,Ampere Tensor Core使用的寄存器少3倍,这意味着共享内存中每个图块有更多活动的Tensor Core。换句话说,我们可以用相同数量的寄存器加载3倍的张量内核。但是,由于带宽仍然是瓶颈,因此与理论相比,实际中TFLOPS的增加可以忽略不计。新的张量内核将性能提高了大约1-3%。



总体而言,可以看出,Ampere体系结构经过优化,可以通过改进的层次结构更有效地使用内存带宽-从全局内存到共享内存图块再到张量核心寄存器。



评估安培在GO中的有效性



概要:



  • 基于内存带宽和Ampere GPU改进的内存层次结构的理论估计可预测1.78-1.87倍的加速。
  • NVIDIA发布了有关Tesla A100和V100 GPU速度测量的数据。它们更多的是市场营销,但是可以在其基础上构建公正的模型。
  • 无偏模型表明,与V100相比,Tesla A100在自然语言处理方面快1.7倍,在计算机视觉方面快1.45倍。


本部分适用于那些希望深入了解如何获得Ampere GPU性能得分的技术细节的人。如果您不感兴趣,则可以安全地跳过它。



安培理论速度估算



鉴于以上论点,人们可以预期,具有张量核的两种GPU架构之间的差异应该主要在内存带宽上。额外的好处来自共享存储器和L1高速缓存的增加以及寄存器的有效使用。



与Tesla V100相比,Tesla A100 GPU的带宽增加了1555/900 = 1.73倍。合理的是,由于较大的总内存,速度会提高2-5%,而由于张量内核的改善,速度会提高1-3%。事实证明,加速度应该是1.78到1.87倍。



Ampere



假设对于Ampere,Turing或Volta等架构,我们只有一个GPU得分。容易将这些结果外推到相同架构或系列的其他GPU。幸运的是,NVIDIA已经进行了基准测试,比较了A100和V100在与计算机视觉和自然语言理解有关的各种任务上的性能。不幸的是,NVIDIA竭尽所能,使这些数字无法直接进行比较-在测试中,他们使用了不同的数据包大小和不同数量的GPU,以至于A100无法胜出。因此,从某种意义上讲,获得的绩效指标部分是诚实的,部分是广告。通常,可以说随着A100具有更多内存,增加数据包大小是合理的-但是,为了比较GPU架构,我们需要比较具有相同数据包大小的任务的无偏性能数据。



为了获得无偏差的估计,您可以通过两种方式扩展V100和A100的测量:考虑数据包大小的差异,或者考虑GPU数量的差异-1 vs.8。我们很幸运,可以在NVIDIA提供的数据中找到两种情况的相似估计。



数据包大小加倍会使每秒的图像吞吐量提高13.6%(对于卷积神经网络,CNN)。我在RTX Titan上使用Transformer架构测量了相同任务的速度,令人惊讶的是,得到了相同的结果-13.5%。这似乎是一个可靠的估计。



通过增加网络的并行度,通过增加GPU的数量,由于与网络相关的开销,我们将失去性能。但是与V100 8x GPU(NVLink 2.0)相比,A100 8x GPU在网络(NVLink 3.0)上的性能更好。如果查看NVIDIA的数据,则可以看到在处理SNS时,具有第八个A100的系统的开销比具有第八个V10000的系统少5%。这意味着,如果从第一个A10000过渡到第8个A10000的加速度为7.0倍,那么从第一个V10000过渡到第8个V10000的加速度仅为6.67倍。对于变压器,这个数字是7%。



利用这些信息,我们可以直接从NVIDIA提供的数据中估算某些特定GO架构的加速。与特斯拉V100相比,特斯拉A100具有以下速度优势:



  • SE-ResNeXt101:1.43次。
  • Masked-R-CNN:1.47倍。
  • 变压器(12层,机器翻译,WMT14 zh-cn):1.70倍。


因此,对于计算机视觉,这些数字是在理论估计值以下获得的。这可能是由于张量尺寸较小,准备像img2col或FFT这样的矩阵乘法所需的操作开销或无法使GPU饱和的操作(生成的层通常相对较小)所致。它也可能是某些体系结构(分组卷积)的产物。



变压器速度的实际评估与理论评估非常接近。可能是因为处理大型矩阵的算法非常简单。我将使用实际估算来计算GPU成本效率。



估计值可能不正确



以上是A100和V100的比较等级。过去,NVIDIA秘密地降低了“游戏” RTX GPU的性能:降低了张量核心的利用率,增加了用于散热的游戏迷,并禁止在GPU之间传输数据。RT 30系列也有可能在Ampere A100上造成未知的损伤。



对于Ampere / RTX 30,还要考虑什么



概要:



  • Ampere允许您基于稀疏矩阵来训练网络,这可以将训练过程最多加快两倍。
  • 稀疏网络培训仍然很少使用,但是由于有了它,安培不会很快过时。
  • Ampere具有新的低精度数据类型,可以更轻松地使用低精度数据,但不一定会比以前的GPU提速。
  • 如果您在GPU之间有自由空间,那么新的风扇设计会很好-但是,尚不清楚彼此靠近的GPU是否可以有效冷却。
  • RTX 3090的3插槽设计将对4种GPU构建构成挑战。可能的解决方案是使用2插槽选件或PCIe扩展器。
  • 四个RTX 3090所需的功率将超过市场上任何标准PSU所能提供的。


与NVIDIA Turing RTX 20相比,新的NVIDIA Ampere RTX 30具有更多的优势-稀疏的训练和通过神经网络改进的数据处理。其余属性(例如新数据类型)可以看作是对便捷性的简单增强-它们以与Turing系列相同的方式加快了工作速度,而无需进行其他编程。



稀疏学习



安培使您可以高速自动地将稀疏矩阵相乘。它的工作原理是这样的-您将一个矩阵切成4个元素,并且支持稀疏矩阵的张量内核允许这四个元素中的两个为零。由于矩阵乘法过程中的带宽需求减少了一半,因此速度提高了2倍。



在我的研究中,我使用过稀疏的学习网络。这项工作尤其受到批评,原因是我“减少了网络所需的FLOPS,但由于GPU无法快速乘以稀疏矩阵,因此没有提高速度”。好-在张量内核,我的算法或任何其他算法中出现了对稀疏矩阵乘法的支持(链接linklinklink),使用稀疏矩阵,现在在训练期间实际上可以以两倍的速度运行。



尽管此属性目前被认为是实验性质的,并且稀疏网络训练尚未普遍应用,但是如果您的GPU支持此技术,那么您就可以为将来的稀疏训练做好准备。



低精度计算



我已经展示了新的数据类型如何在我的工作中提高低保真反向传播的稳定性。到目前为止,使用16位浮点数进行稳定反向传播的问题在于常规数据类型仅支持范围[-65,504,65,504]。如果您的梯度超出此间隔,它将爆炸,产生NaN值。为了防止这种情况,我们通常在反向传播之前通过将它们乘以一个小数来缩放值,以避免梯度爆炸。



Brain Float 16(BF16)格式将更多位用于指数,因此可能值的范围与FP32中的相同:[-3 * 10 ^ 38,3 * 10 ^ 38]。 BF16的精度较低,即较少的有效数字,但训练网络时梯度的准确性并不那么重要。因此,BF16确保您不必进行缩放或担心梯度爆炸。使用这种格式,我们应该看到训练稳定性有所提高,但代价是精度损失很小。



这对您意味着什么:BF16精度可以比FP16精度更一致,但是速度相同。有了TF32精度,您将获得几乎与FP32一样的稳定性,以及与FP16几乎一样的加速度。另外,使用这些数据类型时,您可以将FP32更改为TF32,将FP16更改为BF16,而无需更改代码!



通常,这些新数据类型可以被认为是惰性的,从某种意义上来说,您可以使用旧数据类型并进行一些编程(正确缩放,初始化,归一化,使用Apex)来获得它们的所有好处。因此,这些数据类型不提供加速,但使在训练中使用低保真度更加容易。



新风扇设计和散热问题



RTX 30系列的新风扇设计具有吹风风扇和抽气风扇。设计本身很巧妙,如果GPU之间有可用空间,它将非常有效地工作。但是,目前尚不清楚如果将GPU彼此迫在一起,GPU的行为会如何。吹风机可以将空气从其他GPU吹走,但是由于形状与以前不同,因此无法确定其工作方式。如果您打算将1个或2个GPU放在有4个插槽的位置,那么您应该没有问题。但是,如果要并排使用3-4个RTX 30 GPU,我将首先等待有关温度条件的报告,然后再决定是否需要更多风扇,PCIe扩展器或其他解决方案。



无论如何,水冷可以帮助解决散热器的问题。许多制造商都为RTX 3080 / RTX 3090卡提供了这样的解决方案,即使有4个,它们也不会变热。但是,如果要构建带有4个GPU的计算机,则不要购买现成的GPU解决方案,因为在大多数情况下这将非常困难。分配散热器。



解决散热问题的另一种方法是购买PCIe扩展器并在机箱内分发卡。这非常有效-我和Vanington大学的其他研究生成功使用了该选项。看起来不太整洁,但是GPU不会变热!此外,如果您没有足够的空间容纳GPU,此选项也将有所帮助。如果您的箱子有空,则可以购买带有三个插槽的标准RTX 3090,然后使用扩展器将它们分配到整个箱子中。因此,可以同时解决4个RTX 3090的空间和散热问题





1:4个带PCIe扩展器的GPU



三插槽卡和电源问题



RTX 3090占用3个插槽,因此无法与NVIDIA的默认风扇一起使用4个。这并不奇怪,因为它需要350W TDP。 RTX 3080的性能略逊一筹,需要320W TDP,并且很难为带有四个RTX 3080的系统散热。



用4个350W = 1400W的卡为系统供电也很困难。有1600 W的电源(PSU),但是200 W的处理器和主板可能不够用。最大功耗仅在满载时发生,并且在HE期间,处理器通常负载较轻。因此,一个1600W PSU可能适用于4个RTX 3080,但是对于4个RTX 3090s,最好寻找1700W或更大的PSU。当今市场上没有这样的PSU。服务器PSU或用于加密矿工的特殊块可能可以工作,但它们的外形可能不寻常。



深度学习中的GPU效率



下一个测试不仅包括Tesla A100和Tesla V100的比较-我构建了适合该数据的模型,还建立了四个不同的测试,分别对Titan V,Titan RTX,RTX 2080 Ti和RTX 2080进行了测试(链接链接链接链接)。



我还通过内插测试数据点来扩展了诸如RTX 2070,RTX 2060或Quadro RTX等中端卡的基准测试结果。通常,在GPU体系结构中,此类数据相对于矩阵乘法和内存带宽进行线性​​缩放。



我仅以混合精度从FP16培训测试中收集数据,因为我认为没有理由使用FP32数字进行培训。





数字:2:通过RTX 2080 Ti标准化的性能



RTX 2080 Ti相比,RTX 3090在卷积网络上的运行速度快1.57倍,在变压器上运行的速度快1.5倍,并且成本提高了15%。事实证明,自Turing RTX 20系列以来,Ampere RTX 30表现出了显着改进。



每笔成本的GPU深度学习率



哪个GPU性价比最高?这完全取决于系统的总成本。如果价格昂贵,则有必要投资更昂贵的GPU。



以下是PCIe 3.0上三个组件的数据,我将它们用作具有2个或4个GPU的系统成本的基准。我以这个基本成本为基础,然后加上GPU成本。我将后者计算为亚马逊和eBay报价之间的平均价格。对于新的安培,我只使用一个价格。结合上述性能数据,得出每美元的性能值。对于具有8个GPU的系统,我将Supermicro准系统作为RTX服务器的行业标准。显示的图形不包括内存要求。您首先需要考虑所需的内存,然后在图表上寻找最佳选择。内存示例提示:



  • 使用预训练的变压器,或从头开始训练小型变压器> = 11 GB。
  • 在研究或生产中培训大型变压器或卷积网络:> = 24 GB。
  • 原型神经网络(变压器或卷积网络)> = 10 GB。
  • 参加Kaggle竞赛> = 8 GB。
  • 计算机视觉> = 10 GB。




数字:





3:与RTX 3080相比的标准化美元性能4:标准化美元兑RTX 3080的性能





5:相对于RTX 3080的标准化美元性能。



GPU建议



我再次强调:选择GPU时,首先要确保它有足够的内存来执行您的任务。选择GPU的步骤应如下:



  • , GPU: Kaggle, , , , - .
  • , .
  • GPU, .
  • GPU - ? , RTX 3090, ? GPU? , GPU?


其中一些步骤要求您考虑所需的内容,并对其他人在执行相同操作时使用多少内存进行一些研究。我可以提供一些建议,但是我不能完全回答这方面的所有问题。



什么时候需要超过11GB的存储空间?



我已经提到过,使用变压器时,您至少需要11 GB,而在这方面进行研究时,至少需要24 GB。大多数先前的预训练模型对内存的要求很高,并且已经在具有至少11GB内存的RTX 2080 Ti或更高版本的GPU上进行了训练。因此,如果您的内存不足11 GB,则启动某些模型可能会变得困难甚至无法实现。



其他需要大量内存的领域包括医学成像,高级计算机视觉模型以及所有具有大图像的领域。



总体而言,如果您希望开发出能超越竞争对手的模型-无论是研究,工业应用还是Kaggle竞争-额外的内存都可以为您带来竞争优势。



何时只有不到11 GB的内存可以解决?



RTX 3070和RTX 3080卡功能强大,但内存不足。但是,对于许多任务,可能不需要一定数量的内存。



RTX 3070是GO训练的理想选择。可以通过缩小网络规模或使用较小的映像来获得大多数体系结构的基本联网技能。如果我必须学习GO,我会选择RTX 3070,或者如果我买得起的话甚至会选择一些。



RTX 3080是当今最具成本效益的卡,因此是原型制作的理想选择。原型制作需要大量的内存,而且内存价格便宜。所谓原型,是指在任何领域进行原型制作-研究,Kaggle竞赛,为创业公司尝试想法,尝试研究代码。对于所有这些应用,RTX 3080最适合。



例如,如果我正在运行研究实验室或初创企业,则我将预算总额的66-80%用于RTX 3080机器,并将20-33%用于具有可靠水冷功能的RTX 3090机器。 RTX 3080更具成本效益,可以通过Slurm访问... 由于原型制作需要在敏捷模式下完成,因此需要使用较小的模型和数据集来完成。而RTX 3080则是完美的选择。一旦学生/同事构建了出色的原型模型,他们就可以在RTX 3090上推出该模型,并扩展到更大的模型。



一般建议



总体而言,RTX 30系列型号非常强大,我绝对推荐它们。考虑前面所述的内存要求,以及电源和散热要求。如果在GPU之间有空闲插槽,则冷却不会有问题。否则,请为RTX 30卡提供水冷,PCIe扩展器或带风扇的高效卡。



总的来说,我会向有能力的人推荐RTX 3090。它不仅现在适合您,而且在接下来的3-7年内仍将非常有效。在未来三年内,HBM内存的价格不太可能便宜得多,因此下一个GPU将仅比RTX 3090好25%。在5-7年内,我们可能会看到廉价的HBM内存,在此之后,您肯定需要更新机群...



如果要使用多个RTX 3090构建系统,请为它们提供足够的散热和电源。



除非您对竞争优势有严格的要求,否则我建议您使用RTX3080。这是一种更具成本效益的解决方案,它将为大多数网络提供快速培训。如果您要执行所需的内存技巧,并且不介意编写额外的代码,则有很多技巧可以将24GB网络塞入10GB GPU中。



RTX 3070还是用于GO培训和原型制作的出色显卡,比RTX 3080便宜200美元。如果您买不起RTX 3080,则可以选择RTX 3070。



如果您的预算紧张并且RTX 3070对您来说太贵了,您可以在eBay上找到二手的RTX 2070,价格约为260美元。目前还不清楚RTX 3060是否会问世,但是如果您的预算紧张,那么值得等待。如果它的价格与RTX 2060和GTX 1060相匹配,那么它应该在$ 250- $ 300左右,并且应该表现不错。



针对GPU群集的建议



GPU群集布局在很大程度上取决于其用途。对于具有1024个或更多GPU的系统,主要是网络的存在,但是如果一次使用的GPU不超过32个,则没有必要投资建设强大的网络。



通常,根据CUDA协议,RTX卡不能在数据中心中使用。但是,大学通常可能是该规则的例外。如果您想获得此类许可,请联系NVIDIA代表。如果可以使用RTX卡,那么我建议使用Supermicro的标准8 GPU RTX 3080或RTX 3090系统(如果可以保持凉爽的话)。少量的8个A10000节点可确保在原型制作后有效地使用模型,尤其是在无法冷却带有8个RTX 3090s的服务器时。在这种情况下,我建议使用A10000而不是RTX 6000 / RTX 8000,因为A10000具有很高的成本效益,并且不会很快老化。



如果您需要在GPU群集(256个GPU或更多)上训练非常大的网络,我建议您搭配A10000的NVIDIA DGX SuperPOD系统。通过256个GPU,联网变得至关重要。如果要扩展到超过256个GPU,则需要一个高度优化的系统,该系统的标准解决方案将不再起作用。



尤其是在1,024 GPU甚至更高的GPU规模上,市场上唯一的竞争解决方案仍然是Google TPU Pod和NVIDIA DGX SuperPod。在这种规模下,我更喜欢Google TPU Pod,因为它们专用的网络基础结构看起来比NVIDIA DGX SuperPod更好-尽管原则上两个系统非常接近。在应用程序和硬件中,GPU系统比TPU更灵活,而TPU系统支持更大的模型并具有更好的扩展性。因此,两种系统都有其优点和缺点。



哪些GPU最好不要购买



我不建议一次购买多个RTX Founders Edition或RTX Titans,除非您有PCIe扩展器来解决其散热问题。与图中所示相比,它们只会变热,并且速度会急剧下降。与正常冷却的RTX 2070相比,四个RTX 2080 Ti Founders Editions将迅速加热到90°C,降低时钟速度,并且运行速度较慢。



我建议仅购买万不得已的Tesla V100或A100,因为禁止在公司的数据中心中使用它们。如果需要在大型GPU集群上训练非常大的网络,也可以购买它们-它们的性价比不理想。



如果您能负担得起更好的价格,请不要购买GTX 16系列卡。它们没有张量核心,因此它们在GO中的性能很差。我会选择二手RTX 2070 / RTX 2060 / RTX 2060 Super。如果您的预算非常有限,可以借用它们。



什么时候最好不要购买新的GPU?



如果您已经拥有RTX 2080 Ti或更高版本,则升级到RTX 3090几乎是没有意义的。您的GPU已经不错,与购买的电源和散热问题相比,速度优势将微不足道-这是不值得的。



我要从四个RTX 2080 Ti升级到四个RTX 3090的唯一原因是,如果我正在研究非常依赖计算能力的超大型变压器或其他网络。但是,如果遇到内存问题,则应首先考虑各种技巧,以便将大型模型塞入现有内存中。



如果您拥有一个或多个RTX 2070,那么升级之前,如果您是我,我会三思而后行。这些都是相当不错的GPU。如果8GB的存储空间不足以满足您的需求,那么在eBay上出售它们并购买RTX 3090可能是有意义的-许多其他GPU就是这种情况。如果没有足够的内存,则正在酝酿更新。



回答问题和误解



概要:



  • PCIe通道和PCIe 4.0与双GPU系统无关。对于具有4个GPU的系统,实际上没有。
  • 冷却RTX 3090和RTX 3080非常困难。使用水冷却器或PCIe扩展器。
  • 只有GPU群集才需要NVLink。
  • 可以在同一台计算机上使用不同的GPU(例如,GTX 1080 + RTX 2080 + RTX 3090),但是有效的并行化将不起作用。
  • 要并行运行两台以上的计算机,您需要Infiniband和一个50 Gbps网络。
  • AMD处理器比Intel处理器便宜,而后者几乎没有优势。
  • 尽管工程师进行了英勇的努力,但由于在未来1-2年内缺少社区和等效的张量内核,AMD GPU + ROCm几乎无法与NVIDIA竞争。
  • 如果使用时间少于一年,则云GPU将会是有益的。之后,桌面版本变得更便宜。


我需要PCIe 4.0吗?



通常不会。PCIe 4.0非常适合GPU群集。如果您有一台8 GPU的计算机,则很有用。在其他情况下,它几乎没有优势。它改善了并行化并更快地传输了数据。但是数据传输不是瓶颈。在计算机视觉中,瓶颈可能是数据存储,而不是PCIe数据从GPU到GPU的传输。因此,大多数人没有理由使用PCIe 4.0。它将使四个GPU的并行化提高1-7%。



我需要PCIe 8x / 16x通道吗?



与PCIe 4.0一样,通常不会。PCIe通道是并行化和快速数据传输所必需的,这几乎从来不是瓶颈。如果您有2个GPU,那么4条线就足够了。对于4个GPU,我希望每个GPU有8条线,但是如果有4条线,则性能只会降低5-10%。



当四个RTX 3090各自占用3个PCIe插槽时,它们如何安装?



您可以为一个插槽购买两个选项之一,或使用PCIe扩展器分发它们。除了空间之外,您还需要立即考虑冷却和合适的电源。显然,最简单的解决方案是购买带有专用水冷却回路的4 x RTX 3090 EVGA水力铜。EVGA多年来一直在生产铜水冷版显卡,您可以放心其GPU的质量。也许有更便宜的选择。



PCIe扩展器可以解决空间和散热问题,但是您的机箱应有足够的空间容纳所有卡。并确保扩展器足够长!



如何冷却4 RTX 3090或4 RTX 3080?



请参阅上一节。



我可以使用多种不同的GPU类型吗?



是的,但是您将无法有效地并行处理工作。我可以想象一个运行3个RTX 3070 + 1个RTX 3090的系统。另一方面,如果将模型塞入其中,则四个RTX 3070之间的并行化将非常迅速。您可能需要它的另一个原因是使用旧的GPU。它会起作用,但并行化将无效,因为最快的GPU将在同步点等待最慢的GPU(通常在渐变更新中)。



什么是NVLink,我需要它吗?



您通常不需要NVLink。这是多个GPU之间的高速通信。如果您具有128个或更多GPU的集群,则需要使用它。在其他情况下,与标准PCIe数据传输相比,它几乎没有优势。



即使您提出最便宜的建议,我也没有钱。该怎么办?



绝对购买二手GPU。二手的RTX 2070(400美元)和RTX 2060(300美元)就可以了。如果您买不起它们,那么最好的选择是二手GTX 1070($ 220)或GTX 1070 Ti($ 230)。如果那太贵了,找到二手GTX 980 Ti(6GB $ 150)或GTX 1650 Super($ 190)。如果价格也很昂贵,那么最好使用云服务。他们通常会为GPU提供时间或功率限制,之后您需要付费。交换服务,直到您负担得起自己的GPU。



在两台机器之间并行进行项目需要什么?



要通过两台计算机之间的并行化来加快工作速度,您需要50 Gbps或更多的网卡。我建议至少安装EDR Infiniband-即速度至少为50 Gbps的网卡。在eBay上用电缆连接的两张EDR卡将花费您500美元。



在某些情况下,您可以使用10 Gbps以太网,但这通常仅适用于某些类型的神经网络(某些卷积网络)或某些算法(Microsoft DeepSpeed)。



稀疏矩阵乘法算法是否适用于任何稀疏矩阵?



显然不是。由于要求矩阵每4个元素具有2个零,因此稀疏矩阵必须结构良好。通过将4个值作为两个值的压缩表示进行处理,可能有可能略微调整算法,但这将意味着将无法获得稀疏矩阵与Ampere的精确乘法。



我需要一个Intel处理器来运行多个GPU吗?



我不建议使用Intel处理器,除非您在Kaggle竞赛中使处理器超载(在处理器中加载了线性代数计算)。即使在这样的竞赛中,AMD处理器也很棒。平均而言,AMD处理器对GO而言更便宜,更好。对于4-GPU构建,Threadripper是我的最终选择。在我们的大学中,我们已经收集了数十个基于此类处理器的系统,它们都运行良好,没有任何投诉。对于具有8个GPU的系统,我会选择制造商具有经验的处理器。8卡系统中的处理器和PCIe可靠性比速度或成本效率更为重要。



外壳的形状对冷却是否重要?



没有。如果GPU之间的间隙很小,通常GPU会完美冷却。不同的机壳可以为您提供1-3°C的差异,而不同的卡间距可以为您提供10-30°C的差异。通常,如果卡之间有缝隙,则冷却没有问题。如果没有间隙,则需要合适的风扇(吹风扇)或其他解决方案(水冷却,PCIe扩展器)。无论如何,外壳的类型及其风扇都没有关系。



AMD GPU + ROCm是否会赶上NVIDIA GPU + CUDA?



未来几年不会。存在三个问题:张量内核,软件和社区。



AMD的GPU晶体本身是不错的:FP16上的出色性能,出色的内存带宽。但是,与NVIDIA的GPU相比,缺少张量核心或等效核心导致其性能受到影响。如果没有在硬件中实现张量内核,AMD GPU将永远无法竞争。据传言,计划在2020年为类似张量核的数据中心提供某种卡,但目前尚无确切数据。如果他们仅具有与服务器相同的Tensor Core卡,则意味着很少有人可以负担得起AMD GPU,从而使NVIDIA具有竞争优势。



假设AMD将来会推出带有张量内核之类的硬件。然后许多人会说:“但是,没有程序可用于AMD GPU!我如何使用它们?”这主要是一个误解。运行ROCm的AMD软件已经很好地开发,并且PyTorch中的支持组织得很好。尽管我还没有看到有关AMD GPU + PyTorch工作的许多报道,但所有软件功能都已集成在那里。显然,您可以选择任何网络并在AMD GPU上运行它。因此,AMD在这一领域已经很发达,并且这个问题已经得到实际解决。



但是,随着软件和张量内核的缺乏得到解决,AMD将面临另一个问题:缺乏社区。当您遇到NVIDIA GPU的问题时,可以在Google上搜索解决方案并找到它。这建立了对NVIDIA GPU的信心。为了促进NVIDIA GPU的使用,正在出现一种基础架构(任何适用于GO的平台,支持任何科学任务)。有许多技巧和窍门使使用NVIDIA GPU(例如apex)变得更加容易。在每一个角落都可以找到NVIDIA GPU专家和程序员,但是我知道AMD GPU专家要少得多。



在社区方面,AMD的情况类似于朱莉娅(Julia)和Python(Python)。朱莉娅(Julia)具有很大的潜力,许多人正确地指出,这种编程语言更适合科学工作。但是,与Python相比,很少使用Julia。只是Python社区很大。有很多人聚集在像Numpy,SciPy和Pandas这样的功能强大的软件包周围。这种情况类似于NVIDIA vs AMD。



因此,AMD极有可能不会赶上NVIDIA,直到它引入等效的张量内核和围绕ROCm构建的坚实社区。AMD将始终在特定的子组(加密货币挖掘,数据中心)中占有其市场份额。但是NVIDIA很可能会再垄断两年。



什么时候使用云服务更好,什么时候使用专用GPU计算机?



一个简单的经验法则:如果您打算进行GO超过一年,那么购买带有GPU的计算机会更便宜。否则,最好使用云服务-除非您在云编程方面有丰富的经验,并且想要随意扩展GPU的数量。



云GPU变得比您自己的计算机贵的确切转折点在很大程度上取决于所使用的服务。最好自己计算。下面是一个具有一台V100的AWS V100服务器的示例计算,并将其与一台性能相近的具有一台RTX 3090的台式计算机的成本进行了比较。一台RTX 3090 PC售价2200美元(2-GPU准系统+ RTX 3090)。如果您在美国,则每度电要增加0.12美元。相比之下,在AWS上,每台服务器每小时$ 2.14。



每年以15%的回收率使用,计算机使用



(350 W(GPU)+ 100 W(CPU))* 0.15(回收利用)* 24小时* 365天=每年591 kWh。



每年591千瓦时可增加71美元。



临界点是计算机和云以15%的利用率进行价格比较时,大约是第300天(2,311美元对2,270美元):



2.14美元/小时* 0.15(回收)* 24小时* 300天= 2,311美元



。您的GO模型将持续300天以上,因此,购买计算机比使用AWS更好。



可以对任何云服务进行类似的计算,以决定使用计算机还是云。



利用计算能力的常见数据如下:



  • 博士电脑:<15%;
  • 博士Slurm上的GPU群集:> 35%
  • Slurm企业研究集群:> 60%。


总的来说,在考虑前沿思想比开发实际解决方案更为重要的领域,回收率较低。在某些地区,利用率较低(可解释性研究),而在另一些地区,利用率则高得多(机器翻译,语言建模)。通常,通常总是高估私人汽车的回收利用。通常,大多数个人系统都可回收5-10%。因此,我强烈建议研究团队和公司在Slurm而不是单独的桌面上组织GPU群集。



给那些懒惰的人的提示



总体最佳GPU:RTX 3080和RTX3090。



(研究人员)避免使用的GPU:Tesla卡,Quadro,Founders Edition,Titan RTX,Titan V,Titan XP。



好的性能/价格比,但价格昂贵:RTX3080。



好的性能/价格比,价格便宜:RTX 3070,RTX 2060 Super。



我没钱:买用过的卡。层次结构:RTX 2070($ 400),RTX 2060($ 300),GTX 1070($ 220),GTX 1070 Ti($ 230),GTX 1650 Super($ 190),GTX 980 Ti(6GB $ 150)。



我几乎没有钱:许多创业公司都在宣传他们的云服务。在云端使用免费的信用额度,一圈更改它们,直到您可以购买GPU。



我参加Kaggle比赛:RTX3070。



我正在努力赢得计算机视觉,预学习或机器翻译方面的竞争:4件RTX3090。但是请等到专家确认安装的组件具有良好的散热和足够的功率。



我正在学习自然语言处理:如果您不喜欢机器翻译,语言建模或预学习,则RTX 3080可以。



我开始做GO并真正投入使用:从RTX 3070开始。如果您在6到9个月内不感到厌倦,则买卖四台RTX3080。根据您的下一步选择(启动,Kaggle,研究,应用GO),三者中,出售您的GPU并购买更好的产品(下一代RTX GPU)。



我想尝试GO,但我没有认真的打算:RTX 2060 Super将是一个不错的选择,但是,它可能需要更换PSU。如果您的主板上有PCIe x16插槽,并且PSU产生约300瓦的功率,那么GTX 1050 Ti将是一个不错的选择,因为它不需要其他投资。



用于少于128个GPU的并行仿真的GPU集群:如果允许您为该集群购买RTX:66%的8x RTX 3080和33%的8x RTX 3090(仅当您可以很好地冷却组件时)。如果散热不够,请购买33%的RTX 6000 GPU或8倍Tesla A100。如果您不能购买RTX GPU,则可以使用8个Supermicro A100节点或8个RTX 6000节点,



GPU集群可与128个以上的GPU进行并行仿真:考虑配备8辆Tesla A100的汽车。如果需要超过512个GPU,请考虑使用DGX A100 SuperPOD系统。



All Articles