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

  这是一份超详细的装机指南,结合了最新的硬件产品,告诉你从CPU、GPU、内存条到外设这些都应该怎么选。

  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仍然是符合的。

猜你喜欢

转载自blog.csdn.net/shicifang/article/details/87874556