0%

实验室深度学习服务器选型

这一篇笔记主要是对实验室服务器选型的一些调研。

当然,其中的很多知识也许在自己以后的装机岁月中会用到。

(目前忽略AMD,毕竟没有接触过,也不是主流)


服务器目标

服务器需要扮演的角色有:

  1. 作为云化环境下的低层资源。
  2. 提供GPU计算能力给深度学习或者其他科学计算。

硬件列表

首先,要作为一台PC,它的组成部分至少有,机箱、主板、CPU、内存、硬盘、电源和CPU散热器。

其次,作为需要提供GPU计算能力的服务器,那么它就需要GPU硬件。

  • 机箱
  • 主板
  • CPU
  • GPU
  • 内存
  • 硬盘
  • 电源
  • CPU散热

下面,一个一个硬件的来记录调研的信息以及一些自己的理解。

首先可以参考一下A Full Hardware Guide to Deep Learning-Tim Dettmers, 其中比较详细的说了各个部分的问题。


PCIe

首先,还是需要先了解一下PCIe通道,在主板、CPU、GPU的参数说明中通常会看到它, 在平常自己攒机的硬件选择时,通常都不用考虑它,因为你不会上多个GPU,但是一旦考虑到要装多个GPU的情景, 最好还是要了解一下。

PCI-Express (peripheral component interconnect express),它是一种高速串行计算机扩展总线标准, PCIe属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽, 主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量(QOS)等功能。

目前一般都是PCIe 3.0,下面的表来自百度百科:

PCI Express 版本行代码传输速率吞吐量
×1×4×8×16
1.08b/10b2.5GT/s250MB/s1GB/s2GB/s4GB/s
2.08b/10b5GT/s500MB/s2GB/s4GB/s8GB/s
3.0128b/130b8GT/s984.6MB/s3.938GB/s7.877GB/s15.754GB/s
4.0128b/130b16GT/s1.969GB/s7.877GB/s15.754GB/s31.508GB/s
5.0128b/130b32 or 25GT/s3.9 or 3.08GB/s15.8 or 12.3GB/s31.5 or 24.6GB/s63.0 or 49.2GB/s

可以看到3.0单通道的传输速率为984.6MB/s。

简单说一下984.6MB/s是怎么和前面参数联系在一起的:

这里的行代码128b/130b,意思就是传输的130bit中有128bit是实际传输的数据,其中的2bit可能是附带的信息位什么的, 传输速率8GT/s,意思是传输能力为8Gbps(我是这样理解的),注意到Gbps表示1000兆比特,所以:

通常,主板参数中会显示它的PCIe通道数,这表示它所能最大支持的通道数,其实就是PCIe插槽插满的通道数, 要注意到,PCIe插槽的长度并不固定,如下图所示:

CPU的PCIe通道数表示CPU所包含的通道数,也就是CPU能够提供的PCIe通道数量,即使主板上有再多的PCIe插槽, CPU的PCIe通道数不够也没用(这里不准确,可能主板支持PCIe扩展,但那好像也不能根本性解决问题)。

GPU的通道数表示GPU所需要使用的通道数,同时也表示插上它需要多大的PCIe插槽,通常都是x16的。 要注意到在PCIe3.0的时代,在深度学习方面,通常x16的通道GPU是用不完的,或许x8就已经足够了, 当然,如果PCIe通道能够完全满足是最好的。

PS:如果一颗CPU有40个PCIe通道,插入两块GPU是能够满足的,也就是16 + 16,如果插上3块GPU, 一般变成16 + 8 + 8,插上四块GPU时变成8 + 8 + 8 + 8

另外,PCIe通道不只是GPU能用,例如高端的固态硬盘使用的就是PCIe通道。

总结一下,也就两个问题:

  1. 主板的PCIe插槽要够。
  2. CPU能提供的PCIe通道要够。

主板

主板的选择主要考虑的点:

  1. PCIe插槽数,能否插下四张GPU。
  2. CPU槽数,是否要插两个CPU。
  3. 最大内存容量。这个看实际的需求来选择即可。

这里先说一说单CPU的主板选择:

大部分人的选择都是华硕X99-E WS,因为它支持7×PCI-E X16显卡插槽

也就是它有7个插槽,所以它能够插下4张GPU(并不是有多少插槽就能插多少张GPU,事实上空间不足导致有的插槽不能再插)。 如果考虑可能会插到4张GPU的话,这张板子会是不错的选择。

但是,考虑到机器并不光是提供深度学习计算能力,还要有足够的CPU资源来进行虚拟化,所以可能需要选择到两路CPU。

一旦扯到两路CPU,感觉就像进入了一个另外的领域似的,因为支持两路CPU的都是服务器主板,资料也不多,非常复杂。

目前一般自己组机的话推荐使用 C612 芯片组的板子,支持两路CPU,PCIe插槽也多。

