Deep Learning中如何选择GPU?(二)

作者:Redflashing

深度学习通常需要大规模的计算需求,作为主要运算硬件的GPU的选择决定了深度学习的体验。但是如何去选择新的GPU,哪些GPU特性十分重要?GPU RAM,核心(Core)数量,张量核心(Tensor Core)数量?如何做出最具性价比的选择?本文通过深入探讨这些问题,主要针对Ampere系列显卡为选购适用于深度学习GPU的小伙伴们给出最合适的建议。

总结

  • 避免在矿潮期间购置价格高昂的显卡。同样,在矿难后避免买到翻新矿卡
  • 尽量避免使用笔记本进行深度学习训练,同种显卡型号下台式机和笔记本会有明显差距
  • 总体最好的 GPU:RTX 3080 和 RTX 3090。
  • 对于个人用户而言避免使用的 GPU: 任何 Tesla 卡;任何专业绘图显卡(如Quadro 卡);任何 Founders Edition 卡;Titan RTX、Titan V、Titan XP,除此之外无Tensor Core(rtx20系显卡之前)的二手消费级显卡需要斟酌。
  • 颇具成本效益而价格高昂:RTX 3080。
  • 颇具成本效益而价格较便宜:RTX 3070、RTX 2060 Super。
  • 预算不够的情况下: 购买二手卡,RTX 2070(400美元)、RTX 2060(300美元)、GTX 1070(220美元)、GTX 1070 Ti(230美元)、GTX 1650 Super(190美元)。
  • 没钱: 百度的AI Studio ,Kaggle等均有免费GPU算力提供
  • Kaggle竞赛:RTX 3070
  • 计算机视觉(CV)、预训练或机器翻译研究人员:4路RTX 3090(推荐涡轮显卡)。注意配备相应的大功率电源以及扇热设备
  • 自然语言处理(NLP) 研究人员: 如果不从事机器翻译、语言建模或任何类型的预训练工作,那么 RTX 3080 就足够了而且颇具性价比。
  • 相关专业学生/从业者: 从一块 RTX 3070 开始。进一步学习,卖掉你的 RTX 3070,并购买多路RTX 3080。根据下一步选择的领域(初创公司、Kaggle、研究、深度学习应用),卖掉你的 GPU,三年后再买更合适的(下一代 RTX 40s GPU)。
  • 尝鲜小白:RTX 2060 Super 就很好,但可能需要使用新电源。如果你的主板有一个 PCIe x16 插槽,并且有一个大约 300W 的电源,那么 GTX 1050 Ti 是一个很好的选择。
  • 用于模型并行化的、少于 128 个 GPU 的 GPU 集群: 如果你可以为你的集群购买 RTX GPU:66% 的 8路RTX 3080 和 33% 的 8路RTX 3090(要确保能有效地冷却)。如果解决不了 RTX 3090 的冷却问题,那么可以购买 33% 的 RTX 6000 GPU 或 8路Tesla A100。如果不能购买 RTX GPU,那么可能会选择 8路A100 Supermicro 节点或 8路RTX 6000 节点。
  • 用于模型并行化的、128 个 GPU 的 GPU 集群: 考虑下 8路Tesla A100 设置。如果你使用超过 512 个 GPU,那么你应该考虑配置一个 DGX A100 SuperPOD 系统,以匹配你的规模。

上一篇内容链接:Deep Learning中如何选择GPU?(一)

4.3. 散热问题

​ RTX 30 系列新的风扇设计包括一个鼓风扇和一个推挽式风扇。设计非常奇特,如果你的 GPU 之间有间隙,也会非常有效。然而,如果把 GPU 堆叠在一起,就不清楚它们表现怎么样了。鼓风扇的设计和以前不同。在应该 4 PCIe 的插槽中,如果你想购买 1 到 2 个 GPU,应该没什么问题。然而,如果打算使用 3 到 4 个 RTX 30 系 GPU,那么需要去参考各类的散热报告,这里就不再进行赘述。Deep Learning中如何选择GPU?(二)_第1张图片

​ 为了克服散热问题,水冷在任何情况下都可以提供一个解决方案。许多非公版显卡也提供了 3080/RTX 3090 的水冷模块,即使在 4 路 GPU 设置中也能保持低温。如果有 4 路 GPU 深度学习工作站的需求,可以留心一体化水冷却解决方案。

