深度学习硬件选购“避坑”完全指南

栏目: 编程工具 · 发布时间: 5年前

内容简介:深度学习属于计算密集型任务,搭建硬件环境至关重要,例如选择多内核的快速CPU和其他相关硬件配置,但是,在构建深度学习硬件系统时,最常见的“天坑”就是在没有必要的硬件上浪费钱。在这里,我们推荐阅读深度学习博主Tim Dettmers多年来,我总共建立了7个不同的深度学习工作站,尽管经过仔细的研究和推理,但我在选择硬件部分时依然犯了错误。在本指南中,我想分享一下我多年来积累的经验,这样您就可以少走弯路。

深度学习硬件选购“避坑”完全指南

深度学习属于计算密集型任务,搭建硬件环境至关重要,例如选择多内核的快速CPU和其他相关硬件配置,但是,在构建深度学习硬件系统时,最常见的“天坑”就是在没有必要的硬件上浪费钱。在这里,我们推荐阅读深度学习博主Tim Dettmers 撰写 的“深度学习硬件指南”,原文编译如下:

多年来,我总共建立了7个不同的深度学习工作站,尽管经过仔细的研究和推理,但我在选择硬件部分时依然犯了错误。在本指南中,我想分享一下我多年来积累的经验,这样您就可以少走弯路。

博客帖子按错误严重程度排序。这意味着人们通常浪费最多钱的错误首先出现。

GPU

本博文假设您将使用GPU搭建深度学习硬件。如果您正在构建或升级系统以进行深度学习,那么忽略GPU是不明智的。GPU对深度学习应用程序的核心 – 处理速度的提高太大了,不容忽视。

我在 GPU推荐博客文章中详细 讨论了GPU的选择,而GPU的选择可能是深度学习系统最关键的选择。 选择GPU时可能会出现三个主要错误 :(1)成本/性能不佳,(2)内存不足,(3)散热不良。

为了追求良好的性价比,我通常推荐使用RTX 2070或RTX 2080 Ti。如果使用这些卡,则应使用16位模型。否则,来自eBay的GTX 1070,GTX 1080,GTX 1070 Ti和GTX 1080 Ti是公平的选择,您可以使用这些具有32位(但不是16位)的GPU。

选择GPU时尤其要留意内存要求。RTX卡可以以16位运行,可以训练相比GTX卡使用相同内存大两倍的型号。因此,RTX卡具有内存优势,并且选择RTX卡并学习如何有效地使用16位模型将带您走很长的路。通常,对内存的要求大致如下:

  • 正在寻找最先进分数的研究:> = 11 GB
  • 正在寻找有趣架构的研究:> = 8 GB
  • 任何其他研究:8 GB
  • Kaggle:4 – 8 GB
  • 创业项目:8 GB(但检查特定应用领域的型号尺寸)
  • 公司项目:8 GB用于原型设计,> = 11 GB用于培训

需要注意的另一个问题是,特别是如果您购买多个RTX卡,则需要冷却系统。如果您想将GPU固定在彼此相邻的PCIe插槽中,您应该确保GPU的风冷。否则,您可能会遇到散热问题,导致GPU运行速度变慢(大约30%)甚至频繁死机。

深度学习硬件选购“避坑”完全指南

怀疑阵容

您能否识别出因性能不佳而出现故障的硬件部分?其中一个GPU?或者也许这毕竟是CPU的错?

内存

RAM的主要错误是购买时钟频率过高的RAM。第二个错误是购买不够的RAM以获得平滑的原型制作体验。

需要RAM时钟速率

RAM时钟速率是市场营销的一种情况,RAM公司会引诱你购买“更快”的RAM,实际上几乎没有产生性能提升。最好的解释是“  RAM速度真的很重要吗? “关于RAM von Linus技术提示的视频。

此外,重要的是要知道RAM速度与快速CPU RAM-> GPU RAM传输几乎无关。这是因为(1)如果您使用 固定内存 ,您的迷你批次将转移到GPU而不涉及CPU,以及(2)如果您不使用固定内存,快速与慢速RAM的性能提升是关于0-3% – 把钱花在别的地方!

RAM大小

