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

深度学习的完备硬件指南

[复制链接]
查看: 112|回复: 5
avatar

259

主题

259

帖子

795

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
795
online_admin 发表于 2021-10-13 12:44:01 | 显示全部楼层 |阅读模式
一入硬件深似海,怎样把钱都花在刀刃上?

原标题:A Full Hardware Guide to Deep Learning



者:Tim Dettmers | 编辑:Pita

译者:linlh、呀啦呼(Tufts University)、Ryan222(重庆邮电大学)

封面图泉源:https://openwrt.org/zh/toh/tp-link/tl-wr841nd

深度学习黑白常斲丧计算资源的,毫无疑问这就必要多核高速的CPU。但买一个更快的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 1080 Ti 黑白常好的选择,选择他们时,可以使用32位的模子,但不能是16位的模子。

在选择GPU时,要非常注意你的内存需求。在斲丧同样内存的环境下,相比GTX,能跑16位模子的RTX可以或许训练2倍大小的模子。正是由于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的视频很详细地解释了内存在Linux上的技术法门:内存速率真的紧张吗?

此外,紧张的是要知道内存速率与快速CPU RAM-> GPU RAM传输几乎无关。这是由于(1)假如你使用固定内存(pinned memory),那么你的mini-batch会直接传输到GPU中而不必要CPU的干预,(2)假如你不使用固定内存的话,快的和慢的内存获得的性能差别只有0-3%——把你的钱花到别处去!

内存大小

内存大小不会影响到深度学习的性能。但是,它大概会拦阻你轻松实验GPU代码(无需交换到磁盘)。你应该有充足的内存来愉快地共同GPU工作。这意味你至少应该有匹配GPU的内存大小。比如说,假如你有一张24GB显存的Titan RTX,那你至少应该有24GB的内存。但是,假如你有多块GPU的话,你不必要更多的内存。

“在内存上匹配最大的GPU显存”策略在于,假如你在处理大数据集时,你可可以或许还是会内存不足。最好的方式是和你的GPU匹配,假如你以为内存不够,再买更大的内存。

别的一个不同的策略受生理学的影响:生理学告诉我们,专注是一种随着时间推移而耗尽的资源。内存是为数不多的硬件之一,可以让您浪费专注的精神,从而聚焦在解决更困难的编程标题。假如你有更多的内存,你可以将注意力集中在更紧迫的变乱上,而不是困扰在内存瓶颈上浪费了大量时间。有了大量内存你就可以避开这些瓶颈,为更为紧急的标题节约时间,提升服从。特殊在Kaggle比赛中,我发现有着额外的内存对于特性工程黑白常有帮助的。假如资金充足,并且好做大量的预处理工作,那么增长额外的内存是一个非常好的选择。按照这个策略,现在就要思量购买更多、实惠的内存,而不是后面再思量。

CPU

人们常犯的最大错误是花太多的时间纠结CPU的PCIe通道数。实在,你并不必要太在意CPU的PCIe通道数。取而代之的是,应该注意你的CPU和主板的组合是否可以或许支持起想要运行的GPU数目。第二个最常见错误是购买功能过于强盛的CPU。

CPU和PCI-Express(新一代总线接口)

很多人痴迷于PCIe的通道数。然而,变乱的本相是PCIe(的通道数)几乎不会影响深度学习的表现。假如你只有一个单一的GPU,PCIe通道唯一的作用是可以或许快速地将数据从你的CPU 内存中转换到GPU 内存中。但是,一个具有32张图片的ImageNet数据集批次(数据集的shape为32*225*225*3)和32位模子,在16通道PCIe上训练必要1.1毫秒,在8通道上必要2.3毫秒,在4通道上必要4.5毫秒。这些仅仅是理论上的数值,而在现实中你常常会发现PCIe会比理论速率慢上两倍——但是它仍然像闪电一样快。PCIe 通道的延时通常在纳秒范围内,因此其延时标题可以被忽视。

综上思量后,我们提出了使用152层残差网络训练一个具有32张图片的小批量ImageNet数据集所需的时间,如下所示:

    向前传播和向后传播用时:216毫秒(ms)

    使用16通道PCIe将数据从CPU内存转换到GPU内存用时:大概2ms(理论上1.1ms)

    使用8通道PCIe将数据从CPU内存转换到GPU内存用时:大概5ms(理论上2.3ms)

    使用4通道PCIe将数据从CPU内存转换到GPU内存用时:大概9ms(理论上4.5ms)

