最近为公司搭建了一台实验用的深度学习主机,在网络上参考了大量的资料,给出了目前最好的配置。本文首先会介绍所有硬件的选择分析,然后介绍深度学习环境搭建流程,最后给出一些简单的性能对比测试。
本文方案定位:适用于预算在5万内,用于深度学习模型研究、开发,需要快速建模验证调参的企业或实验室用户。
目录
Chapter 1:配置方案选择
Chapter 2:深度学习环境搭建
Chapter 3:简单性能对比测试
Chapter 1 配置方案选择
首先先上完整的配置清单:
部件 | 型号 | 价格 | 数量 | 合计 |
---|---|---|---|---|
GPU | 微星1080Ti公版 11G | 6400 | 3 | 19200 |
CPU | I7 6850K盒装 | 4480 | 1 | 4480 |
主板 | 华硕X99-EWS | 4550 | 1 | 4550 |
内存 | 海盗船复仇者16G/2400 | 975 | 4 | 3900 |
SSD | 三星960EVO 500G | 1850 | 1 | 1850 |
电源 | 长城1250w | 945 | 1 | 945 |
散热器 | 九州风神大霜塔至尊版 | 285 | 1 | 285 |
机械硬盘 | 希捷2TB/7200转64M | 450 | 1 | 450 |
机箱 | 美商海盗船780T白色全塔机箱 | 1250 | 1 | 1250 |
总计 | 36910 RMB |
GPU
由于预算所限,就不必考虑NVIDIA Tesla那种专业计算卡了,一张基本的K80卡都要5万以上起步,而且K80的性能还没1080Ti的好,所以我们直接考虑英伟达消费级的卡,GeForce 10系列。
选购GPU之前先参考一下WIKI上有关Nvidia 10系列的显卡参数对比,原网址请点击这里:Nvidia GeForce 10 Series.
最重要的三个参数为:时钟频率(Clock speeds)、内存(Memory)和带宽(Bandwidth)。从上图可以看到,1080Ti是消费级性价比最高的GPU,拥有480GB/s的带宽,单精度运算能力达到10.6TFPS,内存11GB,仅次于最新的Titan Xp,而且价格低,性价比最高。当然,如果你不差钱,选择Titan Xp也是极好的。
这里选择使用3张1080Ti,之所以不选择4卡,与主板和电源有关,后面会解释。使用多卡,最明显的优势是当你进行神经网络调参的时候,可以同时使用多卡进行多个参数调整,也就是说每一个不同参数的模型对应使用一个GPU来训练。以往我们每调一次参数,就只能等模型完全训练完之后,才能再调参数进行下一次训练,这样等待的时间太长,不利于研究人员的思考。我曾经用AWS的P2实例(K80 GPU)复现李飞飞组的《Perceptual losses for real-time style transfer and super-resolution》一文,跑一轮需要3小时,跑出来之后发现结果不好,需要调整一些参数,又要等3小时才能出结果,这是在太慢了……如果能有多卡,时间就起码缩短了3倍!
建议:如果不考虑成本问题,尽量用带水冷的显卡,因为在满载运行的时候,显卡温度会上升到86度左右,而且默认的英伟达显卡风扇速度设置最高不能超过70%,当然可以通过调节风扇速度来降温,详细教程请看我另一篇文章:深度学习训练时GPU温度过高?几个命令,为你的GPU迅速降温。
PS: 最近由于比特币价格上涨,矿工不断搜刮市面上的显卡,导致显卡价格不断攀升,在上月给供应商发配置单时,公版1080Ti最低价只要RMB 5800,但过了几周实际下单时,价格已经上涨到RMB 7000,而且不一定有货,所以在购买GPU之前要问清你的供货商有没有货。
主板
网络上很多文章都建议使用Z170主板或X99系列的主板,Z170主板一般是个人用户使用,价格较低,而且一般用于单卡。这里要使用3卡,因此选择X99系列的高端主板,支持多卡。一开始选择的是微星 X99A SLI PLUS主板,此款主板支持3 x PCIe x16,价格在2000左右。但后来发现了华硕X99-E WS这款主板,这简直就是为深度学习所设计的,先看看参数:
我最看重的有三点:第一是支持4 x PCI-E x16,GPU若能工作在x16带宽下工作,就能最大限度地发挥性能,虽然此款主板理论上支持4路x16,但实际上当插满4卡时,实际带宽会工作在x16/x8/x8/x8带宽中,所以实际上没有完全发挥4卡性能,因此本方案只选择3卡,让其工作在x16带宽中(我没找到能同时工作在4个x16带宽的主板)。第二是其支持40 Lane的CPU,CPU核心多、线程多,这对于数据预处理非常有用!第三是能插8条内存,支持128GB内存,对于后面升级都是非常有利的。
这款主板是为工作站而生,没有花俏的外观,只有强大的性能,而且主板的结构大小适合同时插满4张大显卡,1080Ti这个尺寸的显卡没问题,要知道市面上有些说支持4路的主板是不一定有足够位置插满大显卡的,可能只支持尺寸小一点的显卡,大家在选购时要注意。
CPU
CPU对于深度学习的任务来说,重要性并没有GPU那么高,所以一般个人用户就选择i5或e5-1620v4这类性价比较高的处理器。但为了不让CPU成为性能提升的瓶颈,我把目光放在了i7和e5身上,选择CPU个人认为需要考虑的是:核心架构、核心数线程数、主频和PCIE通道数(lanes)。
主板限定了CPU必须为2011-v3或酷睿I7系列的处理器,其它就不必考虑了。重点提PCIE通道数,在深度学习的任务处理中,PCIE通道数lanes越高,数据处理得越快,可以理解为一个40车道的高速公路肯定比16车道的快!所以我们优先考虑Lanes为40的CPU,那么可以缩小范围到以下几款:(数据引用自维基百科)
注意上图除了i7-6800K是28 lanes之外,其他都是40 lanes。Lanes数为40的除了上面几款i7处理器之外,至强E5-1620v4同样也是40 lanes的CPU,而且你能以千元价位买到,因此是个人用户性价比首选!
考虑价格,6900k和6950x贵的有点离谱,6850K主频高(虽然没4.0GHz但我们又不用来玩游戏),6核12线程,应该能够满足处理imagenet这类大数据集了吧,因此最终敲定i7-6850K!
SSD
SSD选择的是三星960EVO 500G,这型号的SSD是最新的NVME M.2固态,NVME M.2是下一代主流固态硬盘标准,用一个字概括就是:“快!”比传统SSD还快,感受如何?请点击这个链接感受下:使用PCI-E NVMe的SSD是什么样的体验?知乎
机箱
特别说一下机箱,机箱也是特别重要的部件,主要是因为要装3张显卡,除了主板的尺寸有要求之外,机箱也要尽可能大,这样才有利于散热。另外一个原因是假如后期想加装分体式水冷,也有足够的空间去安装。
网络上呼声最高的当属nvidia2014年推出的Deep learning Box同款机箱,美商海盗船 AIR540,某东链接:美商海盗船 AIR540 USB3.0 中塔侧透。
但要注意的是此款机箱是中塔尺寸,所以一般个人用户来说就足够了,但由于要多卡,所以最好使用全塔式机箱。找了很久,确定用这款:美商海盗船780T,某东链接点这里。
这款机箱的特点就是:大!比大更大!
送过来的时候要两个人一起搬才搬得方便,打开包装放在地上,几乎就顶到桌子了,高度达67.3厘米。
可以看到内部空间还有很多空余的地方,如果要加装水冷还是可以的。
重量达几十斤,可以对比一下旁边我的工作用电脑,这体型差距实在是太大了!总体来说还是挺满意的,而且颜值也高,因此我给它取名为:“DeepShark大白鲨”。
其它部件
机械硬盘来个1到2TB左右的就好,一般一线大厂差别都不大,选了希捷2TB。散热器选了九州风神大霜塔,能压住I7-6850K,体型还挺大的,不过对我的主板来说尺寸刚刚好,不会挡住显卡。电源的功率一定要够,粗略算了一下3张显卡每张功率峰值250w,CPU150w左右,加起来不会超过1000w,所以选了个1250w的电源(另外供货商也找不到现货更大的电源了)。内存最低也要64GB,所以选了4个2400MHz/16GB的海盗船复仇者,注意主板和CPU支持你的内存频率就最好,不然会被降频使用。
Chapter 2:深度学习环境搭建
此部分由于篇幅太长,我已经写在了另外一篇文章,上面有非常详细的环境搭建过程,适用ubuntu16.04系统、1080Ti显卡、华硕X99-E WS高端主板,搭建过程中由于是新显卡新主板,遇到不少的坑,因此想写出来分享给大家,以免大家走弯路,链接在此:Ubuntu16.04 + 1080Ti深度学习环境配置教程。
Chapter 3:简单性能对比测试
由于手上正在复现李飞飞组的fast neural-style,因此就用这个项目来对AWS P2.xlarge实例和GTX 1080Ti进行性能对比,更多的性能对比可以参考medium上slav ivaniov的装机及性能对比评测,他的性能对比更加全面,链接点这里:
数据集有两个,分别是209MB的低分辨率图片集和3GB的高分辨率图片集,均是使用部分imagenet 的数据集ILSVRC2012处理而成,网络模型完全根据Johnson, Justin Alahi, Alexandre,Fei-Fei, Li et al的《Perceptual losses for real-time style transfer and super-resolution》,网络模型如下图:
GPU参数对比:
|name|GPU|memory|band width|arcitecture|price|
|--|--|--|--|--|
|AWS P2.xlarge|K80|24 Gb|480 GB/s|Kepler|$ 0.9/h|
|Deep Shark|1080Ti|11 Gb|484 GB/s|Pascal|$ 850|
使用K80进行模型训练,训练一轮需要3小时:
使用1080TI进行模型训练,每轮只需15分钟:
足足快了15倍!不得不说,跨了几代架构的显卡性能不在同一个量级,其实不能拿来作比较,最好还是在同一个Pascal架构下作对比,但由于大多数人在没有GPU的时候都是使用AWS的GPU服务器,作这个对比也可以让大家分析下后面还要不要用AWS,租用AWS每小时0.9美元,但是速度慢,使用时间就更长,每个月的账单因人而异,许多网友表示把这些账单加起来都能买好一点的GPU了,本人在3个月使用里面花了差不多1000块人民币,的确长期来说还是自己买机器的实惠。
总结
组建GPU机器时,首先考虑的是定位,到底是企业、实验室用还是个人用,到底是实验用还是工业用,定好位后就要考虑各硬件参数,尽量把性能最大化。多卡永远比单卡要方便,因为能同时运行多个模型,对研究人员的分析非常有利,成本允许的情况下尽量买当前性能最好的卡,后面还能持续使用几年,这样成本也就分摊开了。
如果你对上面的方案有不同的意见,欢迎在底部留言,我们共同来探讨更好的方案。