​ 另一个解决方案就是购买 PCIe 扩展器,并将 GPU 在机箱内分散开。这非常有效,例如,如果台式电脑机箱中有足够的空间,那么就可以购买标准 3 槽宽的 RTX 3090,并在机箱中使用 PCIe 扩展器来把它们分散开。这样就通过一个简单的解决方案解决了 4 路 RTX 3090 设置中的空间问题和冷却问题。

4.4. 插槽设计和电源

​ 标准 RTX 3090 是一个 3 插槽宽的 GPU,所以你不能在 4 路设置中使用 NVIDIA 的默认风扇设计。因为它运行在 350W TDP 下,在多 GPU 插槽设置中很难降温。

​ 在 4 路 RTX 3090 设置下为一个 4 ∗ 350 w = 1400 w 4*350w = 1400w 4350w=1400w 的系统供电也非常困难。1600w 的供电单元(PSU)很容易获得,但对于 CPU 及其他的硬件来说 200w 的功率有些吃紧。只有在元件获得充分利用的情况下,才会达到最大功率,而在深度学习中,CPU 处于低负载状态。这样,一个 1600w 的 PSU 就可以很好地为一个 4 路 RTX 3080 工作站供电,当然双电源也是一个非常好的选择,这里就不再过多赘述。

5.GPU 深度学习性能

​ 下面的基准测试不仅包括 Tesla A100 和 Tesla V100 的基准测试,我还构建了一个适合这些数据的模型,以及基于 Titan V、Titan RTX、RTX 2080 Ti 和 RTX 2080 的四个不同的基准测试。[1,2,3,4]

​ 除此之外,我还通过在基准数据的这些数据点之间进行插值扩展了 RTX 2070、RTX 2060 卡或是 Quadro RTX 6000&8000 卡。通常,在同一个架构中,GPU 的扩展与串流多处理器和带宽成线性关系,而我的架构模型就是以此为基础。

​ 这里只收集了混合精度 FP16 训练的基准数据(以 RTX 2080 Ti 性能为基准进行归一化的 GPU性能。数值是相对 RTX 2080 Ti 的速度提升)

Deep Learning中如何选择GPU?(二)_第2张图片

​ 与 RTX 2080 Ti 相比,RTX 3090 在 CNN 上的表现提高了 1.57 倍,而对于 Transformer 其性能提高了 1.5 倍,与此同时,定价也提高了 15 %。可以说 ,Ampere RTX 30 有着实质性的性能提升。

6.GPU 深度学习的每美元性能

​ 什么 GPU 能给我们带来最好的回报?这取决于整个系统的成本。如果你有一个成本高昂的系统,那么投入更昂贵的 GPU 是有意义的。

​ 这里有三个 PCIe 3.0 构建,用作 2/4 路 GPU 系统的基础成本,然后再加上 GPU 成本。GPU 指的是在亚马逊和 eBay 上的成本均值。对于新的 Ampere GPU,我使用了定价。结合上文给出的性能值,就可以得出这些 GPU 系统的每美元性能值。 对于 8 路 GPU 系统,我使用 Supermicro barebone 作为基准成本–这是 RTX 服务器的行业标准。请注意,这写柱状图并没有考虑显存需求。我们应该考虑自己的显存需求,然后再图表中寻找最佳选项。关于显存,这里有一份大致的指南:

  • 使用预训练的 Transformer;从头开始训练的小型 Transformer:>= 11 GB
  • 在研发/生成环境环境中训练大型 Transformer 或 CNN:>= 24 GB
  • 开发神经网络原型(Transformer 或 CNN ):>= 10 GB
  • Kaggle 竞赛:>= 8 GB
  • 计算机视觉应用:>= 10 GB

(1)以 RTX 3080 为基准的归一化每美元性能

Deep Learning中如何选择GPU?(二)_第3张图片

(2)以 RTX 3080 为基准的 4-GPU 归一化每美元性能

Deep Learning中如何选择GPU?(二)_第4张图片

(3)以 RTX 3080 为基准的 8-GPU 归一化每美元性能

Deep Learning中如何选择GPU?(二)_第5张图片

7. GPU 推荐

7.1 什么情况下需要大于 11 GB 的显存?

​ 之前提到过,如果你使用 Transformer,那么你至少应该有 11GB 的显存,如果你研究 Transformer,则显存 >= 24GB 更好。这是因为之前大多数经过预训练的模型都有相当高的显存要求,而且这些模型至少是使用拥有 11 GB 显存的 RTX 2080 Ti GPU 进行训练。因此,小于 11GB 可能会遇到难以或不可能运行某些模型的情况。

​ 其他需要大量内存的领域包括医学成像、一些最先进的计算机视觉模型以及任何有超大图像的东西(GAN,样式转换)。

