在用了十年的 MacBook Airs 和云服务以后,我现在要搭建一个(笔记本)桌面了
几年时间里我都在用越来越薄的 MacBooks 来搭载一个瘦客户端(thin client),并已经觉得习以为常了。所以当我涉入深度学习(DL)领域后,我毫不犹豫的选择了当时最新的 Amazon P2 云服务。该云服务不需要预付成本,能同时训练很多个模型,并且还能让一个机器学习模型慢慢地训练自己。
但随着时间推移,AWS(亚马逊云服务)的账单逐渐越堆越高,即便我换成了便宜十倍的 Spot instances 也没用。而且我也没有同时训练过多个模型。在模型训练的时候,我会去吃午饭,锻炼等等,然后带着一个更清晰的头脑回来查看它。
但最终我模型的复杂度增加了,训练时间也变得更长。对一个刚完成两天训练的模型,我经常会忘记之前对它进行了哪些不同的操作。受到其他同行在 Fast.AI Forum 上讨论更好经验的激励,我决定买一个专用的深度学习盒子(DL box)放在家里。
最重要的原因就是能在进行模型的原型设计时节省时间,如果我们能训练地更快,反馈时间也会更短。这能让我们更容易的在头脑中建立起模型假设和结果之间的联系。
而且我也想省钱,我之前用的是亚马逊 络服务(AWS),它通过 Nvidia K80 的 GPU 来提供 P2 instances。最近 AWS 的费用达到了每月 60 到 70 美元,还有增长的趋势。并且要储存大型数据集也很贵,比如 ImageNet 这样的。
最后一点,我已经有 10 年没有一个(笔记本的)桌面了,想看看现在有什么变化(这里剧透一下:基本上没变化)。
下面是我的选择:从选择配件到基准测试。
目录
1. 选择配件
2. 把它们组装在一起
3. 软件设置
4. 基准测试
选择配件
对我来说合理的预算是两年云计算服务的成本。以我目前的情况来看,即 AWS 每月 70 美元的使用费,那么总预算应该在 1700 美元左右。
PC Part Picker 这个 站非常有帮助,可以帮你发现是否某些配件放在一起并不好用。
你可以在这里查看所有使用过的配件:https://pcpartpicker.com/list/T6wHjc
GPU
GPU 是整个机箱里最关键的部件了。它训练深度 络的速度更快,从而缩短反馈循环(的周期)。
GPU 很重要是因为:a) 深度学习中绝大部分计算都是矩阵运算,比如矩阵乘法之类。而用 CPU 进行这类运算就会很慢。b)当我们在一个典型的神经 络中进行成千上万个矩阵运算时,这种延迟就会累加(我们也会在后面的基准训练部分看到这一点)。而另一方面,GPU 就更方便了,因为能并行的运行所有这些运算。他们有很多个内核,能运行的线程数量则更多。GPU 还有更高的存储带宽,这能让它们同时在一群数据上进行这些并行计算。
我在几个 Nvidia 的芯片之间选择:GTX 1070 (360 美元), GTX 1080 (500 美元), GTX 1080 Ti (700 美元),以及 Titan X(1320 美元)。
在性能方面,GTX 1080 Ti 和 Titan X 较接近,粗略来看 GTX 1080 大约比 GTX 1070 快了 25%,而 GTX 1080 Ti 则比 GTX 1080 快乐 30% 左右。
Tim Dettmers 有一篇更好的关于选择深度学习 GPU 的文章,而且他还经常会在新的芯片上市后更新博文:http://timdettmers.com/2017/04/09/which-gpu-for-deep-learning/
下面是选购 GPU 时需要考虑的事情:
-
品牌:这里没什么可说的,选 Nvidia 就对了。它们已经专注于机器学习很多年了,并且取得了成果。他们的统一计算设备架构(CUDA)工具包在这个领域里有着不可撼动的地位,所以它真的是深度学习从业者唯一的选择。
-
预算:Titan X 在这方面真的没有任何优势,因为它比同样性能的 1080 Ti 贵了 500 多美元。
-
一个还是多个:我考虑过用一堆 1070s 去替代(单个)1080 或 1080 Ti。这能让我在两个芯片上训练一个模型,或同时训练两个模型。目前在多个芯片上训练一个模型还有点麻烦,不过现在有所转机,因为 PyTorch 和 Caffe 2 提供了随着 GPU 数量几乎成线性提升的训练规模。另一个选择—同时训练两个模型似乎更有价值,但我决定现在先用一个强大的核心,以后再添加另一个。
-
内存:内存越大当然就越好了。更多的存储空间能让我们部署更大的模型,并且在训练时使用足够大的批量大小(这会对梯度流很有帮助)。
-
存储带宽:这能让 GPU 在更大的内存上运行。Tim Dettmers 指出这对于一个 GPU 来说是最重要的指标。
考虑到所有这些,我选择了 GTX 1080 Ti,主要是考虑到训练速度的激增。我计划很快再增加一个 1080 Ti。
CPU
即便 GPU 是深度学习的最佳选择,CPU 同样也很重要。比如说数据预处理通常都是在 CPU 上进行的。如果我们想把所有的数据提前并行,核的数量和每个核的线程数就非常重要了。
为了不偏离预算,我选择了一个中等程度的 CPU,Intel i5 7500,价格大概在 190 美元。相对来说挺便宜,但也足够保证不拖慢速度。
内存(RAM)
如果我们要在一个较大数据集上工作,当然钱多好办事,内存总是多多益善的。我买了两根 16 GB 的内存条,也就是以 230 美元的价格买下了总共 32 GB 的 RAM,而且打算以后再买 32 GB 的。
硬盘
遵循了 Jeremy Howard 的建议,我买了一个固态硬盘(SSD)搭载我的操作系统和现有的数据,还有一个慢转硬盘驱动器(HDD)来存储那些大型数据集(比如 ImageNet)。
-
SSD:我记得多年前买到第一部 Macbook Air 时,是如何惊叹于它的固态硬盘速度的。让我高兴的事,与此同时,叫做 NVMe 的新一代固态硬盘上市了。230 美元买到一个 480 GB 的 MyDigitalSSDNVMe 驱动真的很值。这个宝贝能以每秒千兆字节的速度拷贝数据。
-
HDD: 66 美元 2 TB。在 SSD 越来越快的同时,HDD 变得更便宜了。对一个用了 7 年 128 GB 的 Macbook 的人来说,有如此大容量的硬盘简直是太棒了。
主板
有一件我一直很关心的事,就是挑选一块能支持两块 GTX 1080 Ti 的主板,两个都在串行总线(PCI Express Lanes)的数量上(最小的是 2×8),并且有能放下两个芯片的物理空间。还要确保它跟选好的 CPU 兼容。最后一个 130 美元的 Asus TUF Z270 主板帮我做到了这一点。
电源
经验法则:它应该能为 CPU 和 GPU 提供足够的能量,再加上外的 100 瓦。
Intel i5 7500 处理器的能耗是 65W,每个 GPU (1080 Ti) 需要 250W,所以我用 75 美元买了一个 Deepcool 750W Gold 电源供应单元(PSU)。这里的「Gold」指的是电源效率(power efficiency),即它以热量的形式损耗了多大的功率。
机箱
机箱应该跟母板有相同的形状系数。如果也能有足够的 LED 来防止过热就更好了。
一个朋友推荐了 Thermaltake N23 机箱,价格 50 美元,我马上就买了下来。可惜没有 LED。
主板上的示意图
在主板上安装 CPU
我在安装 CPU 时获得了帮助
但我进行这一步的时候很困难,一旦 CPU 放在了位置上,杠杆却无法下降。我其实是让一个更懂硬件的朋友通过视频通话指导我完成的。结果发现把杠杆拉下去需要的力量超过了我预期的程度。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!