内容简介:深度学习属于计算密集型任务,搭建硬件环境至关重要,例如选择多内核的快速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%)甚至频繁死机。
内存
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需求。
第一个策略是在训练时进行预处理:
环:
- 加载小批量
- 预处理小批量
- 小批量训练
第二种策略是在任何培训之前进行预处理:
- 预处理数据
- 环:
- 加载预处理的小批量
- 小批量训练
对于第一种策略,具有多个内核的良好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内核速率的降频实验来找出答案。
请注意,这些实验是在过时的硬件上进行的,但是,对于现代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英寸显示器上花的钱可能是我做过的最好的硬件投资。 使用多台显示器时,生产力会大幅提升。 仅仅使用一台显示器的话,工作几乎陷于瘫痪。如果您无法高效操纵系统,那么快速深度学习系统有什么用呢?
结论/ 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更高效。
以上所述就是小编给大家介绍的《深度学习硬件选购“避坑”完全指南》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 沈向洋:从深度学习到深度理解
- 深度重建:基于深度学习的图像重建
- 深度网络揭秘之深度网络背后的数学
- 深度解析Python深度学习框架的对比
- 【深度好文】深度分析如何获取方法参数名
- 直观理解深度学习基本概念(小白入门深度学习)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。