因此将4通道的PCIe换成16通道的PCIe将给你的训练表现带来大概3.2%的提升。然而,假如你的pyTorch数据下载器含有CUDA页锁定内存,那么(改变PCIe的通道)实在给你的训练表现带来的提升是0%。以是假如你仅使用1个GPU,那么不要把你的钱浪费在PCIe上!

当你在选择CPU的PCIe通道和主板PCIe通道时,(肯定要)明确所选的CPU和主板组合可以或许支持渴望的GPU数目。假如你买了一个支持2个GPU的主板,并且你终极确实必要用到2个GPU,那么就必要确认你购买的CPU可以或许支持2个GPU,而没有必要纠结PCIe的通道数。

PCIe通道数和多GPU并行

假如你在多GPU上并行的训练数据时,PCIe的通道数是紧张的吗?针对这个标题我在2016年的ICLR会议中发表了一篇论文,而且我可以告诉你假如你有96个GPU那么PCIe的通道数确实非常紧张。然而假如你只有4个或者更少的GPU,那么PCIe通道数的影响不大。假如在两到三个GPU上训练,我完全不会关心PCIe的通道数。当我使用四个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的CPU比3.5GHz的好,是吗?这对于比较具有类似结构的处理器来说通常是准确的,比方“Ivy Bridge微架构”,但是对于不同架构的处理器来说这并不好比较。此外,CPU主频并不总是衡量性能的最佳方法。

在深度学习中CPU仅仅做一些微不足道的计算:增长一些参数,评估布尔表达式,在GPU或程序内进行函数调用——这些都取决于CPU核心的时钟频率。

固然这些来由看似合理,但是当我运行深度学习程序时却发现CPU使用率为100%,那么这是为什么呢?为了找寻答案,我做了一些CPU降频实验。

在MNIST和ImageNet数据集上的GPU降频实验:不同CPU时钟频率的性能以训练200个epoch的MNIST数据集和50个epoch的ImageNet数据集所花费的时间来衡量, 此中最大的时钟频率作为每个CPU的基线。作为比较:从GTX 680升级到GTX Titan的性能提升约为 15%; 从GTX Titan到GTX 980又提升20%的性能; GPU超频可为任何GPU带来5%的性能提升。

值得注意的是,这些实验是在落伍过时的硬件装备上进行的,然而,对于当代的CPU/GPU它的结果仍然不变。

硬盘/SSD

一样寻常来说硬盘不是深度学习的瓶颈。但也别整这种蠢事儿:当你从一个100MB/s的硬盘读取mini-batch为32的ImageNet时间,必要185毫秒。你可以在数据使用前异步加载数据(比如说torch vision loader),由于加载数据必要185毫秒而ImageNet上运行的大多数DNN必要200毫秒来计算。我们完全可以提前加载下一个mini-batch来避免性能丧失。

从生产服从来说,我保举SSD,由于程序启动反应更快,大文件的预处理速率也更快。别的,NVMe SSD会带给你更好的使用体验。

电源(PSU)

你得确保你的电源可以或许满足全部预留GPU的功率需求。一样寻常来说,GPU能耗会越来越低,以是不用更换电源,买个好的电源是个值当的交易。

在计算必要的功率时,你最好加上全部CPU和GPU功耗的10%作为功率峰值的缓冲。举个例子,你有四个250瓦的GPU和一个150瓦的CPU,那我们必要一个最少4×250 + 150 + 100 = 1250瓦的电源。一样寻常我会加上至少10%来确保齐备正常,那么在这种环境下一共必要1375瓦。末了我会买一个1400瓦的电源。

你得注意有些电源即使达到了要求的功率,但是没有充足的8针或者6针PCIe插槽接口。你得多多注意这点。

别的请尽量购买高功率功效的电源——特殊是你运行多个GPU且长时间运行。

满负载运行一个4GPU体系(1000-1500瓦)来训练卷积神经网络两周会斲丧300-500千瓦时。德国每千瓦时的价格是20分,以是会用60-100欧(66-111美金)。刚刚我们假设的电源服从是100%,假如使用的是服从是80%的电源,还要额外斲丧18-26欧。使用单颗GPU的话,会少很多。但是不影响重点:值得在高效电源上多花点儿钱。

全天候的使用一些GPU会显着的增长你的碳排放足迹,以致这比你的交通(譬如飞机)和其他因素还要多。假如你想要负责的话,可以用纽约大学机器学习语言组(ML2)- 很容易办到,也很便宜,可以作为深度学习研究院的标准。

