大家好,今天小编来为大家解答以下的问题,关于最“全”的深度学习硬件指南!,这个很多人还不知道,现在让我们一起来看看吧!
图形处理器
本博文假设您将使用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 速度几乎与快速CPU RAM-GPU RAM 传输无关。这是因为(1) 如果您使用固定内存,您的小批量将在不涉及CPU 的情况下传输到GPU,并且(2) 如果您不使用固定内存,则快速RAM 与慢速RAM 的性能增益为大约0-3% – 把钱花在别处!
内存大小
RAM 大小不会影响深度学习性能。但是,它可能会阻止您轻松执行GPU 代码(无需交换到磁盘)。您应该有足够的内存来舒适地使用GPU。这意味着您至少应该拥有与最大GPU 相匹配的RAM 量。例如,如果您拥有配备24 GB RAM 的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进行ImageNet 32位图像mini-batch传输测试的实际结果与理论数据对比:
总前向和后向传递时间:216 毫秒(ms) 16 个PCIe 通道CPU-GPU 传输:约2 毫秒(理论值1.1 毫秒) 8 个PCIe 通道CPU-GPU 传输:约5 毫秒(2.3 ms) 4 个PCIe 通道CPU-GPU 传输:~9ms (4.5ms) 因此,从4 个PCIe 通道增加到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.加载预处理过的mini-batch 2.Mini-batch训练
对于第一种策略,好的多核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 应该仍然相同。
硬盘/固态硬盘
硬盘通常不是深度学习的瓶颈。但如果你做了一些愚蠢的事情,它仍然会伤害你:如果你在需要时从磁盘读取数据(阻塞和等待),100 MB/s 的硬盘驱动器将花费大约185 毫秒来处理32 个ImageNet 小批量!但是,如果您在使用数据之前异步获取数据(例如Torch 视觉加载器),那么您将在185 毫秒内加载小批量数据,而ImageNet 上大多数深度神经网络的计算时间约为200 毫秒。因此,在当前小批量仍在计算的同时加载下一个小批量,您不会面临任何性能损失。
不过,为了舒适度和生产力,我建议使用SSD:程序启动和响应速度更快,并且大文件的预处理速度要快得多。如果您购买NVMe SSD,与普通SSD 相比,您将获得更流畅的体验。
因此,理想的设置是为数据集和SSD配备容量性能稍低的机械硬盘,以平衡生产力和成本。
电源装置(PSU)
一般来说,您需要一个足够大的PSU 来容纳未来所有的GPU。随着时间的推移,GPU 通常会变得更加节能;因此,虽然需要更换其他组件,但PSU 应该可以使用很长时间,因此好的PSU 是一项不错的投资。
您可以通过将CPU 和GPU 的功耗与其他组件额外10% 的瓦数相加并作为功率峰值的缓冲来计算所需的功率。例如,如果您有4 个GPU,每个GPU 的TDP 为250 瓦,CPU 的TDP 为150 瓦,那么您至少需要4250 + 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 将显着增加您的碳足迹,并将掩盖交通(主要是飞机)和其他影响碳足迹的因素。如果你想负责任,可以考虑像纽约大学机器学习语言小组(ML2)那样实现碳中和——这很容易做到,成本低廉,应该成为深度学习研究人员的标准。
CPU 和GPU 冷却
冷却很重要,与不良的硬件选择相比,它可能是一个严重的瓶颈,会降低性能。对于CPU,您应该可以使用标准散热器或一体式(AIO) 水冷解决方案,但对于GPU,则需要特别小心。
风冷GPU
对于单个GPU,或者如果您有多个GPU,且它们之间有空间(如果是3-4 个GPU,则为2 个GPU),空气冷却是安全可靠的。然而,可能发生的最大错误之一是当您尝试冷却3-4 个GPU 时,在这种情况下您需要仔细考虑您的选择。
现代GPU 在运行算法时会最大限度地提高速度和功耗,但一旦GPU 达到温度屏障(通常为80C),GPU 将降低速度,以免违反温度阈值。这可确保最佳性能,而不会导致GPU 过热。
然而,用于深度学习程序的典型预编程风扇速度调度设计得非常糟糕,因此在启动深度学习程序的几秒钟内就达到了该温度阈值。结果是性能受到影响(0-10%),这对于多个GPU (10-25%) 来说可能会很严重,因为GPU 会互相加热。
由于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-5C 会导致成本飙升,不值得投资。最重要的部分是直接在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,但如果您购买的是小盒子,则应该持怀疑态度。检查其尺寸和规格;您还可以尝试使用Google 图片搜索该型号,看看是否找到带有GPU 的图片。
如果您使用定制水冷,请确保您的机箱有足够的空间容纳散热器。如果您的GPU 使用水冷却,则尤其如此。每个GPU 都需要一些空间来安装散热器- 确保您的设置确实适合GPU。
监视器
看起来显示器不应该出现在深度学习硬件的推荐列表中,但令很多人惊讶的是,显示器对生产力有着巨大的影响。
我花在3 台27 英寸显示器上的钱可能是我花过的最好的钱。使用多台显示器时,生产力会显着提高。如果我必须使用显示器,工作几乎是不可能的。如果你不能在一种有效的方法,不要对此事做出改变那么快速深度学习系统有什么用呢?
我的深度学习典型显示器布局:左:paper、google 搜索、gmail、stackoverflow;中间:代码;右:输出窗口、R、文件夹、系统监视器、GPU 监视器、待办事项列表和其他小应用程序。
关于组装PC 的几句话
许多人害怕构建,因为硬件组件很昂贵,而且你不想做错事。但这非常简单,因为不属于同一组的组件不能组合在一起。主板手册通常非常具体地介绍如何组装所有部件,并且有大量指南和分步视频可以指导您完成整个过程(如果您没有经验)。
组装计算机的好处在于,当您这样做时,您知道有关组装计算机的所有知识,因为所有计算机都是以相同的方式组装的。
结论/TL;DR
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/159354.html
用户评论
夏至离别
终于找到一个关于深度学习硬件的彻底指南了!之前一直觉得这个领域比较复杂,现在有了这份指南,感觉是不是更有目标了!
有14位网友表示赞同!
你很爱吃凉皮
看完这篇博文后,我更清晰地理解了不同的深度学习硬件平台之间有哪些区别。作者分析得很透彻,图示也很直观易懂,感谢分享!
有10位网友表示赞同!
遗憾最汹涌
太酷了!原来选择深度学习硬件这么复杂啊,这篇文章帮我打开了新视界。之前一直觉得GPU就够了,没想到还有这么多细节我之前都没有了解到。
有6位网友表示赞同!
苏莫晨
作为一名刚入门深度学习的小白,这篇指南对我来说真的很宝贵,它介绍了很多我以前从未听说过的硬件技术,比如TPU和FPGA,让我对这个领域有了更全面认识。
有20位网友表示赞同!
北朽暖栀
这篇文章写的太好了!非常详细地介绍了各种深度学习硬件平台的优缺点,以及如何选择适合自己的硬件。我已经开始着手规划我的深度学习环境了,感谢作者!
有10位网友表示赞同!
该用户已上天
这篇博文确实很全,涵盖了深度学习相关的硬件从GPU到TPU等等,但对一些专业术语解释比较简略,对于新手小白可能难以 fullygrasp.
有18位网友表示赞同!
瑾澜
我觉得文章可以少一些技术细节,更多地介绍一些实战案例吧?让读者更直观地看明白这些硬件在实际应用中的效果。
有11位网友表示赞同!
一笑傾城゛
我越来越喜欢这个时代的深度学习发展速度,这篇博文让我意识到硬件进步同样不可忽视!
有6位网友表示赞同!
命运不堪浮华
我感觉这篇文章的内容比较偏向理论层面的介绍,缺少一些实操技巧和经验分享,希望作者能够结合自己的实践经验,写几篇更具体的指导性文章。
有20位网友表示赞同!
巷口酒肆
深度学习的硬件发展确实令人兴奋!这篇博文让我对未来的计算趋势有了更加清晰的认识。
有8位网友表示赞同!
铁树不曾开花
作为一名从事深度学习开发的研究生阅读这篇文章非常有帮助,它为我提供了一个全面了解不同硬件平台的框架, 让我在选购硬件的时候能够做出更明智的决策。
有19位网友表示赞同!
心亡则人忘
这篇指南太棒了! 我已经开始研究如何使用这些强大的硬件来提升我的最新深度学习项目的效果!
有15位网友表示赞同!
把孤独喂饱
看完这篇文章后,我更加确定要学习深度学习了!有了这么丰富的硬件资源支持,未来的发展前景非常广阔!
有19位网友表示赞同!
三年约
很佩服作者能够整合如此多的信息,制作出这样全面的深度学习硬件指南。 现在很多开发者都是新手小白, 这篇文章对他们来说真是太实用啦!
有20位网友表示赞同!
烟花巷陌
这篇文章给我一个强烈的印象就是选对硬件真的至关重要! 在未来深层学习发展的道路上,硬件技术的进步将是推动这一领域不断前进的重要因素之一。
有11位网友表示赞同!
醉婉笙歌
我觉得文章可以加入一些关于未来深度学习硬件趋势的展望和分析,更能引领读者思考未来发展方向。
有17位网友表示赞同!
摩天轮的依恋
虽然博文内容很丰富,但对于一些技术参数的介绍比较生硬,建议作者能够用更加通俗易懂的方式来讲解。
有6位网友表示赞同!
放血
这篇博文彻底颠覆了我的对深度学习硬件的想法!原来这么复杂啊!
有6位网友表示赞同!
墨染天下
作为一名深度学习爱好者,这篇指南是我必读的经典教材! 感谢作者的分享,让我能更全面的了解这个领域!
有17位网友表示赞同!