请选择 进入手机版 | 继续访问电脑版

深度学习完备硬件指南

[复制链接]
查看: 126|回复: 0
avatar

215

主题

215

帖子

663

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
663
online_admin 发表于 2021-9-24 13:16:57 | 显示全部楼层 |阅读模式

点击上方关注,All in AI中国

深度学习是计算麋集型的,搭建硬件环境很紧张。因此您必要具有多个内核的快速CPU,对吧?在构建深度学习体系时,最糟糕的变乱之一就是在没有必要的硬件上浪费钱。在这里,我将渐渐引导您使用便宜高性能体系所需的硬件。

多年来,我统共建立了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 GBKaggle: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速率与快速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)和32位必要1.1毫秒,16个通道,2.3毫秒,8个通道,4.5毫秒,4个通道。这些是理论数字,现实上你常常会看到PCIe的速率是它的两倍 - 但这仍然是闪电般快速的! PCIe通道通常具有纳秒范围内的耽误,因此可以忽略耽误。

下面是用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.小批量训练

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

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

固然这种推理好像很明智,但是当我运行深度学习程序时,CPU有100%的使用率,那么这里的标题是什么?我做了一些CPU核心速率的低频实验来找出答案。


MNIST和ImageNet上的CPU降频:可以看出,不同主频CPU在内核大幅降频后对整个体系的性能影响不大。作为比较:从GTX 580升级到GTX Titan的性能约为+ 20%;从GTX Titan到GTX 980别的+ 30%的性能; 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),我不保举使用水冷。然而,水冷却确保即使最强劲的GPU在4 GPU设置下也能保持凉快,这在用氛围冷却时是不大概的。水冷却的另一个长处是它可以运行很安静,假如你在其他人工作的地区运行多个GPU,这是一个很大的上风。水冷却每个GPU必要花费大约100美元和一些额外的前期成本(大约50美元)。水冷还必要一些额外的工作来组装你的计算机,但有很多详细的指南,它应该只必要几个小时的时间。维护不应该那么复杂或费力。

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

我为我的深度学习集群购买了大型塔式机箱,但我发现这在很大程度上是无关紧要的:大约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监视器,待办事项列表和其他小型应用程序。

关于构建PC的一些话

很多人害怕构建,由于硬件组件很昂贵,你不想做错事。但它非常简单,由于不属于一起的组件不能组合在一起。主板手册通常非常详细形貌怎样组装全部内容,并且有大量的指南和分步视频,假如您没有履历,它们将引导您完成整个过程。

构建计算机的好处在于,您知道在实验计算机时有关构建计算机的全部信息,由于全部计算机都以类似的方式构建。

结论/ 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更高效。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

logo
  • 反馈建议:service_media@36kr.com
  • 工作时间:周一到周五 10:00-19:00

关注我们

  • erweima
Copyright   ©2015-2016  SOSSEO博客  Powered by©Discuz!  技术支持:源码哥    |网站地图源码哥免费dz商业插件