【翻译】为深度学习购买哪种GPU: 我在深度学习中使用GPU的经验和建议

目录

文章目录

深度学习是一个具有强烈计算要求的领域,你对GPU的选择将从根本上决定你的深度学习体验。但是,如果你想购买一个新的GPU,哪些功能是重要的?GPU内存、核心、张量核心、缓存?如何做出一个具有成本效益的选择?这篇博文将深入探讨这些问题,解决常见的误解,让你对如何思考GPU有一个直观的认识,并借给你建议,这将有助于你做出适合你的选择。

这篇博文旨在让你对GPU和NVIDIA的新安培系列GPU有不同程度的了解。你可以选择:(1) 如果你对GPU如何工作的细节不感兴趣,与CPU相比,什么使GPU速度快,以及新的NVIDIA RTX 40 Ampere系列的独特之处,你可以直接跳到性能和每美元性能图表以及推荐部分。成本/性能数字构成了这篇博文的核心,围绕它的内容解释了构成GPU性能的细节。

(2) 如果你担心具体的问题,我已经在博文的后面部分回答并解决了最常见的问题和误解。

(3) 如果你想深入了解GPU、缓存和Tensor Cores的工作原理,最好是从头到尾阅读这篇博文。你可能想根据你对所提出的主题的理解,跳过一两节。

概述

这篇博文的结构如下。首先,我将解释是什么让GPU变得快速。我将讨论CPU与GPU、Tensor Cores、内存带宽和GPU的内存层次,以及这些与深度学习性能的关系。这些解释可能会帮助你对在GPU中寻找什么有一个更直观的感觉。我讨论了新的NVIDIA RTX 40安培GPU系列的独特功能,如果你购买GPU,这些功能值得考虑。从那里,我针对不同的场景提出了GPU建议。之后是一个问答部分,是在Twitter线程中向我提出的常见问题;在该部分中,我还将讨论常见的误解和一些杂项问题,如云与桌面、冷却、AMD与NVIDIA,以及其他。

GPU是如何工作的?

如果你经常使用GPU,了解它们的工作原理是非常有用的。这些知识将帮助你了解GPU是快还是慢的情况。反过来,你也许能够更好地理解为什么你首先需要一个GPU,以及其他未来的硬件选项如何能够与之竞争。如果你只想获得有用的性能数字和论据来帮助你决定购买哪种GPU,你可以跳过这一部分。对于GPU如何工作的问题,最好的高层次解释是我在Quora上的回答。

在Quora上阅读Tim Dettmers对 “为什么GPU非常适合深度学习 “的回答\n这是一个高水平的解释,很好地解释了为什么GPU比CPU更适合深度学习。如果我们看一下细节,我们就可以理解是什么让一个GPU比另一个更好。

对深度学习处理速度最重要的GPU规格

本节可以帮助你对如何思考深度学习的性能建立一个更直观的理解。这种理解将有助于你自己评估未来的GPU。本节按照每个组件的重要性进行排序。张量核心是最重要的,其次是GPU的内存带宽,缓存层次,最后才是GPU的FLOPS。”

张量核心

张量核心是能够进行非常有效的矩阵乘法的微小核心。由于任何深度神经网络中最昂贵的部分是矩阵乘法,因此张量核心非常有用。在快速方面,它们是如此强大,以至于我不推荐任何没有张量核心的GPU。

了解它们是如何工作的,有助于理解这些专门用于矩阵乘法的计算单元的重要性。在这里,我将向你展示一个简单的A*B=C矩阵乘法的例子,其中所有矩阵的大小为32×32,有无张量核心的计算模式是什么样的。这是一个简化的例子,并不是一个高性能的矩阵乘法内核的确切写法,但它有所有的基本要素。一个CUDA程序员会把它作为第一份 “草稿”,然后用双缓冲、寄存器优化、占用率优化、指令级并行等概念一步步优化它,在此我就不讨论了。

为了充分理解这个例子,你必须理解周期的概念。如果一个处理器以1GHz的速度运行,它每秒可以完成10^9个周期。每个周期代表一个计算的机会。然而,大多数时候,操作需要的时间超过一个周期。因此,我们本质上有一个队列,下一个操作需要等待下一个操作完成。这也被称为操作的延时。

下面是一些重要的操作的延迟周期时间。这些时间在不同的GPU世代会有变化。这些数字是针对安培GPU的,它们的缓存相对较慢。”

  • 全局内存访问(高达80GB):~380周期\n
  • 二级缓存: ~200个周期
  • L1高速缓存或共享内存访问(每个流式多处理器最多128kb)。~34周期
  • 融合乘法和加法,a*b+c(FFMA):4个周期
  • Tensor Core矩阵乘法。1个周期

每个操作总是由32个线程组成的包来执行。这个包被称为线程的翘曲。战群通常以同步模式运行–战群内的线程必须相互等待。GPU上的所有内存操作都是为战队而优化的。例如,从全局内存加载的粒度为32*4字节,正好是32个浮点,在一个战线上的每个线程正好有一个浮点。我们可以在一个流式多处理器(SM)中拥有多达32个经线=1024个线程,相当于一个CPU核心的GPU。一个SM的资源被分配给所有活动的经线。这意味着,有时我们希望运行较少的经线,以便每个经线有更多的寄存器/共享内存/张量核心资源。

对于下面的两个例子,我们假设我们有相同的计算资源。对于这个32×32矩阵乘法的小例子,我们使用了8个SM(大约是RTX 3090的10%)和每个SM的8个翘板。

为了了解周期延迟如何与每个SM的线程和每个SM的共享内存等资源一起发挥作用,我们现在看一下矩阵乘法的例子。虽然下面的例子大致上遵循了有张量核心和无张量核心的矩阵乘法的计算步骤顺序,但请注意这些是非常简化的例子。矩阵乘法的真实案例涉及到更大的共享内存瓦片和略有不同的计算模式。

没有张量核心的矩阵乘法

如果我们想做一个AB=C的矩阵乘法,其中每个矩阵的大小为32×32,那么我们想把重复访问的内存加载到共享内存中,因为其延迟大约低五倍(200个周期与34个周期)。共享内存中的一个内存块通常被称为内存块或只是一个内存块。将两个32×32的浮点加载到一个共享内存瓦片中,可以通过使用232的翘板来并行进行。我们有8个SM,每个有8个warps,所以由于并行化,我们只需要从全局到共享内存做一次顺序加载,这需要200个周期。