​ 一般来说,如果你想建立一个模型并据此获得竞争优势,无论是研究、行业还是 Kaggle 竞赛,额外的显存可能会为你带来优势。

7.2 什么情况下显存小于 11GB 影响不大?

​ RTX 3070 和 RTX3080 是非常强大的卡,但它们显存有点小(老黄精妙的刀法)。不过,对于许多任务,你不需要那么大的显存。

​ 如果你想学习深度学习,那么 RTX 3070 就很完美。这是因为训练大多数架构的基本技能都可以通过将它们缩小一点或者使用小一点的输入图像来学习。如果我再次学习深度学习,我可能会使用一个 RTX 3070,如果有多余的钱,甚至会用多个。

​ RTX 3080 是目前为止最具性价比的显卡,因此是原型设计的理想选择。对于原型设计,你想要内存最大的,这仍然很便宜。这里所说的原型设计可以是在任何领域的原型设计:研究、Kaggle 竞赛、为创业公司出主意 / 设计模型、试验研究代码。对于所有这些应用程序,RTX 3080 都是最好的 GPU。

​ 假设我将领导一个研究实验室 / 创业公司。我将把 66-80% 的预算投入到 RTX 3080 机器上,20-33% 用于配备了强大水冷装置的 RTX 3090 机器。我的想法是,RTX 3080 的成本效益更高,可以作为原型机,通过 slurm 集群设置来共享。因为原型设计应该以敏捷的方式完成,所以应该使用较小的模型和数据集。RTX 3080 非常适合这个场景。一旦学生 / 同事获得了一个很好的原型模型,他们就可以将原型转移到 RTX 3090 机器上,并将其扩展为更大的模型。

7.3 一般建议

​ 总的来说,RTX 30 系列非常强大,我强烈推荐这些 GPU。如前一节所述,要注意内存,还要注意电源和冷却需求。如果你的 GPU 之间有一个 PCIe 插槽,则冷却将没有任何问题。否则,如果使用 RTX 30 卡,请准备好水冷装置、PCIe 扩展器或有效的鼓风扇卡(未来几周的数据将会说明,NVIDIA 的风扇设计是足够的)。

​ 一般来说,我会推荐 RTX 3090 给任何买得起它的人。不仅是现在,未来 3-7 年它都将是一个非常有效的卡。因此,这是一项将保持强劲增长的好投资。HBM 内存三年内不太可能变便宜,所以下一个 GPU 只会比 RTX 3090 好 25% 左右。我们可能会在 5-7 年内看到廉价的 HBM 内存,在那之后,你肯定想要升级。

​ 如果你有多个 RTX 3090,请确保你选择的解决方案可以提供有效的冷却和足够的电力。对于什么样的设置合适,我将随着可用数据的增加更新关于这个问题的博文。

​ 对于没有强烈竞争需求的企业(研究公司、Kaggle 竞赛、竞争性初创公司),我推荐 RTX 3080。这是一个更经济的解决方案,并将确保大多数网络的训练都足够快。如果你使用了合适的内存技巧,并且不介意额外进行编程,那么现在有足够的技巧将一个 24GB 的神经网络适配到 10GB 的 GPU 上。因此,如果你接受一些不确定性和额外的编程,那么 RTX 3080 也可能是比 RTX 3090 更好的选择。

一般来说,对于学习深度学习和原型设计,RTX 3070 也是一种可靠的卡,它比 RTX 3080 便宜 200 美元。如果你负担不起 RTX3080,那么 RTX3070 是最好的选择。

​ 如果你的预算有限,而 RTX 3070 又太贵,那么一个二手 RTX 2070 在易趣上大约要 260 美元。现在还不清楚是否会推出 RTX 3060,但如果你的预算有限,可能也值得再等一段时间。如果定价与 RTX 2060 和 GTX 1060 类似,那么预计其价格将在 250 美元到 300 美元之间,而且性能相当强劲。

7.4 GPU 集群建议

​ GPU 集群设计高度依赖于用途。对于一个 +1024 GPU 系统,网络最重要,但在这样的系统上,如果用户一次最多只使用 32 个 GPU,投资强大的网络基础设施就是浪费。在这里,我将使用类似原型推广的推理,如在 RTX 3080 和 RTX 3090 案例对比中所做的那样。