RAM大小不会影响深度学习性能。但是,它可能会阻碍您轻松执行GPU代码(无需交换到磁盘)。你应该有足够的内存来舒适地使用你的GPU。这意味着您应该至少拥有与最大GPU匹配的RAM量。例如,如果你有一个24 GB内存的Titan RTX,你应该至少有24 GB的RAM。但是,如果您有更多的GPU,则不一定需要更多RAM。

这种“在RAM中匹配最大GPU内存”策略的问题在于,如果处理大型数据集,您可能仍然无法使用RAM。这里最好的策略是匹配你的GPU,如果你觉得你没有足够的RAM,只需购买更多。

一种不同的策略受到心理学的影响:心理学告诉我们,注意力是一种随着时间推移而耗尽的资源。RAM是为数不多的硬件之一,可以让您节省集中资源,解决更困难的编程问题。如果你有更多的RAM,你可以将注意力集中在更紧迫的问题上,而不是花费大量时间来环绕RAM瓶颈。有了大量的RAM,您可以避免这些瓶颈,节省时间并提高生产率,解决更紧迫的问题。特别是在Kaggle比赛中,我发现额外的RAM对于特征工程非常有用。因此,如果您有钱并进行大量预处理,那么额外的RAM可能是一个不错的选择。因此,使用此策略,您希望现在拥有更多,更便宜的RAM而不是更晚。

中央处理器

人们犯的主要错误是人们过分关注CPU的PCIe通道。您不应该太在意PCIe通道。相反,只需查看您的CPU和主板组合是否支持您要运行的GPU数量。第二个最常见的错误是获得一个太强大的CPU。

CPU和PCI-Express

人们对PCIe通道位数极为痴迷!然而,事实是它对深度学习表现微乎其微。如果您只有一个GPU,则只需要是PCIe通道即可快速将数据从CPU RAM传输到GPU RAM。通道位数并没有想象中那么重要:ImageNet批任务测试显示:传输32个图像(32x225x225x3)16倍通道需要1.1毫秒,8倍通道2.3毫秒,4倍通道4.5毫秒。这些是理论数字,实际速度可能会减半 – 但这仍然是闪电般的快速!

下面是用ResNet-152进行ImageNet32位图像迷你批次传输测试的实际结果与理论数据的对比:

  • 前向和后向传递总用时:216毫秒(ms)
  • 16倍PCIe通道CPU-> GPU传输:大约2 ms(理论上为1.1 ms)
  • 8倍PCIe通道CPU-> GPU传输:大约5毫秒(2.3毫秒)
  • 4倍PCIe通道CPU-> GPU传输:大约9毫秒(4.5毫秒)

因此,从4到16倍PCIe通道性能提升仅3.2%。但是,如果你使用  带有固定内存的 PyTorch数据加载器 ,你可以获得0%的性能。因此,如果您使用单个GPU,请不要在PCIe通道上浪费资金!

选择CPU PCIe通道和主板PCIe通道时,请确保选择支持所需GPU数量的组合。如果您购买支持2个GPU的主板,并且您希望最终拥有2个GPU,请确保购买支持2个GPU的CPU,但不一定要查看PCIe通道。

PCIe通道和多GPU并行

如果您在具有数据并行性的多个GPU上训练网络,PCIe通道是否重要?我已经 在ICLR2016上发表了一篇论文 ,我可以告诉你,如果你有96个GPU,那么PCIe通道非常重要。但是,如果你有4个或更少的GPU,这并不重要。如果您在2-3个GPU之间并行化,我根本不关心PCIe通道。有了4个GPU,我确保每个GPU可以获得8个PCIe通道的支持(总共32个PCIe通道)。因为几乎没有人运行超过4个GPU的系统作为经验法则:不要花费额外的钱来获得每GPU更多的PCIe通道 – 这没关系!

CPU核心数量很重要

为了能够为CPU做出明智的选择,我们首先需要了解CPU以及它与深度学习的关系。CPU为深度学习做了什么?当您在GPU上运行深度网络时,CPU几乎不会进行任何计算。主要是它(1)启动GPU函数调用,(2)执行CPU函数。

到目前为止,CPU最有用的应用程序是数据预处理。有两种不同的通用数据处理策略,它们具有不同的CPU需求。