为了做矩阵乘法,我们现在需要从共享内存A和共享内存B中加载一个32个数字的向量,并进行融合乘法和累加(FFMA)。然后将输出存储在寄存器C中。我们进行分工,使每个SM做8x点乘(32×32)来计算C的8个输出。为什么正好是8(在旧的算法中是4)是非常有技术含量的。我推荐Scott Gray关于矩阵乘法的博文来理解这个。这意味着我们有8次共享内存访问,每次花费34个周期,还有8次FFMA操作(32次并行),每次花费4个周期。总的来说,我们的成本是:

200个周期(全局内存)+834个周期(共享内存)+84个周期(FFMA)=504个周期

让我们来看看使用张量核心的周期成本。

使用张量核心的矩阵乘法

通过张量核心,我们可以在一个周期内进行4×4矩阵乘法。要做到这一点,我们首先需要将内存进入张量核心。与上面类似,我们需要从全局内存中读取(200个周期)并存储在共享内存中。为了做一个32×32的矩阵乘法,我们需要做8×8=64个Tensor Cores操作。一个SM有8个Tensor Cores。因此,有了8个SM,我们就有了64个张量核心–正是我们需要的数量我们可以通过1次内存传输(34个周期)将数据从共享内存传输到张量核心,然后进行这64次并行的张量核心操作(1个周期)。这意味着在这种情况下,Tensor Cores矩阵乘法的总成本是:

200个周期(全局内存)+34个周期(共享内存)+1个周期(Tensor Core)=235个周期。

因此,我们通过张量核心将矩阵乘法成本从504个周期大幅降低到235个周期。在这个简化案例中,张量核心降低了共享内存访问和FFMA操作的成本。

这个例子是简化的,例如,通常每个线程都需要计算从全局内存向共享内存传输数据时,要读和写哪个内存。通过新的Hooper(H100)架构,我们另外让张量内存加速器(TMA)在硬件中计算这些指数,从而帮助每个线程专注于更多计算,而不是计算指数。

带有张量核心和异步拷贝的矩阵乘法(RTX 30/RTX 40)和TMA(H100)

RTX 30 Ampere和RTX 40 Ada系列GPU还支持在全局和共享内存之间进行异步传输。H100 Hopper GPU通过引入张量内存加速器(TMA)单元进一步扩展了这一功能。TMA单元将异步拷贝和索引计算同时用于读写–因此每个线程不再需要计算哪个是下一个要读取的元素,每个线程可以专注于做更多矩阵乘法计算。这看起来如下。

TMA单元将内存从全局获取到共享内存(200个周期)。一旦数据到达,TMA单元从全局内存异步获取下一个数据块。在此过程中,线程从共享内存加载数据,并通过张量核心执行矩阵乘法。一旦线程完成,他们就会等待TMA单元完成下一个数据传输,然后这个序列就会重复。

因此,由于异步性,当线程处理当前的共享内存瓦片时,TMA单元的第二次全局内存读取已经在进行了。这意味着,第二次读取只需要200-34-1=165个周期。

由于我们做了很多读取,只有第一次内存访问会很慢,所有其他的内存访问都会与TMA单元部分重叠。因此,平均而言,我们减少了35个周期的时间.

165个周期(等待异步复制完成)+34个周期(共享内存)+1个周期(Tensor Core)=200个周期。

这使矩阵乘法的速度又加快了15%。

从这些例子中可以看出,为什么下一个属性,即内存带宽,对于配备张量核心的GPU是如此关键。由于全局内存是迄今为止使用张量核心进行矩阵乘法的最大周期成本,如果能够减少全局内存的延迟,我们甚至可以获得更快的GPU。我们可以通过提高内存的时钟频率(每秒更多的周期,但也有更多的热量和更高的能源需求)或增加在任何时候可以传输的元素数量(总线宽度)来做到这一点。

内存带宽

从上一节中,我们已经看到,张量核心的速度非常快。事实上,速度如此之快,以至于它们大部分时间都是闲置的,因为它们在等待内存从全局内存到达。例如,在GPT-3大小的训练中,使用巨大的矩阵–对张量核心来说越大越好–我们的张量核心TFLOPS利用率约为45-65%,这意味着即使是大型神经网络,也有50%的时间张量核心是空闲的。

这意味着,当比较两个带有Tensor Cores的GPU时,每个GPU性能的最佳指标之一是其内存带宽。例如,A100 GPU的内存带宽为1,555 GB/s,而V100为900 GB/s。因此,A100对V100的基本估计速度是1555/900=1.73倍。

二级缓存/共享内存/一级缓存/寄存器

由于向张量核心的内存传输是性能的限制因素,我们正在寻找能够更快地向张量核心传输内存的其他GPU属性。二级缓存、共享内存、一级缓存和使用的寄存器数量都是相关的。为了理解内存层次结构如何实现更快的内存传输,有助于理解在GPU上如何进行矩阵乘法。

为了执行矩阵乘法,我们利用了GPU的内存层次结构,从缓慢的全局内存,到较快的二级内存,到快速的本地共享内存,再到闪电般的寄存器。然而,内存越快,它就越小。

虽然从逻辑上讲,L2和L1内存是一样的,但L2缓存更大,因此需要穿越的平均物理距离更大,以检索一个缓存行。你可以把L1和L2缓存看作是有组织的仓库,在那里你想检索一个物品。你知道物品在哪里,但是对于较大的仓库来说,去那里平均需要更长的时间。这就是L1和L2缓存的本质区别。大=慢,小=快。

对于矩阵乘法,我们可以利用这种分层分离成越来越小,从而越来越快的内存块来进行非常快的矩阵乘法。为此,我们需要将大的矩阵乘法分成小的子矩阵乘法。这些块被称为内存瓦片,或者通常只是瓦片。

我们在本地共享内存中执行矩阵乘法,该内存速度快且接近于流式多处理器(SM)–相当于CPU核心。有了张量核心,我们更进一步。我们把每个瓦片,并把这些瓦片的一部分加载到Tensor Cores中,由寄存器直接寻址。二级缓存中的矩阵内存瓦片比全球GPU内存(GPU RAM)快3-5倍,共享内存比全球GPU内存快7-10倍,而张量核心的寄存器比全球GPU内存快200倍。

拥有更大的瓦片意味着我们可以重复使用更多的内存。我在TPU与GPU的博文中详细介绍了这一点。事实上,你可以看到TPU对每个Tensor Core都有非常、非常、大的磁贴。因此,TPU在每次从全局内存传输时可以重用更多的内存,这使得它们在矩阵乘法方面比GPU更有效率一些。