CPU 和 GPU 的冷却体系

冷却非常紧张,是整个体系中一个紧张的瓶颈。相比较于糟糕的硬件选择,它更容易降低性能。对于CPU,你可以使用标准散热器或者一体化(AIO)水冷解决方案。但是对于GPU,你必要特殊注意。

风冷 GPUs

假如你有多颗GPU并且他们中心有充足的空间(在3-4颗GPU的位置放置2颗GPU),风冷是安全可靠的。当你想去冷却3-4颗GPU的时间,大概会犯一个巨大的错误。这时间你必要认证思量在这个案例中的选择。

运行一个算法的时间,当代GPU会进步他们的速率以及功耗,直至最大值。一旦GPU达到温度临界值(通常为80°C),GPU就会降低运算速率防止达到温度阙值。如允许以在保持GPU过热的同时实现最佳性能。

对于深度学习程序而言,典型的风扇速率预编程时间表计划得很糟糕。启动一个深度学习程序后几秒钟就会达到温度阙值,结果就是性能会降落0-10%。多个GPU之间相互加热,性能会降落的更显着(10%-25%)。

由于 NVIDIA GPU 在大部分环境下是作为游戏 GPU,它们对windows进行了优化。在Windows中点一点鼠标就能改变风扇计划的方式在Linux中行不通。但是大多数深度学习库都是针对Linux编写。

假如你有一台Xorg服务器(Ubuntu),唯一的选项是用“coolbits”来设置温度。对于单个GPU来说,这种方法非常见效。当有多个GPU的时间,此中一些没有监视器,模拟出监视器来监测他们是很艰难晦涩的工作。我曾经花过很长的时间尝试使用及时启动CD来恢复我的图形设置,但是从没有在无监视器GPU上成功运行过。

在风冷体系下运行3-4颗GPU必要尤其器重风扇计划。“鼓风机式”风扇计划让凉风进入GPU,然后从机箱背部吹出热风。“非鼓风机式”风扇吸入GPU附近的氛围来冷却它。但是假如是多颗GPU,那么它们的附近就没有冷氛围,使用“非鼓风机式”风扇的GPU会越来越热,终极通过降低性能来降温。我们应该不惜齐备代价来必变在3-4颗GPU的环境中使用“非鼓风机式”风扇。

多GPU使用的水冷体系

另一种更棒更昂贵的方式是使用水冷体系。假如你只有一颗GPU或者两颗GPU之间有充足的空间(比如在3-4颗GPU的主板上有两颗GPU),我不建议使用水冷体系。在4GPU设置中,水冷保证即使最强劲的GPU也能保持低温,而这在风冷中是不大概实现的。水冷的另一个长处是运行很安静,这对于在公共地区运行多GPU来说是一个巨大的上风。每颗GPU必要100美金的成本安装水冷,别的必要一些额外的前期成本(大约50美金)。组装有水冷的计算机也会必要一些额外工作,但是不用担心,会有详细的指南来引导你安装,仅仅必要你多付出几个小时。维护工作也没有那么的复杂费力。

一个冷却的案例

大型的塔式服务器在GPU位置有额外的风扇,以是我为深度学习集群购买了他们。然后我发现太不划算了,只降落了2-5°C却要付出大量的投资。最紧张的部分是直接在GPU上安装冷却体系,完全没必要为冷却体系买贵不啦叽的壳子。

冷却的总结

对于一个GPU来说,风冷充足了。假如你有多个GPU, 你可以在接受性能丧失(10% - 15%)的环境下使用“鼓风式”风冷体系,或者花更多的钱购置水冷体系,固然难以设置但是它可以保证没有性能丧失。对于不同的场景,我们可以因地制宜选择风冷或者水冷。我建议使用风冷就好--使用“鼓风式”GPU。假如你想使用水冷, 请使用一体化水冷(AIO)方案。

主板

你的主板上应该有充足的PCIe端口来支持你必要运行的GPU数目(即使你有更多的PCIe 插槽,但是一样寻常限定最多4颗GPU);别的,铭刻大部分GPU都会占据两个PCIe卡槽的宽度,以是假如想使用多颗GPU,请确保购买的主板有充足的预留空间。主板不仅必要有充足的PCIe插槽位置,而且必要支持你购买的GPU。在新蛋上你可以查看到对应主板的信息和PCIe环境。