总之主板这方面的知识目前还是非常的欠缺…

对于华硕主板的详细参数可以去华硕官网查看,asus.com, 另外supermicro.org可以查到大部分主板的参数。

内存插槽数/通道数:

考虑到内存的扩展性,自然需要考虑内存通道数量的问题。

内存通道这个概念很容易混淆,可以参考:

双通道内存有什么优点和缺点?-知乎

为什么只支持双通道内存的主板会配四个内存插槽?-知乎

简单来说,现在的主板大多支持双通道,比较好的主板(例如x99,服务器主板)会可能支持到四通道(也有支持三通道的主板,但是很少见)。 那么只支持双通道但是有四个内存插槽的板子什么意思?十分简单的来说,就是一个通道可以插两块内存, 当两块内存插在同一个通道上的时候,它只是容量叠加,当两个通道分别插上一块或两块内存的时候,才会开启双通道。 也就是两个通道,每个通道两个插槽,自然就是四个插槽。


CPU

CPU的选择主要考虑两点:

  1. 核心数,核心数越多并行能力就越强。
  2. PCIe通道数,目前单颗CPU最多的能够支持到40个通道。
  3. 最大支持内存。

对于单CPU的选择,就没什么要求,看它够不够40个通道,然后才是频率与核心数量, 如果不考虑并行,在运行深度学习模型的时候,其实只使用了CPU单核心,因为大部分计算工作都是GPU做了, CPU没有太大的任务,所以通常CPU核心数不关键,频率也不是很关键,不要太低就行了。

型号 核心数 PCIe通道数 最大内存支持 ECC内存支持
i7-6850k 6核12线程 PCIe通道数40 最大内存支持128G 不支持ECC内存
i7-7800x 6核12线程 PCIe通道数28 最大内存支持128G 不支持ECC内存
E5-2620 v3 6核12线程 PCIe通道数40 最大内存支持768G 支持ECC内存

对于双路CPU来说,那都是E3/E5,这个通常也不用怎么考虑,选两个通道数够的,频率别太低的就行。

Intel的CPU参数查询可以去官网:intel.com


GPU

对于选择GPU主要需要考虑的点:

  1. 价格。毕竟GPU可能是整台主机最贵的硬件,一般还是要掂量掂量。
  2. 深度学习的计算能力。时间也是金钱。

直接推荐阅读:

Picking a GPU for Deep Learning-Slav Ivanov

Which GPU(s) to Get for Deep Learning: My Experience and Advice for Using GPUs in Deep Learning-Tim Dettmers

这里面讲了很多关于深度学习GPU选择的问题。

AMD还是NVIDIA

在深度学习这个方面,目前不用考虑AMD。

NVIDIA显卡的选择

首先,所选择的型号需要支持CUDA,支持列表CUDA GPUs。 深度学习需要用到cuDNN库,那么自然需要显卡支持CUDA

另外,由于NVIDIA在10系列的显卡上发了力,这一代的提升完全是突破式的,导致在深度学习的机器门槛低了很多, 10801080TiTITAN Xp这些桌面用户级显卡现在也完全可以胜任深度学习的计算, 比起老架构的计算卡甚至可以快出很多倍。

来看一看1080Ti与K80的比较:

从上图中,大概可以估计1080Ti比K80在深度学习模型的训练上,要快4倍以上。(那么K80之类的计算卡现在还有什么竞争力?这里需要注意到计算卡是双精度的,但是1080Ti之类的是单精度的,但是在很多需要计算的领域,包括深度学习,只需要单精度就够了。)

正是由于10系列显卡的发力,所以现在很多人以及实验室都会自己组装深度学习的工作站,因为这实在比直接买带计算卡的服务器便宜多了。

价格

以2018年3月11日网上的价格为例:

型号 品牌 价格 网站
1080 公版 $989.99 亚马逊
1080Ti 公版 ¥10350.00 京东
TITAN Xp 公版 ¥11999.00 京东
TITAN V 公版 ¥26688.00 京东
K80 公版 $2298.00 亚马逊
P6000 公版 $4,669.00 亚马逊

ps:价格都是随意看的,可能不准确,同时亚马逊到国内还有关税没有考虑。

之前1080Ti性价比是最高的,因为那时公版1080Ti也就5000~6000人民币,现在涨了快一倍, 感觉TITAN Xp也可以考虑了。当然,怎么都比计算卡性价比高。


内存

对于深度学习来说,内存其实并不重要,实际上训练数据都会读入到显存里面, 大部分装机建议内存至少要大于显存(显卡的内存总和),因为GPU显存大小并不大(以TITAN X为例,它的显存只有12G,也就是插4张也才48G显存,这时候64G的内存也是足够了)。