每个瓦片的大小由我们每个流式多处理器(SM)有多少内存和我们在所有SM上有多少二级缓存决定。我们在以下架构上有以下共享内存大小。

  • Volta (Titan V)。128kb共享内存/6MB L2
  • 图灵(RTX 20s系列): 96kb共享内存/5.5 MB L2
  • 安培(RTX 30s系列): 128kb共享内存/6MB L2
  • 阿达(RTX 40s系列): 128 kb共享内存/72 MB L2

我们看到Ada有一个大得多的二级缓存,允许更大的瓦片尺寸,这减少了全局内存访问。例如,对于训练期间的大型BERT,任何矩阵乘法的输入和权重矩阵都能整齐地放入Ada的二级缓存中(而不是其他我们)。因此,数据只需要从全局内存加载一次,然后通过二级缓存提供数据,使矩阵乘法的速度在Ada的这个架构上快了1.5-2.0倍。对于较大的模型,在训练过程中速度较低,但存在某些甜蜜点,可能会使某些模型快得多。推理,如果批处理量大于8,也可以从较大的二级缓存中获得巨大的好处。

估算Ada/Hopper深度学习性能

本节是为那些想了解我如何得出安培GPU的性能估计的更多技术细节的人准备的。如果你不关心这些技术方面的问题,可以安全地跳过本节。

实用Ada/Hopper速度估算

假设我们有一个GPU架构(如Hopper、Ada、Ampere、Turing或Volta)的GPU估算。将这些结果推断到同一架构/系列的其他GPU上很容易。幸运的是,英伟达已经在广泛的计算机视觉和自然语言理解任务中对A100与V100与H100进行了基准测试。不幸的是,NVIDIA确保这些数字不具有直接可比性,因为它尽可能使用不同的批处理规模和GPU数量,以有利于H100 GPU的结果。因此,从某种意义上说,这些基准数字部分是诚实的,部分是营销数字。一般来说,你可以说使用更大的批次是公平的,因为H100/A100 GPU有更多的内存。不过,为了比较GPU架构,我们应该用相同的批次大小来评估无偏见的内存性能。

为了得到一个无偏见的估计,我们可以通过两种方式来扩展数据中心GPU的结果:(1)考虑批次大小的差异,(2)考虑使用1个与8个GPU的差异。我们很幸运,可以在NVIDIA提供的数据中找到这样一个对这两种偏差的估计。

将批处理规模翻倍,以图像/秒(CNN)计算的吞吐量增加了13.6%。我在我的RTX Titan上对变换器的相同问题进行了基准测试,并发现,令人惊讶的是,结果非常相同:13.5% – 看来这是一个稳健的估计。

随着我们在越来越多的GPU上进行网络并行化,我们会因为一些网络开销而失去性能。A100 8x GPU系统比V100 8x GPU系统(NVLink 2.0)拥有更好的网络(NVLink 3.0)–这是另一个混杂因素。直接看NVIDIA的数据,我们可以发现,对于CNN来说,8x A100的系统比8x V100的系统开销低5%。这意味着,如果从1x A100到8x A100可以使你的速度提高,例如7.00倍,那么从1x V100到8x V100只能使你的速度提高6.67倍。 对于变压器,这个数字是7%。

利用这些数字,我们可以从英伟达提供的直接数据中估算出一些特定深度学习架构的速度提升。与Tesla V100相比,Tesla A100的速度提升如下。

  • SE-ResNeXt101: 1.43x
  • 掩码-R-CNN:1.47x
  • 变换器(12层,机器翻译,WMT14 en-de)。1.70x

因此,这些数字比计算机视觉的理论估计值要低一些。这可能是由于较小的张量维度,需要准备矩阵乘法的操作的开销,如img2col或快速傅里叶变换(FFT),或不能使GPU饱和的操作(最终层通常相对较小)。它也可能是特定架构(分组卷积)的神器。

实际的变换器估计与理论估计非常接近。这可能是因为巨大矩阵的算法是非常直接的。我将使用这些实际估计值来计算GPU的成本效率。

估算中可能存在的偏差

上面的估计是针对H100、A100和V100 GPU。过去,英伟达在 “游戏 “RTX GPU中偷偷地进行了未宣布的性能退化:(1)减少了Tensor Core的利用率,(2)游戏风扇的冷却,(3)禁用点对点GPU传输。也许有可能在RTX 40系列中存在未宣布的性能下降,与完整的霍普H100相比。

截至目前,其中一个退化是针对安培GPU发现的。张量核心性能被降低,因此RTX 30系列GPU在深度学习方面不如Quadro卡。这也是为RTX 20系列所做的,所以这不是什么新鲜事,但这次也是为Titan等效卡,RTX 3090所做的。RTX Titan没有启用性能降级。

目前,不知道Ada GPU的降级情况,但我在这篇文章中更新了这方面的消息,并让我在twitter上的粉丝们知道。”

RTX40和RTX30系列的优势和问题

与英伟达图灵RTX 20系列相比,新的英伟达安培RTX 30系列具有更多优势,如稀疏网络训练和推理。其他功能,如新的数据类型,应更多地被看作是一种易于使用的功能,因为它们提供了与图灵相同的性能提升,但无需任何额外的编程。

Ada RTX 40系列甚至有更多的进步,如8位浮点(FP8)张量核心。与RTX 30相比,RTX 40系列也有类似的功率和温度问题。RTX 40中的电源连接器电缆融化的问题可以通过正确连接电源电缆而轻松避免。

稀疏网络训练

安培允许以密集的速度进行细粒度结构的自动稀疏矩阵乘法。这是如何做到的?以一个权重矩阵为例,将其切成4个元素的碎片。现在想象这4个元素中的2个元素为零。图1显示了这种情况的样子

请添加图片描述
图1:Ampere GPU中的稀疏矩阵乘法功能所支持的结构。该图摘自Jeff Pool在GTC 2020上的演讲,内容是在NVIDIA Ampere架构中加速稀疏性,由NVIDIA提供

当你将这个稀疏的权重矩阵与一些密集的输入相乘时,安培的稀疏矩阵张量核心功能会自动将稀疏矩阵压缩成密集表示,其大小为原来的一半,如图2所见。在压缩之后,密集压缩的矩阵瓦片被送入张量核心,张量核心计算的矩阵乘法是通常大小的两倍。这有效地产生了2倍的速度,因为在共享内存的矩阵乘法过程中,带宽要求减半。