​ 一般来说,因为 CUDA 许可协议,RTX 卡被禁止进入数据中心。然而,大学通常可以得到这个规则的豁免。与英伟达的人取得联系请求豁免权是值得的。如果你被允许使用 RTX 卡,那么我建议使用配备了 RTX 3080 或 RTX 3090 GPU 的标准 Supermicro 8 GPU 系统(如果可以保证有效冷却)。一组 8x A100 节点就可以确保在原型化之后有效地“推广”,特别是在不能保证 8x RTX 3090 服务器能够得到充分冷却的情况下。在这种情况下,我建议使用 A100 而不是 RTX 6000 / RTX 8000,因为 A100 非常划算,而且是面向未来的。

​ 如果你想在一个 GPU 集群(+256 个 GPU)上训练非常大的网络,我推荐配备了 A100 GPU 的 NVIDIA DGX SuperPOD 系统。在 +256 GPU 的规模下,网络变得至关重要。如果你想扩展到超过 256 个 GPU,那么你将需要一个高度优化的系统,把标准解决方案攒在一起就不在有效了。

​ 特别是在 +1024 GPU 的规模上,市场上唯一具有竞争力的解决方案是谷歌 TPU Pod 和 NVIDIA DGX SuperPod。在这个规模上,我更喜欢谷歌 TPU Pod,因为他们定制的网络基础设施似乎优于 NVIDIA DGX SuperPod 系统——尽管这两种系统非常接近。比起 TPU 系统,GPU 系统为深度学习模型和应用提供了更多的灵活性,而 TPU 系统支持更大的模型,并提供更好的伸缩性。所以两种系统都有各自的优点和缺点。

Q & A

要点:

  • PCIe 4.0 和 PCIe 通道在 双路 GPU 设置中并不重要。对于 4路 GPU 设置,它们也不是特别重要。
  • RTX 3090 和 RTX 3080 的冷却会是个问题。使用水冷卡或 PCIe 扩展器。
  • NVLink 没用,只对 GPU 集群有用。
  • 你可以在一台计算机中使用不同的 GPU 类型(如 GTX 1080 + RTX 2080 + RTX 3090),但你无法有效地将它们并行。
  • 在两台以上的机器上并行训练,你需要 Infiniband +50Gbit/s 的网络。
  • AMD CPU 比 Intel CPU 便宜,而 Intel CPU 几乎没有任何优势。
  • 尽管做出了非常大的努力,但由于缺少社区和 Tensor Core ,至少在 1-2 年内 AMD GPU+ ROCm 可能都无法与 NVIDIA 竞争。
  • 如果你使用 GPU 的时间不到一年,那么云 GPU 是有帮助的。除此之外,台式机是更便宜的解决方案。

PCIe 4.0 是否必要?

​ 一般来说,不需要。如果你有一个 GPU 集群,PCIe 4.0 很有用。如果你有一台 8x GPU 机器,也还可以,但除此之外,它就没有多大好处了。它可以帮助实现更好的并行化和更快的数据传输。数据传输在任何应用程序中都不是瓶颈。在计算机视觉中,在数据传输管道中,数据存储可能是瓶颈,而 PCIe 从 CPU 到 GPU 的传输则不是瓶颈。所以,对于大多数人来说,没有真正的理由去安装 PCIe 4.0。在 4 GPU 设置中,这样做的好处是,并行度可能会提高 1-7%。

​ 作为参考,有国外网站做了RTX3080在不同PCIe版本下的性能测试,在多个场景下进行测试结果显示 PCIe3.0 与 PCIe4.0 均仅有细微差距,。测试平台选择的是在PCIe3.0和4.0下的锐龙9-3900XT和酷睿i9-10900K(PCIe3.0)。对于主流显卡来说PCIe3.0 X8的带宽就很足够了,只有达到2080Ti的性能水平下PCIe3.0 X8才有小幅度的性能影响,这已经能说明PCIe3.0 X16已经通吃所有消费级显卡了。

下图为 3DMark Fire Strike (DX11)的结果Deep Learning中如何选择GPU?(二)_第6张图片

8x/16x PCIe 通道是否是必要的?

​ 由于 GPU 瓶颈并不在于 PCIe 通道。同 PCIe 4.0 一样,一般来说,8x/16x 通道不需要。并行化和快速数据传输需要 PCIe 通道,但这几乎不会成为瓶颈。在 4x 通道上运行 GPU 就很好,特别是当你只有 2 个 GPU 的时候。对于 4 GPU 设置,我更希望每个 GPU 有 8 个通道,但如果你是在 4 个 GPU 上并行运行的话,那么 4 个通道可能只会降低 5-10% 的性能。

能够并行多个不同型号的 GPU 吗?