第一个策略是在训练时进行预处理:

环:

  1. 加载小批量
  2. 预处理小批量
  3. 小批量训练

第二种策略是在任何培训之前进行预处理:

  1. 预处理数据
  2. 环:
    1. 加载预处理的小批量
    2. 小批量训练

对于第一种策略,具有多个内核的良好CPU可以显着提高性能。对于第二种策略,您不需要非常好的CPU。对于第一个策略,我建议每个GPU至少有4个线程 – 通常每个GPU有两个核心。我没有对此进行过硬测试,但每增加一个核心/ GPU,你应该获得大约0-5%的额外性能。

对于第二种策略,我建议每个GPU至少有2个线程 – 通常是每个GPU一个核心。如果您使用第二个策略,当您拥有更多内核时,您将不会看到性能的显着提升。

CPU时钟频率没有那么重要

当人们选择高性能CPU时,他们首先考虑的是时钟频率。4GHz优于3.5GHz,不是吗?这对于挑选相同架构的处理器(例如“Ivy Bridge”)来说通常是正确的,但不一定适用于不同架构CPU。因此,时钟频率并不总是衡量性能的最佳标准。

在深度学习的应用场景中,CPU计算负载不高:在这里增加一些变量,在那里评估一些布尔表达式,在GPU或程序内进行一些函数调用 。

但是当我运行深度学习程序时,CPU使用率经常会飙到100%,那么CPU的频率对深度学习系统性能的影响到底有多大呢?我做了一些CPU内核速率的降频实验来找出答案。

深度学习硬件选购“避坑”完全指南

MNIST和ImageNet上的CPU降频 :可以看出不同主频CPU在内核大幅降频后对整个系统的性能影响不大(没有必要购买太高主频的昂贵的CPU)。作为比较:从GTX 680升级到GTX Titan的性能约为+ 15%; 从GTX Titan到GTX 980另外+ 20%性能; GPU超频可为任何GPU带来约+ 5%的性能

请注意,这些实验是在过时的硬件上进行的,但是,对于现代CPU / GPU,这些结果应该仍然相同。

硬盘/ SSD

硬盘通常不是深度学习的瓶颈。但是,如果你决策错误依然会对你造成伤害:如果你在需要时从磁盘读取数据(阻塞等待),那么一个100 MB / s的硬盘驱动器将花费大约185毫秒的时间用于32的ImageNet迷你批次 – 哎哟!但是,如果您在使用数据之前异步获取数据(例如Torch视觉加载器),那么您将在185毫秒内加载小批量,而ImageNet上大多数深度神经网络的计算时间约为200毫秒。因此,在当前仍处于计算状态时加载下一个小批量,您将不会面临任何性能损失。

但是,我 推荐使用SSD来提高舒适度和工作效率 :程序启动和响应速度更快,使用大文件进行预处理要快得多。 NVMe SSD,与普通SSD相比,将给您更加平滑的体验

因此,理想的设置是为数据集和SSD配备大容量性能稍差的机械硬盘驱动器,以兼顾生产力和成本。

电源装置(PSU)

通常,您需要一个足以容纳所有未来GPU的PSU。GPU随着时间的推移通常会变得更加节能; 因此,虽然需要更换其他组件,但 PSU的生命周期持续很长时间,因此良好的PSU是一项很好的投资。

您可以通过将CPU和GPU的功耗与其他组件的额外10%瓦特相加来计算所需的功率,并作为功率峰值的缓冲器。例如,如果您有4个GPU,每个250瓦TDP和一个150瓦TDP的CPU,那么您将需要一个最小为4×250 + 150 + 100 = 1250瓦的PSU。我通常会添加另外10%,以确保一切正常,在这种情况下将导致总共1375瓦特。在这种情况下,我想要获得一个1400瓦的PSU。

需要注意的一个重要部分是,即使PSU具有所需的功率,它也可能没有足够的PCIe 8针或6针连接器。确保PSU上有足够的连接器以支持所有GPU!

另一个重要的事情是购买具有高功率效率等级的PSU特别是如果你需要长时间运行许多GPU的时候。