请添加图片描述
图2:在进行矩阵乘法之前,稀疏矩阵被压缩为密集表示。该图摘自Jeff Pool在GTC 2020上发表的关于加速NVIDIA Ampere架构的稀疏性的演讲,由NVIDIA提供

我在研究中致力于稀疏网络训练,我还写了一篇关于稀疏训练的博文。对我的工作的一个批评是:“你减少了网络所需的FLOPS,但并没有产生速度的提升,因为GPU不能进行快速的稀疏矩阵乘法”。好吧,随着Tensor Cores的稀疏矩阵乘法功能的增加,我的算法或其他稀疏训练算法,现在实际上在训练期间提供了高达2倍的速度。请添加图片描述

图3:我开发的稀疏训练算法有三个阶段:(1)确定每层的重要性。(2) 删除最小的、不重要的权重。(3) 根据每层的重要性增长新的权重。在我的稀疏训练博文中阅读更多关于我的工作

虽然这一功能仍在实验阶段,而且训练稀疏网络还不普遍,但在你的GPU上拥有这一功能意味着你已经为稀疏训练的未来做好了准备。

低精度计算

在我的工作中,我曾经表明,新的数据类型可以提高低精度反向传播期间的稳定性。
请添加图片描述
图4:我开发的低精度深度学习8位数据类型。深度学习训练得益于高度专业化的数据类型。我的动态树数据类型使用了一个动态位,表示一个二进制二分树的开始,该树量化了范围[0, 0.9],而之前的所有位都用于指数。这样就可以动态地表示既大又小的高精度的数字

目前,如果你想用16位浮点数(FP16)进行稳定的反向传播,最大的问题是普通FP16数据类型只支持[-65,504, 65,504]范围内的数字。如果你的梯度滑过这个范围,你的梯度就会爆炸成NaN值。为了防止在FP16训练中出现这种情况,我们通常会进行损失缩放,即在反向传播之前将损失乘以一个小数字,以防止这种梯度爆炸。

BrainFloat 16格式(BF16)为指数使用了更多的比特,因此可能的数字范围与FP32相同:[-3*1038,3*1038]。BF16的精度较低,也就是有效数字,但梯度精度对学习来说并不那么重要。所以BF16的作用是,你不再需要做任何损失缩放,也不需要担心梯度会迅速爆炸。因此,我们应该看到,通过使用BF16格式,训练的稳定性会增加,因为精度略有损失。

这对你意味着什么。使用BF16精度,训练可能比使用FP16精度更稳定,同时提供同样的速度提升。使用32位TensorFloat(TF32)精度,你可以得到接近FP32的稳定性,同时给予接近FP16的加速。好的是,要使用这些数据类型,你只需用TF32取代FP32,用BF16取代FP16–不需要修改代码

不过总的来说,这些新的数据类型可以被看作是懒惰的数据类型,因为你可以通过一些额外的编程努力(适当的损失缩放、初始化、规范化、使用Apex)来获得旧数据类型的所有好处。因此,这些数据类型并没有提供速度,而是改善了训练中低精度的使用便利性。

风扇设计和GPU温度问题

虽然RTX 30系列的新风扇设计在冷却GPU方面表现非常好,但非创始版GPU的不同风扇设计可能会有更多问题。如果你的GPU发热超过80C,它就会自我节流,降低其计算速度/功率。如果你将多个GPU堆放在一起,这种过热现象尤其可能发生。解决这个问题的方法是使用PCIe扩展器,在GPU之间创造空间。

用PCIe扩展器分散GPU对散热非常有效,华盛顿大学的其他博士生和我都使用这种设置,并取得了巨大的成功。它看起来并不漂亮,但它能使你的GPU保持凉爽!这已经运行了4年,完全没有问题。如果你没有足够的空间在PCIe插槽中安装所有的GPU,它也可以帮助你。例如,如果你能在台式电脑机箱内找到空间,也许可以购买标准的3槽宽度的RTX 4090,并在机箱内用PCIe扩展器分散它们。这样一来,你可能会用一个简单的解决方案来解决4x RTX 4090设置的空间问题和冷却问题。

请添加图片描述
图5:带有PCIe扩展器的4倍GPU。它看起来很乱,但对冷却非常有效。我使用这个装备4年了,尽管RTX 2080 Ti Founders Edition GPU有问题,但冷却效果很好

3槽设计和电源问题

RTX 3090和RTX 4090是3插槽的GPU,因此在NVIDIA默认的风扇设计下,人们无法将其用于4x设置。这是有道理的,因为它的TDP超过350W,在多GPU的2插槽设置中很难冷却。RTX 3080的TDP为320W,仅略胜一筹,而冷却4x RTX 3080设置也将非常困难。

在4x RTX 3090或4x RTX 4090机箱中为4x 350W=1400W或4x 450W=1800W系统供电也很困难。1600W的电源装置(PSU)是现成的,但只有200W为CPU和主板供电可能太紧张。组件的最大功率只有在组件被完全利用的情况下才会被使用,而在深度学习中,CPU通常只处于弱负载状态。在这种情况下,1600W的PSU可能对4x RTX 3080的构建效果相当好,但对于4x RTX 3090的构建,最好寻找高瓦数的PSU(+1700W)。我的一些追随者在使用加密电源方面取得了巨大的成功–请在评论区看看关于这方面的更多信息。否则,需要注意的是,并非所有的插座都支持1600W以上的PSU,尤其是在美国。这就是为什么在美国,目前市场上很少有1600W以上的标准台式PSU。如果你买的是服务器或加密的PSU,要注意外形尺寸–确保它适合你的电脑机箱。

功率限制 解决功率问题的优雅解决方案?

在你的GPU上设置一个功率限制是可能的。因此,你将能够以编程方式将RTX 3090的功率限制设置为300W,而不是其标准的350W。在4个GPU系统中,这相当于节省了200W,这可能刚好足够用1600W PSU建立一个4x RTX 3090系统的可行性。它还有助于保持GPU的冷却。因此,设置功率限制可以同时解决4x RTX 3080或4x RTX 3090设置的两个主要问题,冷却和电源。对于4倍的设置,你仍然需要有效的鼓风机GPU(标准设计可能被证明足以满足这个要求),但这解决了PSU的问题。

请添加图片描述
图6:降低功率限制有轻微的冷却效果。将RTX 2080 Ti的功率限制降低50-60W,温度略有下降,风扇运行更加安静。