电脑机箱

贫苦买个能放下全尺寸长度GPU的机箱。大部分的机箱都没标题,不过还是查看尺寸规格来确保没有买了个小号的;或者你可以尝试在google image内里搜索这款儿,然后看有没有有GPU在内里的图片。

别的假如使用定制化水冷体系,得确保你的机箱有充足空间来放置散热器。由于每个GPU的散热器都必要单独的空间。

表现器

刚开始吧我以为写一些关于表现器的心得很蠢,但是它们各不类似,以是我还是整点话吧。

花在我的3台27寸表现器上的钱是我最值当的投资了。当使用多表现器的时间,生产力提升很多。只有一台表现器的话,我会感觉完全干不了活。在这事儿上别妥协,假如干活不开森,深度学习体系再快有啥意思咧?

我一样寻常这么搁我的表现器:左边看论文,搜搜google,收收邮件,瞅瞅stackoverflow;中心就用来写代码;右边放一些杂七八啦的玩意儿,比如输出界面辣,文件夹辣,体系、GPU监视器辣,待办事项辣。

一些后话

由于硬件很贵,很多人怕犯错,一提到DIY计算机就怵得慌。实在特简单这事儿,由于不匹配的零件也组装不到一起对不对?主板手册啊,指南啊以及网络视频啊也会教小白的你怎样组装这些玩意儿。

本身组装计算机的好处是,你整了一次就啥都全明确了,这辈子也忘不掉。计算机么,都大差不差,别怂!

结论


GPU:来自eBay的RTX 2070 、RTX 2080 Ti、 GTX 1070 、GTX 1080, 和 GTX 1080 Ti 黑白常好的选择。

CPU:每个GPU分配1-2个两个核心,这取决于你是怎么处理数据的。频率 > 2GHz。CPU应该要可以或许支持你要运行的GPU数目。PCIE通道并不紧张。

RAM:

- 时钟频率不紧张 - 买最便宜的内存

- 最少要购买和你最大的GPU显存大小的内存

- 只有在必要的时间购买更多的内存

- 假如你常常处理大数据集的话更多的内存黑白常有帮助的

硬盘/SSD:

- 存放数据的硬盘(>=3GB)

- 使用SSD可以快速处理小数据集

电源

- 把GPU和CPU必要的功率瓦数加起来,然后乘以总数的110%得到必要的功率瓦数

- 假如使用多个GPU,要选择高服从的电源。

- 确保电源有充足的PCIE接口(6+8引脚)

散热

- CPU:使用标准的CPU散热或者是一体式的水冷解决方案

- GPU:风扇散热

- 假如购买多个GPU的话使用“鼓风式”的风扇

- 在Xorg设置中设置coolbits标志以控制风扇速率

主板

- 为(将来的)GPU预留尽大概多的PCIe插槽(一个GPU必要两个插槽;每个体系最多4个GPU)

表现器

- 一个额外的表现器比一个额外的GPU更能进步你的服从

英语原文:https://timdettmers.com/2018/12/16/deep-learning-hardware-guide/

想要继续查看该篇文章干系链接和参考文献?

https://ai.yanxishe.com/page/TextTranslation/1346
回复

使用道具 举报

avatar

0

主题

9

帖子

28

积分

新手上路

Rank: 1

积分
28
在线会员 发表于 2021-10-13 12:44:11 | 显示全部楼层
CPU/GPU还是不够爽,要性能还是得上TPU等专用ASIC
回复

使用道具 举报

avatar

0

主题

7

帖子

24

积分

新手上路

Rank: 1

积分
24
在线会员 发表于 2021-10-13 12:44:55 | 显示全部楼层
用着v100 感觉好幸福
回复

使用道具 举报

avatar

0

主题

11

帖子

32

积分

新手上路

Rank: 1

积分
32
在线会员 发表于 2021-10-13 12:45:37 | 显示全部楼层
转发了
回复

使用道具 举报

avatar

0

主题

12

帖子

34

积分

新手上路

Rank: 1

积分
34
在线会员 发表于 2021-10-13 12:46:28 | 显示全部楼层
转发了
回复

使用道具 举报

avatar

0

主题

10

帖子

30

积分

新手上路

Rank: 1

积分
30
在线会员 发表于 2021-10-13 12:47:17 | 显示全部楼层
转发了
回复

使用道具 举报

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

本版积分规则

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

关注我们

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