深度学习硬件推荐

深度学习非常消耗计算能力,你现在手头的电脑很可能远远不能胜任深度学习工作的(慢到跑一天都出不来一个结果),所以了解一下如何搭建你的深度学习工作站会是个明智的决定。

Deep learning

本来打算好好翻译一下这篇文章的:A Full Hardware Guide to Deep Learning。感兴趣的朋友可以看看原文,其实里面有不少亮点的,无奈原文追逐细节的东西太多了,翻译起来麻烦死我了。于是我取其精华,总结如下面的文章。

GPU

对!我们首先谈GPU!我想用一句话来表明我对GPU的态度:

“如果你要做深度学习,务必配上牛逼的GPU,越牛逼的GPU越好!”

可以说,大部分的深度学习任务,有无GPU的速度差距可以到百倍以上,省出来的时间简直可以让你调无数遍参数。

我个人的例子是虚拟机CPU跑Neural-Style-Transfer,一个迭代大概18分钟,10个迭代下来3个小时就没有了。而原作者的GPU大概1分钟以内就有结果了。T__T

GPU推荐如下:

  • 完全没钱:GTX 580
  • 只有一点钱:GTX 680
  • 性价比:GTX 980
  • 土豪: GTX Titan X

鉴于最新版cuDNN库已经大幅提高了动态卷积的性能,也就是说不支持cuDNN库的GPU计算能力差距越来越大,所以GTX 580可以说性能很差。当然,如果你不怎么使用卷积网络,GTX 580也就凑合着用吧。

CPU

一般说来,CPU在你的GPU努力计算深度网络的时候,仅仅进行一些非常小量的运算,但是它仍然完成下面重要的工作:

  • 读写代码中的变量
  • 执行指令如函数调用
  • 初始化GPU的函数调用
  • 从数据中创建mini-batchs
  • 初始化数据传输给GPU

CPU推荐如下:

  • 每个 GPU 2 个线程
  • 全套 40 PCIe 线路和合适的 PCIe 配件 (和主板配套)
  • 主频> 2GHz
  • 快速缓冲储存区不用太在意

RAM

由于通常训练数据集对于缓存太过巨大,每一批新的小批量处理单元数据都需要从内存 RAM 中进行读取——因此对内存 RAM 的访问是持续在进行。

RAM推荐如下:

  • 能使用异步mini-batch分配
  • 时钟频率不必太在意
  • CPU RAM至少和你GPU RAM一样大

硬盘/SSD

在一些深度学习案例中,硬驱会成为明显的瓶颈。如果你的数据组很大,通常会在硬盘上放一些数据,内存中也放一些,GPU 内存中也放两 mini-batch。为了持续供给 GPU,我们需要以 GPU 能够跑完这些数据的速度提供新的 mini-batch。

许多人买一个 SSD 是为了舒服:程序开始和响应都快多了,大文件预处理也快很多,但是,对于深度学习来说,仅当你的输入维数很高,不能充分压缩数据时,这才是必须的。

如果你买了 SSD,你应该选择能够存下和你通常要处理的数据集大小相当的存储容量,也额外留出数十 GB 的空间。

硬盘/SSD推荐如下:

  • 如果你有图像或声音数据,保证能异步 batch-file 读取和压缩数据
    除非你处理的是带有高输入维度的 32 比特浮点数据组,否则,机械硬盘就可以了

电源

一般说来,你需要一个给你未来所有 GPU 充足供应的电源。随着时间的推移,GPU 通常会更加高效节能;因此,尽管其他组件会需要更换,电源 会用很久,一个好的电源是一个好的投资。

一个例子是:在全功率(1000-1500 瓦特)上跑一个 4 GPU 系统,训练一个卷积网络两个礼拜,耗能 300-500kWh

电源推荐如下:

  • GPU+CPU+(100-300)就是你所需的电源供应量
  • 如果你采用的是大的卷积网络,那就买个功耗更高的
  • 确保有足够PCIe 接头(6+8pin),并足以支持你未来可能买入的 GPU 的运行

散热

散热十分重要,这更有可能成为一个大瓶颈,比糟糕的硬件选择更能降低系统表现。你可能会满足于给 CPU 配一个标准的散热片,但是,要给你的 GPU 配些什么东西,需要特别的考量。

当现代的 GPU 运行一个算法时,它会一直加速至最大极限,同时加速的还有能量消耗,但当到达它的温度壁垒,通常是 80 摄氏度,它就会降低运行速度来避免打破临界温度。

散热系统推荐如下:

  • 如果运行单个 GPU,在你的设置中设定「coolbits」flag
  • 否则,更新 BIOS 和加快风扇转速就是最便宜最简单的办法
  • 需要降低噪音时,用水冷来为你的多 GPU 散热

主板和机箱

你的主板要有足够的 PCIe 接口,来支持你希望同时运行的 GPU(通常局限于 4 台 GPU,即使主板上有很多 PCIe 槽。记住,多数 GPU 都需要占 2 个 PCIe 槽的宽度,例如,你会需要 7 个槽口来链接 4 台 GPU。PCIe2.0 接口也是可以接受的, 但 PCIe3.0 接口更加经济,即使只对单 GPU 性价比也很高,如果对多 GPU,通常都会使用 PCIe3.0 接口,这会对多 GPU 运作带来很大的好处,因为 PCIe 的连接口多数情况下是个瓶颈所在。

主板的选择策略十分直接:就选那款可以支持你想要的硬件配置的就行。

当你选择机箱时,要确保它能满足你 GPU 的长度要求,这样它才能在主板上放稳。多数机箱都能满足要求,但如果你选的是一个小机箱,就需要多加留心。要核查它的面积和规格,你也可以尝试用 google 的图片搜索引擎,看看能不能找到 GPU 放在上面的图片。

主板推荐如下:

  • 选择 PCIe 3.0,带有和你以后所需 GPU 数量一样多的槽口(一个 GPU 需要两个槽口;每个系统最多 4 个 GPU)

显示器

对于个人而言,显示器也是越多越高清越好不是嘛?但是从性价比出发,我还是建议你配一个双屏:一个用来看论文,一个用来跑程序看结果会是你效率提升的利器。

显示器推荐如下:

  • 27 英寸双屏

搭建自己的深度学习工作站并不是那么困难的事情,特别是你一旦开始真正动手起来的时候。

Enjoy :)