你可能会问,”这不会降低GPU的速度吗?”是的,确实如此,但问题是降低了多少。我对图5所示的4x RTX 2080 Ti系统在不同功率限制下进行了基准测试,以测试这一点。我对推理过程中BERT Large的500个小批次的时间进行了基准测试(不包括softmax层)。我选择BERT Large推理,因为根据我的经验,这是深度学习模型,对GPU的压力最大。因此,我希望电源限制对这个模型有最大规模的减慢。因此,这里报告的减慢可能接近你可以预期的最大减慢。结果显示在图7中。
请添加图片描述
图7:在RTX 2080 Ti上,在给定的功率限制下测得的速度下降。测量结果是推理过程中500个迷你批次的BERT Large的平均处理时间(不包括softmax层)。

我们可以看到,设置功率限制并不严重影响性能。将功率限制在50W–足以处理4x RTX 3090–仅使性能下降7%。

RTX 4090s和融化的电源连接器。如何防止问题的发生

有一种误解,认为RTX 4090电源线融化是因为它们被弯曲了。然而,发现只有0.1%的用户有这个问题,问题的发生是由于用户的错误。这里有一段视频显示,主要问题是电缆没有正确插入

因此,如果你遵循以下安装说明,使用RTX 4090卡是完全安全的。

  • 如果你使用旧的电缆或旧的GPU,请确保触点没有碎屑/灰尘。
  • 使用电源连接器并将其插入插座,直到你听到 “咔嚓 “一声–这是最重要的部分。
  • 通过从左到右扭动电源线来测试是否合适。电缆不应该移动。
  • 目测一下与插座的接触情况,电缆和插座之间应该没有间隙。

H100和RTX 40系列GPU中的8位浮点支持

支持8位浮点(FP8)是RTX 40系列和H100 GPU的一个巨大优势。有了8位输入,你就可以以两倍的速度加载矩阵乘法的数据,你可以在缓存中存储两倍的矩阵元素,而在Ada和Hopper架构中,缓存是非常大的,现在有了FP8张量核心,你可以为RTX 4090获得0.66 PFLOPS的计算量–这比2007年世界上最快超级计算机的全部FLOPS还要多。4倍RTX 4090的FP8计算量可以与2010年世界上最快的超级计算机相媲美(深度学习在2009年才开始工作)。

使用8位精度的主要问题是,变压器在这么少的位子上会变得非常不稳定,在训练过程中崩溃,或者在推理过程中产生非理性。我写了一篇关于大型语言模型中不稳定性的出现的论文,我还写了一篇更容易理解的博文。

主要的收获是这样的。使用8位而不是16位会使事情变得非常不稳定,但如果你保持几个维度的高精度,一切都会很好。

请添加图片描述
我在大型语言模型(LLM)的8位矩阵乘法工作中的主要结果。我们可以看到,最好的8位基线未能提供良好的零点性能。我开发的方法LLM.int8()可以进行Int8矩阵乘法,结果与16位基线相同。

但是Int8已经被RTX 30 / A100 / Ampere这一代GPU所支持,为什么FP8在RTX 40中又是一个大升级呢?FP8数据类型比Int8数据类型要稳定得多,而且很容易在层规范或非线性函数中使用它,这在Integer数据类型中是很难做到的。这将使它在训练和推理中的使用变得非常简单明了。我认为这将使FP8的训练和推理在几个月后变得相对普遍。

如果你想阅读更多关于Float与Integer数据类型的优势,你可以阅读我最近关于k-bit推理缩放法的论文。下面你可以看到这篇论文中关于Float vs Integer数据类型的一个相关主要结果。我们可以看到,逐个比特,FP4数据类型比Int4数据类型保留了更多的信息,从而提高了4个任务的平均LLM零点准确性。

请添加图片描述

不同数据类型的Pythia大型语言模型的4位推理缩放规律。我们看到,与Int4数据类型相比,逐位的4位浮点数数据类型具有更好的零点准确性

GPU的原始性能排名

下面我们看到一张所有GPU的原始相关性能的图表。我们看到,H100 GPU的8位性能与为16位性能优化的旧卡有巨大的差距。请添加图片描述
显示的是GPU的原始相对变换器性能。例如,RTX 4090的8位推理性能是H100 SMX的0.33倍左右。换句话说,与RTX 4090相比,H100 SMX的8位推理速度是3倍。

对于这些数据,我没有为旧的GPU建立8位计算模型。我这样做,是因为8位推理和训练在Ada/Hopper GPU上更有效,因为8位Float数据类型和Tensor Memory Accelerator(TMA)节省了计算读/写索引的开销,这对8位矩阵乘法特别有帮助。Ada/Hopper也有FP8支持,这使得特别是8位的训练更加有效。

我没有为8位训练建立模型,因为要建立模型,我需要知道Hopper/Ada GPU上L1和L2缓存的延迟,而它们是未知的,我没有机会接触到这种GPU。在Hopper/Ada上,如果缓存的速度像传言的那样快,8位训练性能很可能是16位训练性能的3-4倍。

但即使是新的FP8张量核心,也有一些额外的问题,在对GPU性能建模时很难考虑到。例如,FP8张量核心不支持转置的矩阵乘法,这意味着反向传播需要在乘法之前进行单独的转置,或者需要在内存中保存两套权重–一套转置的,一套非转置的。我在LLM.int8()项目中试验Int8训练时,使用了两套权重,这使整体速度大大降低。我认为用正确的算法/软件可以做得更好,但这表明缺少张量核心的转置矩阵乘法等功能会影响性能。

对于旧的GPU来说,Int8推理性能接近于13B参数以下模型的16位推理性能。只有当你有175B参数或更多的相对较大的模型时,旧GPU上的Int8性能才有意义。如果你对老式GPU的8位性能感兴趣,你可以阅读我的LLM.int8()论文的附录D,在那里我对Int8性能进行了基准测试。

每美元的GPU深度学习性能

下面我们看到按8位推理性能排序的所有GPU的每美元性能图表。如何使用该图表来寻找适合自己的GPU,方法如下:

  • 确定你需要的GPU内存量(粗略的启发式方法:至少12GB用于图像生成;至少24GB用于变换器的工作)
  • 虽然8位推理和训练是实验性的,但它将在6个月内成为标准。在这期间,你可能需要做一些额外的困难的编码来使用8位的工作。这对你来说可以吗?如果不行,就选择16位的性能。
  • 使用(2)中确定的指标,找到具有最高相对性能/美元的GPU,并具有你需要的内存量。”