对于单CPU的主板来说,因为是大多是消费级,也基本不用至强CPU(不是所有主板都能插至强系列),所以基本不能使用ECC内存, 所以通常就直接考虑平常常见的内存就行,海盗船、金士顿、芝奇等的DDR4都可以。

对于双路CPU的主板来说,一般都要使用服务器内存,也就是带ECC功能的内存,同时为了良好的扩展性, 最好是RDIMMs的(LRDIMMs更好),相关可以参考:

ECC内存-百度百科

LRDIMMs, RDIMMs, and Supermicro’s Latest Twin-AnandTech

另外简单说一下,对带有ECC的内存,还有一种是RECC内存(Reg ECC),它多比纯ECC内存要多带了一个Register, 它起到扩大内存容量的作用。

具体怎么选择,凭我的知识说不好。

————分割线————

下面首先十分推荐阅读内存系列一:快速读懂内存条标签-老狼, 写得很好。

内存条长短

内存条有好几种长度,也就是不同的插槽类型,这个需要与主板相匹配。

内存频率:

内存频率类似于CPU频率,频率越高也运行越快,但是在内存的频率选择时,需要按主板的内存频率支持来选

内存容量:

内存容量都是2的次方的大小,平常PC使用的一般是4G或者8G的大小,但也有单条16G、32G的大小。


硬盘

首先这里不讨论固态盘,硬盘的选择需要考虑下列问题:

  1. 容量。
  2. 速度。

首先,需要注意到PC硬盘的定位是有好几种的,最简单的,看硬盘颜色, 分为黑盘、蓝盘、绿盘、红盘、紫盘等,关于它们之间的区别,看一个小科普就好:

你知道电脑硬盘有几种颜色吗?有哪些用途及如何选用你知道吗?-sohu

至于选哪种硬盘,个人使用蓝盘就够了,要好一点就用企业级的。

然后简单的知道硬盘还有两种接口就行,SAS和SATA。


电源

  1. 功率大小。
  2. 价格。

首先,对于功率大小,就是要保证电源能够提供给各个部件足够的功率,功率计算网站:

OuterVision® Power Supply Calculator

电源功率一定不能选小了,否则就会很尴尬,而且还要考虑到多个显卡扩展的情况,

如果考虑到4显卡扩展,可能至少需要一个1600w的电源。

至于价格,一般情况下当然是电源越好,价格越高,考虑到可能不间断运行,在电源上就一定要舍得, 并且电源价格实际上也不算太高。


CPU散热

  1. 水冷:冷却效果好,安静,好看,但是可能漏液,导致BOOM。
  2. 风冷:冷却效果比不上水冷,声音稍大,安全性较好。

这个就看个人喜好了,如果是实验室,当然还是风冷稳一点,品牌一般推荐猫头鹰。


机箱

机箱的选择可能会简单一点,也就是要一个足够大的机箱,能够放下主板以及其它的硬件就好了。

如果是机房统一管理放置的情况下,一般都是机架式或刀片服务器,可以插在机架上,占用空间少,放便管理。 但是这类服务器机箱一般比较小,放不下普通消费级显卡。所以在这种情况下一般考虑塔式机箱, 也就类似平常PC机的主机。

对于个人组装单CPU型的,一般推荐海盗船AIR540。对于双CPU型的,不知道能否装下主板, 这可以在购买时咨询店家。

双CPU所需的机箱不太清楚,可以在购买时询问一下店家。


最终建议

如果是单CPU的深度学习工作站,那完全可以自己买配件组装:

  1. 组装过程十分简单。即使没有装过,看看教程也能学会。
  2. 过程很有意思。
  3. 对于每天接触电脑的人来说,这些知识也算生活技能了。

但是如果是双CPU,服务器主板,不太建议自己组装(可以买别的商家组好的),主要是:

  1. 各个配件不熟。
  2. 配件不好买。
  3. 商家组好的那种也不算太坑,并且可以询问商家定制化配置,出了问题也好处理。

所有参考资料

如何配置一台适用于深度学习的工作站?-知乎

A Full Hardware Guide to Deep Learning-Tim Dettmers

NVIDIA® DIGITS™ DevBox-NVIDIA

What is a PCI-Express Lane?-superuser

pcie-百度百科

PCIe传输速率和可用带宽(吞吐量)计算-CSDN

ECC内存-百度百科

LRDIMMs, RDIMMs, and Supermicro’s Latest Twin-AnandTech

双通道内存有什么优点和缺点?-知乎

为什么只支持双通道内存的主板会配四个内存插槽?-知乎

内存系列一:快速读懂内存条标签-老狼

Picking a GPU for Deep Learning-Slav Ivanov

Which GPU(s) to Get for Deep Learning: My Experience and Advice for Using GPUs in Deep Learning-Tim Dettmers

你知道电脑硬盘有几种颜色吗?有哪些用途及如何选用你知道吗?-sohu