找回密码
 立即注册

hi~你有一份超详细的深度学习装机指南等待认领!(上篇)

6
回复
542
查看
[ 复制链接 ]

7

主题

13

帖子

99

积分

注册会员

Rank: 2

积分
99
2018-12-20 09:29:07 显示全部楼层 阅读模式
今天整理了一份超详细的装机指南,结合了最新的硬件产品,告诉你从CPUGPU内存条到外设这些都应该怎么选。全文稍微有点长,一定会看完的对不对?

GPU
先来说GPU,在深度学习中,它甚至比CPU更重要,Ci妹就先来讲怎么挑选GPU。选择GPU的标准有三条:显存、散热、性价比。

显存(GPU RAM)是不可忽视的部分。RTX比GTX系列显卡在显存方面更具优势,在显存相同的情况下,RTX能够训练两倍大的模型。一般来说,对显存的要求是这样:

如果想在研究中追求最高成绩:显存>=11 GB;
在研究中搜寻有趣新架构:显存>=8 GB;
其他研究:8GB;
Kaggle竞赛:4~8GB;
创业公司:8GB(取决于具体应用的模型大小)
公司:打造原型8GB,训练不小于11GB

这里需要提醒下,如果你买了多个RTX显卡,不要忽略散热问题。因为在两个显卡堆叠在相邻PCI-e插槽,很容易导致GPU过热降频,使得性能下降,这个后面会讲到。

性价比方面,选择16bit的RTX 2070或者RTX 2080 Ti性价比更高。或者在京东上购买二手的32bit GTX 1070、GTX 1080或者1080 Ti也是不错的选择。

内存
考考大家,选择内存时,时钟频率和容量这两个参数哪个更重要?答案是:...内存

其实时钟频率是厂商炒作内存的主要手段。他们宣称时钟频率越快越好,但时钟频率和数据转移到显存的速度无关,提高时钟频率最多只能带来3%的性能提升。

内存的大小不会影响性能,但会影响执行GPU代码的效率。因为内存容量大一点,GPU就可以不经过磁盘,直接和GPU进行数据交换。所以,大家应该配备和GPU显存匹配的内存容量。

比如:一个24GB显存的Titan RTX,应该至少有24GB的内存。但假设有更多的GPU,这时则不一定需要更多内存。

CPU
说到CPU,过分关注CPU的性能和PCIe通道数量,是不少人常犯的错误。大家更应该关注的是CPU和主板组合下支持同时运行的GPU数量。

CPU和PCIe
不少人对PCIe通道有很强的执念,但它对深度学习性能几乎没有影响。如果只有一个GPU,那PCIe通道的作用就是把数据快速地从内存运输到显存。

比如:ImageNet里的32张图像(32x225x225x3)在16x上传输需要1.1毫秒,在8x上需要2.3毫秒,在4x上需要4.5毫秒。这是理论得出的数字,而实际的速度只有一半。PCIe通道通常具有纳秒级别的延迟,可以忽略。

我们用32张ImageNet图像的mini-batch进行了测试,训练ResNet-152模型所需要的传输时间:前向和后向传输:216毫秒

16X PCIe CPU-> GPU传输:大约2毫秒(理论上为1.1毫秒)
8X  PCIe CPU-> GPU传输:大约5毫秒(2.3毫秒)
4X  PCIe CPU-> GPU传输:大约9毫秒(4.5毫秒)
可以得出结论,如果使用单个GPU,请不要在PCIe通道上白浪费钱。在选择CPU和主板PCIe通道时,要确保我们选择的组合能支持我们想要的GPU数量。比如Ci妹买了支持2个GPU的主板,并且想用上2个GPU,那我就要买支持2个GPU的CPU,但不一定要看PCIe通道数量。

PCIe通道和多GPU并行计算
如果在如果在多个GPU上训练网络,那PCIe通道是否重要呢?
这个问题是这样的,如果GPU的数量小于4,那就不需要在意PCIe通道。实际中,很少有人会同时运行超过4个GPU,所以Ci妹友情提示:大家不要在PCIe通道上花冤枉钱。这不重要!

CPU核心数
选择CPU,先要了解CPU和深度学习的关系。那CPU在深度学习中究竟起什么作用?
在CPU上运行深度网络时,CPU几乎不会进行任何计算。它的主要作用有:1、启动GPU运算。2、执行CPU函数。

目前CPU最有用的应用就是数据预处理,有两种不同的通用数据处理策略,具有不同的CPU需求。第一种是在训练时进行预处理,第二种是在训练之前进行预处理。