我们可以看到,RTX 4070 Ti在8位和16位推理中的性价比最高,而RTX 3080在16位训练中的性价比仍然最高。虽然这些GPU最具成本效益,但不一定推荐使用,因为它们没有足够的内存用于许多使用情况。然而,这可能是开始深度学习之旅的理想卡。其中一些GPU对于Kaggle竞赛来说是非常好的,在那里人们经常可以依靠较小的模型。由于要在Kaggle比赛中取得好成绩,你的工作方法比模型大小更重要,所以这些较小的GPU对Kaggle比赛是非常好的。

用于学术和初创公司服务器的最佳GPU似乎是A6000 Ada GPU(不要与A6000 Turing混淆)。H100 SXM GPU也非常具有成本效益,具有高内存和非常强的性能。如果我将为公司/学术实验室建立一个小型集群,我会使用66-80%的A6000 GPU和20-33%的H100 SXM GPU。如果我在L40 GPU上得到一个好的交易,我也会选择它们而不是A6000,所以你可以随时询问这些的报价。请添加图片描述

显示的是每美元GPU的相对性能,根据台式电脑的成本和每个GPU在亚马逊和eBay的平均价格进行归一化。此外,以每千瓦时0.175美元的电价和15%的GPU利用率计算,增加了5年的电力成本。RTX 4090的电费约为每年100美元。如何阅读和解释该图表:一台拥有RTX 4070 Ti卡5年的台式电脑与RTX 3090 GPU相比,每美元产生的8位推理性能高出约2倍。

GPU建议

我创建了一个推荐流程图,你可以在下面看到(点击这里查看肖楠的互动应用程序)。虽然这个图表在80%的情况下会帮助你,但它可能不完全适合你,因为选择可能太贵。在这种情况下,试着看一下上面的基准,并选择性价比最高的GPU,它仍然有足够的GPU内存满足你的使用情况。你可以通过在 vast.ai或Lambda云中运行你的问题一段时间来估计所需的GPU内存,这样你就知道你需要什么。如果你只是非常零星地需要一个GPU(每隔几天几个小时),而且不需要下载和处理大型数据集就可以开始工作,那么 vast.ai或Lambda云可能也很好。然而,如果你连续几个月使用你的GPU,并且每天都有很高的使用率(每天12小时),云GPU通常不是一个好的选择。你可以使用下面 “什么时候使用云计算与专用GPU桌面/服务器更好?”一节中的例子来确定云GPU是否适合你。

请添加图片描述
Ada/Hopper GPU的推荐表。按照是/否问题的答案,找到最适合你的GPU。虽然这个图表在大约80%的情况下都很有效,但你最终可能会得到一个太贵的GPU。使用上面的成本/性能图表来进行选择。[互动应用]

等待未来的GPU进行升级是否更好?GPU的未来。

为了了解跳过这一代而购买下一代GPU是否有意义,谈一谈未来的改进会是什么样子。

在过去,可以通过缩小晶体管的尺寸来提高处理器的速度。现在这种情况即将结束。例如,虽然缩小SRAM可以提高其速度(距离更小,内存访问速度更快),但现在情况不再如此。目前对SRAM的改进并没有再提高其性能,甚至可能是负面的。虽然张量核心等逻辑变得更小,但这并不一定能使GPU更快,因为矩阵乘法的主要问题是将内存送到张量核心,这是由SRAM和GPU RAM的速度和大小决定的。如果我们将内存模块堆叠成高带宽模块(HBM3+),GPU RAM的速度仍然会提高,但对于消费者应用来说,这些模块的制造成本太高。提高GPU原始速度的主要方法是使用更多的功率和更多的冷却,正如我们在RTX 30s和40s系列中看到的那样。但这种情况不能再持续下去了。

诸如AMD CPU使用的芯片是另一种直接的前进方式。AMD通过开发CPU芯片击败了英特尔。芯片是用高速片上网络融合在一起的小芯片。你可以把它们看作是两个物理上非常接近的GPU,你几乎可以把它们看作是一个单一的大GPU。它们的制造成本较低,但要结合成一个大的芯片却比较困难。因此,你需要专有技术和小芯片之间的快速连接。AMD在小芯片设计方面有很多经验。AMD的下一代GPU将采用芯片组设计,而NVIDIA目前没有公开的此类设计计划。这可能意味着,与英伟达的GPU相比,下一代AMD的GPU在成本/性能方面可能更好。

然而,目前GPU的主要性能提升是专门的逻辑。例如,安培一代(RTX 30 / A100 / RTX 40)上的异步复制硬件单元或扩展,即张量内存加速器(TMA),都通过专门的硬件减少了将内存从慢速全局内存复制到快速共享内存(缓存)的开销,因此每个线程可以做更多的计算。TMA还通过执行读/写索引的自动计算来减少开销,这对于8位计算尤其重要,因为与16位计算相比,在相同的内存量下,人们有双倍的元素。所以专门的硬件逻辑可以进一步加速矩阵乘法。

低位精度是几年内的另一条直接的发展道路。在接下来的几个月里,我们将看到8位推理和训练的广泛采用。我们将在明年看到4位推理的普及。目前,4位的训练技术并不存在,但研究看起来很有希望,我预计在1-2年内将训练出第一个具有竞争性预测性能的高性能FP4大型语言模型(LLM)。

目前,将训练精度提高到2位看起来是不可能的,但这是一个比进一步缩小晶体管更容易的问题。因此,硬件方面的进展主要取决于软件和算法,这些软件和算法使使用硬件提供的专门功能成为可能。

我们可能仍将能够改进算法+硬件的组合,直到2032年,但在那之后将遇到GPU改进的终点(类似于智能手机)。2032年之后的性能改进浪潮将来自更好的网络算法和大规模硬件。目前还不能确定消费级GPU是否会与此相关。可能是你需要RTX 9090来运行Super HyperStableDiffusion Ultra Plus 9000 Extra或OpenChatGPT 5.0,但也可能是一些公司将提供高质量的API,比RTX 9090的电费更便宜,你想用笔记本+API来生成图像和其他任务。

总的来说,我认为在未来9年内,投资于8位能力的GPU将是一项非常坚实的投资。4位和2位的改进可能很小,而像排序核心这样的其他功能只有在稀疏矩阵乘法能够得到很好的利用时才会变得相关。我们可能会在2-3年内看到一些其他的进步,这些进步将进入4年后的下一个GPU,但如果我们继续依赖矩阵乘法,我们将耗尽精力。这使得对新GPU的投资可以持续更长时间。