​ 这是可行的,但是不同类型的 GPU 无法有效地并行。我认为,一个 3x RTX 3070 加一个 RTX 3090 就够原型推广了。另一方面,在 4x RTX 3070 GPU 上并行会非常快,如果你能将模型放到这些 GPU 上的话。除此之外,我能想到的你希望这样做的唯一原因是,你希望继续使用旧 GPU。这没问题,但是在那些 GPU 上并行会比较低效,因为最快的 GPU 会等待最慢的 GPU 到达一个同步点(通常是梯度更新)。

NVLink 是否有必要?

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

ROCm 方案是否可行?

Deep Learning中如何选择GPU?(二)_第7张图片虽然近期 pytorch 1.8 已经支持了 ROCm(不再需要 Docker),但却经常遇到问题。

​ 1-2 年内赶不上。这涉及三个方面的问题:Tensor Core、软件和社区。

​ 就纯硬件配置而言,AMD GPU 很棒:优秀的 FP16 性能,优秀的内存带宽。然而,由于缺乏 Tensor Core 或等效特性,其深度学习性能与 NVIDIA GPU 相比较差。封装的低精度数学函数不能解决这个问题。没有这个硬件特性,AMD GPU 将永远不会有竞争力。有传言称,AMD 计划在 2020 年推出某种具有 Tensor Core 等效特性的 数据中心卡,但此后就没有新的数据出现了。拥有 Tensor Core 等效特性的数据中心卡意味着很少有人能够负担得起这样的 AMD GPU,这将给 NVIDIA 带来竞争优势。

​ 假设 AMD 在未来引入了类似于 Tensor Core的硬件特性。然后很多人会说,“但是没有软件针对 AMD GPU!”我该怎么使用它们呢?这更多的是一种误解。AMD 软件 ROCm 已经发展很长一段时间了,并且 PyTorch 提供了优秀的支持。虽然我没有看到很多针对 AMD GPU+ PyTorch 的经验报告,但所有的软件功能已整合。看起来,不管你选择什么网络,都可以很好地在 AMD GPU 上运行。所以,在这方面,AMD 已经走过了一段很长的路,这个问题或多或少得到了解决。

​ 然而,如果软件问题和缺少 Tensor Core 的问题已得到了解决,AMD 还有一个问题:缺少社区。如果你使用 NVIDIA GPU 遇到问题,你可以在谷歌查询这个问题并找到解决方案。这让人们对 NVIDIA GPU 产生了很大的信任。你有基础设施,使使用 NVIDIA GPU 变得很容易(任何深度学习框架都可以使用,任何科学问题都得到很好的支持)。你可以轻松地使用 NVIDIA GPU(比如 apex)。你很容易就可以找到 NVIDIA GPU 和编程专家,而我认识的 AMD GPU 专家就少得多。

​ 在社区方面,AMD 和 NVIDIA 的对比有点像 Julia 和 Python。Julia 有很大的潜力,很多人会说,它是科学计算的高级编程语言。然而,与 Python 相比,Julia 很少被使用。这是因为 Python 社区非常强大。Numpy、SciPy、Pandas 都是功能强大的软件包,有很多人在使用它们。这与 NVIDIA vs AMD 的问题非常相似。

因此,在引入 Tensor Core 等效特性(1/2 到 1 年?)并围绕 ROCm 建立一个强大的社区(2 年?)之前,AMD 很可能都无法赶上 NVIDIA。AMD 总是会在特定的子领域(如加密货币挖掘、数据中心)抢夺一部分市场份额。不过,在深度学习领域,至少几年的时间内,NVIDIA 可能会保持其垄断地位。

参考文档

  • Which GPU(s) to Get for Deep Learning: My Experience and Advice for Using GPUs in Deep Learning
  • Why are GPUs well-suited to deep learning?
  • What is a GPU and do you need one in Deep Learning?
  • NVIDIA A100 Tensor Core GPU Architecture whitepaper
  • Nvidia Ampere GA102 GPU Architecture whitepaper
  • s21929 Tensor Core performance on nvidia gpus the ultimate guide
  • https://github.com/NervanaSystems/maxas/wiki/SGEMM
  • Nvidia’s Tensor Cores for Machine Learning and AI – Explained
  • NVIDIA深度学习Tensor Core全面解析(上篇)
  • NVIDIA深度学习Tensor Core全面解析(下篇)
  • https://www.zhihu.com/question/394863138/answer/1275510947

Deep Learning中如何选择GPU?(二)_第8张图片

你可能感兴趣的:(Deep,Learning深度学习笔记,机器学习,gpgpu,nvidia,深度学习)