针对第一种,高性能的多核CPU能明显提高效率。建议每个GPU至少4个线程,即为每个GPU分配两个CPU核心。 Ci妹认为,每为GPU增加一个核心 ,应该能获得大概0-5%的额外性能提升。对于第二种,不需要非常好的CPU,建议每个GPU至少有2个线程,即为每个GPU分配一个CPU核心。采用这种策略,再多内核也不会让性能显著提升。

CPU时钟频率
提个问题:是否4GHz的CPU性能会比3.5GHz的强?在相同架构处理器的比较中,一般认为是对的。但在不同架构处理器之间,就不能拿频率进行简单的比较了。CPU时钟频率并不总是衡量性能的最佳标准。

在深度学习情况下,CPU仅参加很少的计算,比如增加一些变量,评估一些布尔表达式,或在GPU或程序内进行一些函数调用,这些取决于CPU核心时钟频率。
虽然以上说法看着很对,但在运行深度学习程序时,CPU仍有100%的使用率,那到底是哪里出了问题?我们做了些CPU的降频实验来找到答案。

CPU降频对性能的影响:

注意下,以上实验是在“远古”CPU(2012年推出的第三代酷睿处理器)上进行的,但对于最近推出的CPU仍然是符合的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

7

主题

13

帖子

99

积分

注册会员

Rank: 2

积分
99
楼主 2018-12-20 09:30:37 显示全部楼层
回复 支持 1 反对 0

使用道具 举报

58

主题

67

帖子

676

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
676
2018-12-20 16:26:17 显示全部楼层
回复

使用道具 举报

8

主题

11

帖子

179

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
179
2018-12-20 17:43:44 显示全部楼层
回复

使用道具 举报

7

主题

13

帖子

99

积分

注册会员

Rank: 2

积分
99
楼主 2018-12-20 17:45:25 显示全部楼层
回复 支持 反对

使用道具 举报

7

主题

13

帖子

99

积分

注册会员

Rank: 2

积分
99
楼主 2018-12-20 18:05:03 显示全部楼层
本帖最后由 qiuhuili 于 2018-12-20 18:07 编辑

接着我们昨天说的~
硬盘/固态硬盘SSD
一般硬盘无法限制我们的深度学习任务的运行,但我们也不能因此小看了硬盘的作用。假设我们从硬盘中读取数据的速度是100MB/s,那加载一个32张ImageNet图片构成的mini-batch,要用185毫秒。相反,如果在使用数据前异步获取数据,将在185毫秒内加载这些mini-batch的数据,而ImageNet上大多数神经网络的计算时间约为200毫秒。即在计算状态中加载下一个mini-batch,性能将不会有任何损失。我推荐的是SSD,因为选择SSD效率和舒适度都可以照顾到。和普通硬盘相比,SSD的启动和响应速度更快,大文件的预处理更是要快很多。顶配的就是NVMe SSD,比一般SSD更流畅。

电源PSU
随着GPU的更新换代,一个优质的PSU能够经得起时间的考验。我们对电源的基础要求是能满足各种GPU所需的能量。那PSU应该怎么选?我在这分享一个计算方法:将电脑CPU和GPU的功率相加,再加上额外的10%的功率作为其他组件的能耗,就能得到功率的最大值。
举个栗子:你有4个GPU,每个功率250瓦,加上一个功率150瓦的CPU,那电源要提供4×250+150+100=1250瓦的电量。在此基础上再加10%,那就是1375瓦。所以可以得出,电源的性能要达到1400瓦。
还有一点需要我们注意,即便一个PSU达到了所需的瓦数,也可能缺少足够的PCIe 8-pin或6-pin的接头,所以我们在采购时要确保电源上有充足的接头能接GPU。此外,记得买一个能效等级高的电源,尤其是你需要连很多GPU且需要长期运行工作时。再举个栗子:假设以以满功率(1000-1500瓦)运行4 GPU系统、花两周时间训练一个卷积神经网络,需要耗用300-500度电,消耗电费折合人民币约455-766元。如果将电源效率降到80%,电费则增加140-203元左右。需要的GPU数量越多,数值差距越明显。嘿嘿,PSU的挑选是比我们之前想象的情况要复杂吧?

CPU和GPU的冷却
对容易发热的CPU和GPU来讲,如果其散热性不佳,会导致其性能降低。对CPU来说,标配的散热器或是AIO水冷散热器都是不错的选择。但GPU应该用哪种散热方式,是个复杂的问题。