问题和答案以及误解

我需要PCIe 4.0或PCIe 5.0吗?

一般来说,不需要。如果你有一个GPU集群,PCIe 5.0或4.0是很好的。如果你有一个8倍的GPU机器,它是可以的,但除此之外,它并没有产生很多好处。它允许更好的并行化和更快一点的数据传输。数据传输在任何应用中都不是一个瓶颈。在计算机视觉中,在数据传输管道中,数据存储可能是一个瓶颈,但不是从CPU到GPU的PCIe传输。因此,对于大多数人来说,没有真正的理由获得一个PCIe 5.0或4.0设置。在4个GPU的设置中,其好处可能是并行化程度提高了1-7%。

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

与PCIe 4.0相同 – 一般来说,不需要。PCIe通道需要用于并行化和快速数据传输,这很少是一个瓶颈。在4倍通道上操作GPU是没有问题的,特别是如果你只有2个GPU。对于4个GPU的设置,我希望每个GPU有8倍的通道,但如果你在所有4个GPU上进行并行化,在4倍通道上运行它们可能只会降低大约5-10%的性能。

如果4个RTX 4090或3090各占3个PCIe插槽,我如何安装?

你需要买一个双槽的变种,或者你可以尝试用PCIe扩展器来分散它们。除了空间,你还应该立即考虑冷却和一个合适的PSU。

PCIe扩展器也可能同时解决空间和冷却问题,但你需要确保你的机箱有足够的空间来分散GPU。确保你的PCIe扩展器足够长!

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

见上一节。

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

是的,你可以!但是你不能在不同类型的GPU之间有效地进行并行化,因为你往往会以最慢的GPU的速度进行(数据和完全分片并行)。因此,不同的GPU可以正常工作,但跨这些GPU的并行化将是低效的,因为最快的GPU将等待最慢的GPU赶上一个同步点(通常是梯度更新)。

什么是NVLink,它有用吗?

一般来说,NVLink是没有用的。NVLink是GPU之间的一种高速互连。如果你有一个带有128个GPU的GPU集群,它就很有用。否则,与标准PCIe传输相比,它几乎没有任何好处。

我没有足够的钱,即使是你推荐的最便宜的GPU。我可以做什么?

一定要买二手GPU。你可以买一个小的便宜的GPU用于原型设计和测试,然后推出全面的实验,如 vast.ai 或 Lambda Cloud。如果你只是偶尔对大型模型进行训练/微调/推理,而把更多的时间花在小型模型的原型设计上,这可能会很便宜。

GPU的碳足迹是什么?我怎样才能在不污染环境的情况下使用GPU?

我建立了一个碳计算器,用于计算你在学术上的碳足迹(从航班到会议的碳+GPU时间)。该计算器也可用于计算纯GPU的碳足迹。你会发现,GPU产生的碳比国际航班多得多。因此,如果你不想有一个天文数字的碳足迹,你应该确保你有一个绿色的能源来源。如果我们地区没有电力供应商提供绿色能源,最好的办法是购买碳抵消。许多人对碳抵消持怀疑态度。它们有用吗?它们是骗局吗?

我相信在这种情况下,怀疑只是一种伤害,因为不做任何事情会比冒着被骗的概率更有害。如果你担心受骗,只需投资于一个抵消组合,以尽量减少风险。

大约十年前,我在一个生产碳抵消的项目上工作。这些碳抵消是通过燃烧中国矿场泄漏的甲烷产生的。联合国官员跟踪了这个过程,他们要求对项目现场进行干净的数字数据和实物检查。在这种情况下,所产生的碳抵消是高度可靠的。我相信许多其他项目也有类似的质量标准。

我需要在两台机器上进行并行处理,需要什么?

如果你想安全起见,你应该得到至少+50Gbits/s的网卡,以获得加速,如果你想跨机器并行化。我建议至少要有一个EDR Infiniband设置,这意味着网卡至少有50GBit/s的带宽。两张EDR网卡和电缆在eBay上大约是500美元。

在某些情况下,你也许可以用10Gbit/s的以太网,但这通常只适用于特殊的网络(某些卷积网络)或如果你使用某些算法(微软DeepSpeed)。

稀疏矩阵乘法功能是否适用于一般的稀疏矩阵?

似乎不是这样。因为稀疏矩阵的粒度需要有2个零值元素,每4个元素,稀疏矩阵需要相当的结构化。也许可以稍微调整一下算法,这涉及到你把4个值汇集成2个值的压缩表示,但这也意味着精确的任意稀疏矩阵乘法在安培GPU上是不可能的。

我需要一个英特尔CPU来驱动多GPU设置吗?

我不推荐英特尔CPU,除非你在Kaggle比赛中大量使用CPU(在CPU上进行大量线性代数)。即使是Kaggle比赛,AMD的CPU也很不错。一般来说,AMD的CPU比英特尔的CPU更便宜,更适合深度学习。对于4倍的GPU构建,我的首选CPU将是Threadripper。我们在大学里用Threadrippers构建了几十个系统,它们都很好用–还没有任何抱怨。对于8倍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性能,伟大的内存带宽。然而,与英伟达GPU相比,他们缺乏Tensor Cores或类似的东西,使得他们的深度学习性能很差。打包的低精度数学并不能解决问题。没有这个硬件功能,AMD的GPU将永远没有竞争力。传言显示,一些具有Tensor Core等效的数据中心卡计划在2020年推出,但此后没有新的数据出现。仅仅拥有相当于Tensor Core的数据中心卡,也意味着很少有人能买得起这样的AMD GPU,这将使英伟达获得竞争优势。

假设AMD在未来推出了类似于Tensor-Core的硬件功能。然后很多人会说:”但是没有适用于AMD GPU的软件!我怎么能使用它们?我应该如何使用它们呢?”这多半是一种误解。通过ROCm的AMD软件已经走过了很长的路,通过PyTorch的支持也很好。虽然我没有看到很多关于AMD GPU + PyTorch的经验报告,但所有的软件功能都是集成的。看来,如果你选择任何网络,在AMD GPU上运行都会很好。因此,在这里,AMD已经走了很长一段路,这个问题或多或少得到了解决。