以全功率(1000-1500瓦)运行4 GPU系统来训练卷积网两周将达到300-500千瓦时,在德国 – 相当高的电力成本为每千瓦时20美分 – 将达到60- 100欧元(66-111美元)。如果这个价格是100%的效率,那么用80%的电源进行这样的网络培训会使成本增加18-26欧元 – 哎哟!对于单个GPU而言,这个问题要少得多,但重点仍然存在 – 在高效电源上投入更多资金是有道理的。

全天候使用几个GPU将大大增加您的碳足迹,并将使运输(主要是飞机)和其他有助于您的足迹的因素蒙上阴影。如果你想要负责,请考虑 像NYU机器学习语言组(ML2)那样实现碳中性   – 它很容易做到,价格便宜,应该成为深度学习研究人员的标准。

CPU和GPU冷却

冷却很重要,它可能是一个重要的瓶颈,与糟糕的硬件选择相比,它会降低性能。对于CPU来说,使用标准散热器或一体化(AIO)水冷却解决方案应该没问题,但是对于GPU来说,需要特别注意。

风冷GPU

对于单个GPU,空气冷却是安全可靠的,或者如果您有多个GPU之间有空间(在3-4 个GPU槽位上安装了2个GPU)。但是,当您尝试冷却满插的3-4个GPU时,散热问题将极为突出。

现代GPU在运行算法时会将速度 – 以及功耗 – 提高到最大值,但一旦GPU达到温度障碍 – 通常为80°C – GPU将降低速度,以便温度阈值为没有违反。这可以在保持GPU过热的同时实现最佳性能。

然而,对于深度学习程序而言,典型的风扇速度预编程时间表设计得很糟糕,因此在开始深度学习程序后几秒内就达到了这个温度阈值。结果是性能下降(0-10%),这对于GPU相互加热的多个GPU(10-25%)而言可能很重要。

由于NVIDIA GPU首先是游戏GPU,因此它们针对Windows进行了优化。您可以在Windows中点击几下来更改粉丝计划,但在 Linux 中不是这样,并且因为大多数深度学习库都是针对Linux编写的,这是一个问题。

Linux下唯一的选择是用于设置Xorg服务器(Ubuntu)的配置,您可以在其中设置“coolbits”选项。这对于单个GPU非常有效,但是如果你有多个GPU,其中一些是无头的,即它们没有附加监视器,你必须模拟一个硬和黑客的监视器。我尝试了很长时间,并且使用实时启动CD来恢复我的图形设置令人沮丧 – 我无法让它在无头GPU上正常运行。

如果在空气冷却下运行3-4个GPU,最重要的考虑因素是注意风扇设计。“鼓风机”风扇设计将空气推出到机箱背面,以便将新鲜,凉爽的空气推入GPU。非鼓风机风扇在GPU的虚拟性中吸入空气并冷却GPU。但是,如果你有多个GPU彼此相邻,那么周围没有冷空气,带有非鼓风机风扇的GPU会越来越多地加热,直到它们自己降低温度到达更低的温度。不惜一切代价避免3-4个GPU设置中的非鼓风机风扇。

用于多个GPU的水冷GPU

另一种更昂贵且更加彻底的选择是使用水冷却。如果你有一个GPU,或者你的两个GPU之间有空间(3-4 GPU板中有2个GPU),我不推荐水冷。当4个甚至更多高性能GPU插满插槽的时候,散热的重任就需要交给水冷了。水冷却的另一个优点是它可以更安静地运行,如果你在其他人工作的区域运行多个GPU,这是一个很大的优势。水冷却每个GPU需要花费大约100美元和一些额外的前期成本(大约50美元)。水冷还需要一些额外的工作来组装你的计算机,但有很多详细的指南,它应该只需要几个小时的时间。维护不应该那么复杂或费力。

为了更好的冷却效果购买大机箱?

我为我的深度学习集群购买了大型塔式机箱,有着更多的GPU风扇位置,但我发现这其实是没有必要的,大机箱只有大约2-5°C的温度下降,却导致空间占用和成本上的飙升,不值得投资。其实最重要的是直接在GPU上的冷却解决方案 – 而不是为GPU冷却功能选择昂贵的机箱。

结论冷却