风冷散热
风冷对单个的GPU是可以的,但如果你的GPU多达3-4个,光靠空气冷却那可不行。目前GPU会在运行算法时将速度提到最大,所以功耗也会达到最大值。而一旦温度超过80℃,则会导致速度降低,无法实现最佳性能。这种现象对于深度学习任务来说更是常见,一般的散热风扇是远远达不到降温效果的,通常运行几秒钟就会达到温度阈值。如果是用多个GPU,性能会降低10%-25%。
那该怎么办?眼下很多英伟达的GPU都是针对游戏设计开发的,所以也针对Windows系统进行了专门的优化,也可以轻松设置风扇方案。但在Linux系统中这招就不能用了,麻烦的是,很多深度学习库也都是针对Linux编写的。这个问题存在,但并不是无解。在Linux系统中,我们可以进行Xorg服务器的配置,选择“coolbits”选项,这对单个GPU还是很有用。如果是多个GPU,就要模拟一个监视器。我们试了不少,但没什么改进。如果想在冷空气环境中运行3-4个小时,则应该需要重视风扇的设计。目前市面上的散热风扇的原理大致两类:鼓风式的风扇将热空气从机箱背面推出从而让冷空气流入;非鼓风式的风扇在GPU中吸入冷空气以达到冷却的效果。
所以,如果你有多个GPU彼此相邻,那周围就缺少冷空气可用,所以在这种情况下就不一定需要非鼓风式的散热风扇了。该用什么呢?可用考虑水冷散热。

水冷散热
虽然此方法比风冷法略贵,但可以用在多个GPU相邻的地方,能使四个最强劲的GPU保持低温状态,这是风冷法无法达到的效果。而且水冷散热法更安静,在公共区域运行多个GPU,水冷的优势更为明显。至于说成本问题,水冷单个GPU要花大约690元,再加上些额外的费用约350左右。还有就是得花点时间去组装计算机,不过这也不复杂,网上教程非常多,几个小时就能轻松搞定,后期维护也简单。
总结一下就是,单个GPU用风冷,多个GPU的情况,鼓风式的空气冷却可能会导致10%-15%的性能损耗,但是更划算。当然如果你追求散热的极致效果,水冷散热最佳而且不会制造噪音。所以风冷或水冷都可以,关键看你的实际情况和预算。

主板
主板该配有足够的PCIe插槽来支持所需的GPU数量。注意,大多数显卡宽度需要占用两个PCIe插槽。如果要使用多个GPU则要购买PCIe插槽之间有足够空间的主板,以确保显卡之间不会相互遮挡。

机箱
在选择机箱时,要保证机箱能装下主板顶部的全长GPU。一般情况下大部分机箱是没问题的,但是如果你买小了,能不能退换就得看商家说了算了。所以买之前最好确认下机箱的尺寸大小,看下机箱装好GPU的图,这样也能放心点。另外,如果你要定制水冷的话,要确保买的机箱能装下散热器,尤其是在给GPU用定制水冷的时候,因为每个GPU的散热器都要占空间。


显示器
可能有人会说,选显示器这么简单还用说?那时当然...用的啊。多配台显示器是作为一个成熟的技术人员的标配。不然你想,这么多内容挤到同一个小屏幕里来回切换,那多累人?


小结
GPU
RTX 2070、RTX 2080 Ti、GTX 1070、GTX 1080、GTX 1080,这些都不错。

CPU
1.给每个GPU配1-2个CPU核心,具体要看你预处理数据的方式;
2.频率要大于2GHz,CPU要能支持你的GPU数量;
3.PCIe通道不重要。


内存
1、内存挑便宜的就行, 时钟评率不重要。
2、内存应≥ 显存最大的那块GPU的RAM;
3、内存用多少买多少,不需太大。
4、如果要经常用到大型数据集,多买内存很有用。


硬盘/SSD
1、记得给你的数据集准备足够大的硬盘,一般是大于等于3TB。
2、用SSD会更好,还能处理小型数据集。


PSU
1、PSU需要的功率最大值约等于(CPU功率+GPU功率)×110%;
2、选一个高能效等级的电源,尤其是当你要连很多GPU且需要长时间运行工作,这样能省电费钱。
3、买电源前要确保电源上有足够的接头(PCIe 8-pin或6-pin)接GPU。


散热
CPU的散热:
用标配的CPU散热器或者AIO水冷散热器;
GPU的散热:
1、单个GPU用风冷散热的方式即可。
2、多个GPU则要选择鼓风式风冷散热或水冷散热。


主板
尽量多准备接GPU的PCle插槽,一个GPU需要两个插槽,每个系统最多4个GPU,还要考虑到GPU的厚度。


显示器
为了提高效率可以多买几块屏幕。
以上说了这么多,虽然看起来挺复杂,但是大家不要害怕装机这件事。因为装机步骤都已经清楚地写在主板手册里了,不会比组装乐高难多少,别方~
回复 支持 反对

使用道具 举报

6

主题

11

帖子

60

积分

注册会员

Rank: 2

积分
60
2018-12-20 18:16:02 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

官方推荐 上一条 /1 下一条