然而,如果你解决了软件和缺乏张量核心的问题,AMD仍有一个问题:缺乏社区。如果你有NVIDIA GPU的问题,你可以在谷歌上搜索这个问题并找到解决方案。这为NVIDIA GPU建立了很多信任。你拥有使英伟达GPU的使用变得简单的基础设施(任何深度学习框架都可以使用,任何科学问题都得到很好的支持)。你有使NVIDIA GPU的使用变得轻而易举的黑客和技巧(例如,顶点)。你可以在每个角落找到NVIDIA GPU和编程方面的专家,而我对AMD GPU专家的了解要少得多。

在社区方面,AMD有点像Julia与Python。Julia有很大的潜力,很多人会说,而且是正确的,它是科学计算的高级编程语言。然而,与Python相比,Julia几乎不被使用。这是因为Python社区是非常强大的。Numpy、SciPy、Pandas是强大的软件包,大量的人聚集在一起。这与NVIDIA与AMD的问题非常相似。

因此,在Tensor Core同等产品推出之前(1/2到1年?),AMD很可能不会赶上,而且围绕ROCm建立了强大的社区(2年?)在特定的子群体中(如加密货币开采、数据中心),AMD总是会抢夺一部分市场份额。尽管如此,在深度学习方面,英伟达很可能至少再保持几年的垄断地位。

什么时候使用云与专用GPU桌面/服务器更好?

经验法则:如果你预计做深度学习的时间超过一年,那么买一个桌面GPU会更便宜。否则,除非你有丰富的云计算技能,并希望获得随意增加和减少GPU数量的好处,否则云实例是最好的。

以下段落中的数字会发生变化,但它可以作为一个场景,帮助你了解大致的成本。你可以使用类似的数学方法来确定云计算GPU是否是最适合你的解决方案。

对于云计算GPU比台式机更贵的确切时间点,在很大程度上取决于你所使用的服务,最好是自己做一下这方面的数学计算。下面我做了一个AWS V100现货实例的计算例子,其中有1个V100,并将其与带有单个RTX 3090的台式机(性能相似)的价格进行比较。带有RTX 3090的台式机价格为2200美元(2-GPU裸机+RTX 3090)。此外,假设你在美国,每千瓦时要额外支付0.12美元的电费。相比之下,AWS的按需实例每小时2.14美元。

在每年15%的利用率下,台式机使用。

(350 W (GPU) + 100 W (CPU))*0.15 (利用率) 24小时365天=591千瓦时/年\n\n所以每年591千瓦时的电,就是额外的71美元。

在15%的利用率下,台式机与云实例的收支平衡点(你在白天使用云实例15%的时间),将是大约300天(2311美元对2270美元)。

2.14美元/小时*0.15(利用率)24小时300天=2311美元\n\n因此,如果你期望在300天后运行深度学习模型,最好购买一台台式机,而不是使用AWS的按需实例。

你可以对任何云服务进行类似的计算,以决定你是选择云服务还是桌面。

常见的利用率有以下几种:

  • 博士生的个人桌面: < 15%
  • 博士生slurm GPU集群: > 35%
  • 全公司的slurm研究集群: > 60%

一般来说,对前沿思想的思考比开发实用产品更重要的专业,其利用率较低。有些领域的利用率很低(可解释性研究),而其他领域的利用率则高得多(机器翻译、语言建模)。一般来说,个人机器的利用率几乎总是被高估。常见的是,大多数个人系统的利用率在5-10%之间。这就是为什么我强烈建议研究小组和公司使用slurm GPU集群,而不是个人桌面GPU机器。

版本历史

  • 2023-01-30:改进了字体和推荐图。增加了5年拥有成本的电力perf/USD图表。更新了异步复制和TMA功能。稍微更新了FP8培训。一般改进。
  • 2023-01-16:添加了Hopper和Ada GPU。添加了GPU推荐图。添加了关于TMA单元和二级缓存的信息。
  • 2020-09-20:添加了关于使用功率限制来运行4x RTX 3090系统的讨论。在性能和成本/性能图表中增加了较早的GPU。添加了稀疏矩阵乘法的数字。
  • 2020-09-07: 添加了NVIDIA Ampere系列GPU。包括了很多好知道的GPU细节。
  • 2019-04-03:添加了RTX Titan和GTX 1660 Ti。更新了TPU部分。添加了启动硬件讨论。
  • 2018-11-26:添加了关于RTX卡过热问题的讨论。
  • 2018-11-05:添加了RTX 2070并更新了建议。更新了带有硬性能数据的图表。更新了TPU部分。
  • 2018-08-21:添加了RTX 2080和RTX 2080 Ti;重做了性能分析
  • 2017-04-09:添加了成本效益分析;更新了带有NVIDIA Titan Xp的建议
  • 2017-03-19:清理了博文;添加了GTX 1080 Ti
  • 2016-07-23:添加了Titan X Pascal和GTX 1060;更新了建议
  • 2016-06-25:重做了多GPU部分;删除了简单神经网络内存部分,因为不再相关;扩展了卷积内存部分;由于不再有效,截断了AWS部分;增加了我对Xeon Phi的看法;增加了GTX 1000系列的更新
  • 2015-08-20:增加了AWS GPU实例的部分;在比较关系中增加了GTX 980 Ti
  • 2015-04-22:不再推荐GTX580;增加了卡之间的性能关系
  • 2015-03-16:更新了GPU推荐。GTX 970 和 GTX 580
  • 2015-02-23:更新了GPU推荐和内存计算
  • 2014-09-28:增加了对CNN的内存要求的强调

鸣谢

我感谢Suhail让我意识到H100 GPU的价格已经过时,感谢Gjorgji Kjosev指出字体问题,感谢Anonymous指出TMA单元在Ada GPU上不存在,感谢Scott Gray指出FP8张量核心没有转置矩阵乘法,感谢reddit和HackerNews用户指出的许多其他改进。

对于这篇博文过去的更新,我要感谢Mat Kelcey帮助我调试和测试GTX 970的自定义代码;我要感谢Sander Dieleman让我意识到我对卷积网的GPU内存建议的缺点;我要感谢Hannes Bretschneider指出GTX 580的软件依赖问题;我要感谢Oliver Griesel指出AWS实例的笔记本解决方案。我要感谢Brad Nemire为我提供了一台RTX Titan用于基准测试。我要感谢Agrin Hilmkil、Ari Holtzman、Gabriel Ilharco、Nam Pho对本博文上一版本的出色反馈。”

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年4月5日
下一篇 2023年4月5日

相关推荐