所以最后很简单:对于1 GPU,空气冷却是最好的。对于多个GPU,您应该获得鼓风式空气冷却并接受微小的性能损失(10-15%),或者您需要额外支付水冷却,后者更难以正确配置但不会导致性能损失。在某些情况下,空气和水冷却都是合理的选择。然而,我会建议空气冷却以简化操作 – 如果您运行多个GPU,请使用鼓风机式GPU。如果您想用水冷却,请尝试为GPU找到一体化(AIO)水冷却解决方案。

主板

您的主板应该有足够的PCIe端口来支持您要运行的GPU数量(通常限制为4个GPU,即使您有更多的PCIe插槽); 请记住,大多数GPU的宽度都是两个PCIe插槽,因此如果您打算使用多个GPU,请购买PCIe插槽之间有足够空间的主板。确保您的主板不仅具有PCIe插槽,而且实际上支持您要运行的GPU设置。如果您在newegg上搜索您选择的主板并查看规格页面上的PCIe部分,通常可以在此找到相关信息。

电脑机箱

选择外壳时,应确保它支持位于主板顶部的全长GPU。大多数情况下都支持全长GPU,但是如果你购买一个小盒子,你应该怀疑。检查其尺寸和规格; 你也可以尝试谷歌图像搜索该模型,看看你是否找到了带有GPU的图片。

如果您使用自定义水冷却,请确保您的外壳有足够的空间放置散热器。如果您为GPU使用水冷却尤其如此。每个GPU的散热器都需要一些空间 – 确保您的设置实际上适合GPU。

显示器

显示器貌似不应该出现在深度学习硬件的推荐列表里,但出乎很多人的意料,显示器对生产力的影响极为巨大。

我在3台27英寸显示器上花的钱可能是我做过的最好的硬件投资。 使用多台显示器时,生产力会大幅提升。 仅仅使用一台显示器的话,工作几乎陷于瘫痪。如果您无法高效操纵系统,那么快速深度学习系统有什么用呢?

深度学习硬件选购“避坑”完全指南

我的深度学习典型显示器布局: 左:论文,谷歌搜索,gmail,stackoverflow; 中:代码; 右:输出窗口,R,文件夹,系统监视器,GPU监视器,待办事项列表和其他小型应用程序。

结论/ TL; DR

GPU :RTX 2070或RTX 2080 Ti。来自eBay的GTX 1070,GTX 1080,GTX 1070 Ti和GTX 1080 Ti也不错!

CPU

:每GPU 1-2个核心,具体取决于您预处理数据的方式。> 2GHz; CPU应该支持您要运行的GPU数量。PCIe通道并不重要。

RAM

– 时钟频率无关紧要 – 购买最便宜的RAM。

– 购买至少与最大GPU的RAM相匹配的CPU RAM。

– 仅在需要时购买更多RAM。

– 如果您经常使用大型数据集,则可以使用更多RAM。

硬盘/ SSD

– 用于数据的硬盘驱动器(> = 3TB)

– 使用SSD来获得舒适性并预处理小型数据集。

PSU

– 加上GPU + CPU的瓦数。然后将所需瓦数的总和乘以110%。

– 如果您使用多个GPU,请获得高效率。

– 确保PSU有足够的PCIe连接器(6 + 8针)

散热

– CPU:获得标准CPU散热器或一体化(AIO)水冷解决方案

– GPU:

– 使用空气冷却

– 如果您购买多个GPU,则使用“鼓风式”风扇获取GPU 

– 在您的Xorg中设置coolbits标志配置控制风扇速度

主板

– 为您的(未来)GPU准备尽可能多的PCIe插槽(一个GPU需要两个插槽;每个系统最多4个GPU)

监视器

– 额外的监视器可能会比增加GPU更高效。


以上所述就是小编给大家介绍的《深度学习硬件选购“避坑”完全指南》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Iterative Methods for Sparse Linear Systems, Second Edition

Iterative Methods for Sparse Linear Systems, Second Edition

Yousef Saad / Society for Industrial and Applied Mathematics / 2003-04-30 / USD 102.00

Tremendous progress has been made in the scientific and engineering disciplines regarding the use of iterative methods for linear systems. The size and complexity of linear and nonlinear systems arisi......一起来看看 《Iterative Methods for Sparse Linear Systems, Second Edition》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具