作者:Curtis Northcutt

仅需6200美元,高性价比构建3块2080Ti的强大工作站

如果想要进行深度学习训练,在英伟达的新一代 GPU 中,RTX 2080Ti 是性价比最高的显卡(参见:首个 Titan RTX 深度学习评测结果出炉:2019 年你该选择哪款 GPU?)。但即使不上泰坦,9000 元一块的 GPU 也是很贵的。在本文中,来自 MIT 的 Curtis Northcutt 为我们找到了组建一台三 2080Ti 深度学习工作站的最简方式。

在他的配置下,整个系统需花费 6200 美元(约合 41700 元人民币),相比 AI 硬件供应商 Lambda Labs 提供的整机要便宜一半。如何为实验室组装一台最强大的计算机,让我们来看看他是怎么做到的。

我在 MIT 量子计算实验室和数字学习实验室构建了一台多 GPU 深度学习工作站。在网络中搜索时我发现,并没有一篇文章详细介绍了所有装机细节。

不过我还是发现了像 Lambda GPU 工作站这样的整机供应商。唯一的问题是:一台这样的机器需要花费 12,500 美元。这是进行顶级前沿深度学习研究的最佳配置,但如果买不起的话什么都无从谈起了。在这篇文章中,我将介绍一个自己版本的装机配置——使用相同或更好的配置,而且节省一半以上资金:只需 6200 美元。为了能让所有研究者获得帮助,在这篇文章中我会分享所有配置细节。

如果你正在构建一台较小的深度学习机器,你会发现本文同样有用。在正文中,我加入了可进一步降低成本的一些示例。

在文章最后,我给出了自组建机器与谷歌计算引擎(GCE)深度学习 VM 的时间/成本对比。我使用 PyTorch ImageNet/ResNet50 训练作为基准

完美配置?

完美配置是不存在的,因为每个人的需求都不尽相同。即使过去曾经出现过,最佳配置也会随着新硬件的不断推出而改变。所以,本文试图给出尽可能好的配置。

深度学习工作站的所有组件

以下就是清单的全部了。

我订购的所有组件都是在 Newegg 上在线购买的,不过对于我们来说,亚马逊等其他途径都是可以的。如果你想去电子城找更便宜的,也可以尝试。

深度学习工作站的所有组件。

在 2019 年 1 月 31 日,每个组件及其价格如下:

  • 3 块 EVGA 英伟达 RTX 2080 Ti GPU

  • EVGA GeForce 2080 Ti,3570 美元(每块 1190 美元)


  • 20 线程 CPU(中央处理器)

  • 英特尔 Core i9 9820X Skylake X 10 核 3.3Ghz,850 美元


  • X299 主板(所有其他组件都要连接主板)

  • ASUS WS X299 SAGE LGA 2066 英特尔 X299,492 美元


  • 机箱

  • 海盗船 Carbide 系列 Air 540,130 美元


  • 2TB M.2 SSD 固态硬盘

  • 英特尔 660p 系列 M.2 2280 2TB PCI-Express,280 美元


  • 3TB 机械硬盘(用于速度不敏感文件的存储)

  • 希捷 BarraCuda ST3000DM008 3TB 7200 转,85 美元


  • 128G 内存

  • 4 个海盗船 Vengeance LPX 32GB,740 美元(每个 185 美元)


  • 1600W PSU 电源

  • EVGA SuperNOVA 1600W P2,347 美元(1300W 的电源在 ImageNet/ResNet50 基准测试时会出现断电重启)


  • 散热器

  • 海盗船 Hydro 系列 H100i PRO 低噪音版,110 美元

在 Newegg 上使用会员账户购买的话,不算消费税所有组件的总价为 6200 美元(升级后的电源另有 107 美元)。

深度学习工作站视图。

每一个组件的考虑事项

在选择 GPU、RAM、CPU 和主板等组件时,需要牢记以下三个目标:

  1. 速度和容量最大化

  2. 避免组件间出现瓶颈

  3. 花费少

我列举了构建工作站所需的所有组件以及每一组件的考虑事项。各组件以其对深度学习模型训练的性能影响为序排列。

GPU

  • 基准测试,RTX 2080 Ti 是 2500 美元价位下最好的 GPU。

  • 请购买 after-market GPU(如 EVGA 或 MSI),而不是英伟达 Founders Edition。

  • 注意 RTX 2080 Ti 的过热问题。

  • 该工作站并未使用涡轮风扇式(blower-style)GPU(更便宜),但涡轮风扇式 GPU 的性能可能更好。

GPU 是深度学习机器中最为重要的组件,同时也是最昂贵的。你通常应该首先考虑使用哪种 GPU:装配中的其他所有组件选择将基于此。很多博客都有介绍如何选择满足你需要的 GPU。

如果你想要一款高性能 GPU,我建议不要受市场营销的干扰,直接购买 RTX 2080 Ti。如果你想自己做研究,并想要选择一款性价比高的 GPU,则可以通过 videocardbenchmark.net 检索,并在你的价格区间内选择性能最佳的 GPU。除非你的预算在 2,500 美元以上,RTX 2080 Ti 是最佳选择。如果性能降低 30%,你可以选择购买更便宜的 RTX 2080 或者旧版 GTX 1080 Ti。为实现最佳的深度学习,我建议你购买至少 11GB 内存的 GPU,而这正是 RTX 2080 Ti 的内存容量。

在购买 RTX 2080 Ti 时,你会注意到市场上有大量相关品牌:EVGA、技嘉、华硕、微星等。这些都是所谓的 after-market GPU(非公版)。你也可以选择直接购买英伟达的 Founders Edition。一般而言,如果你想追求最佳性能,不要购买 founders edition。为优化性能,EVGA 等公司会对 GPU 进行定制设计,有时会进行 GPU 超频处理。Founders edition 是首次尝试而非最佳尝试。非公版 GPU 通常设计有一至三个风扇,大概风扇越多,性能越好。其中一些只是营销噱头罢了,两个风扇通常就够了。这里的主要建议是:购买 EVGA、技嘉、华硕或微星的非公版 GPU。

请注意,after-market GPU 品牌众多,价格不一。超频 GPU 往往更贵,但通常会作出一些折中,因而实际上并不能提升性能。你通常只需购买最便宜的即可。

一些顾客已经抱怨过 RTX 2080 TI 的过热问题。我在构建工作站时仅使用三个 GPU 就是为了增加冷却气流。如果没有出现问题,我会另加第四个 RTX 2080 TI GPU。

我在构建工作站中使用了开放式风扇 GPU(风扇在每个 GPU 的底部),因为它们成本更低。涡轮风扇式 GPU 将气流从机箱一侧排出,使性能更佳。就我们使用的主板而言,GPU 被压缩得很紧,阻止开放式 GPU 风扇排出气流。如果你购买了涡轮风扇式 GPU,风扇可直接将气流从机箱一侧排出。

固态硬盘 SSD

  • SSD <> GPU 数据迁移深度学习训练和预测的主要瓶颈。

  • m.2 SSD 比标准 SSD 快了 6 倍。

  • 如果预算足够,请购买 m.2 SSD。你需要与 m.2 兼容的主板。

从硬盘到 GPU 的数据迁移深度学习的主要瓶颈,会极大降低训练和测试时速。m.2 SSD 可以解决这个问题。最贵的 SSD 写入速度为 3500 mb/s,而标准 SSD 写入速度为 500 mb/s。

我购买了一个较便宜的 m.2 SSD 来构建工作站,其写入速度约为 1800 mb/s,但容量较大,为 2 TB。你可能会觉得购买更小的 256MB m.2 SSD 更有用,因为它写入速度更快且成本更低。这的确是以更少的成本获得更好性能的好办法。唯一需要注意的是,你要确保所有训练数据都可以放在 m.2 SSD 上。

主板

  • 为了支持多 GPU,你需要足够的 PCI-E 通道。

  • 这意味着你需要 x299(英特尔 CPU)或 x399(AMD CPU)主板。

  • 你可以选择便宜一点的,但如果预算足够,可以考虑工作站(workstation)主板。

主板很难购买,因为选择太多,很多人不清楚为什么有的主板会比其它主板贵很多。对于深度学习来说,主板最重要的方面是 PCI-E 通道的数量。在我构建的工作站中,主板有 44 个 PCI-E 通道。这意味着如果有 3 个 GPU(每个需要 16 个通道),我可以在 32 个通道上运行两个 GPU(每个 GPU16 个通道),在 8 个通道上运行 1 个 GPU(总共需要 40 个通道)。大多数基准测试表明,在 8 个通道和 16 个通道上运行 GPU 的性能差异可以忽略不计,但未来差别可能会大一些。至少,确保你的主板有足够的 PCI-E 通道,能够满足每个 GPU 所需的最少数量。所以对 3 块 RTX 2080 TI GPU 来说,最少需要 24 个 PCI-E 通道。

另一个考量是选择 x299(英特尔 CPU)还是 x399(AMD CPU)主板。对每个处理线程来说,英特尔 CPU 更快,但对于相同数量的处理线程来说,AMD CPU 通常比英特尔 CPU 更便宜。我选择用英特尔处理器(20 个线程和较快的处理速度),因此需要 x299 主板。

更可靠(也更昂贵)的主板通常被称为工作站主板。可靠性的提高是否值得如此高价仍有待商榷。我在自己的构建过程中选择了工作站主板,但如果你想选择更便宜的,可以考虑 SUPERMICRO x299 主板。它满足了我的所有需求,但便宜了 100 美元。

CPU

  • 选择英特尔 X 系列(x299 主板)或 AMD ThreadRipper(x399)。

  • 对每个线程来说,英特尔 CPU 更快,但 AMD CPU 在相同的花费下支持更多线程。

通过考虑以下问题,基于你的计算需求选择 CPU:

  1. 你是否需要运行大量多线程工作?

  2. 你需要每个线程运行很快吗?

如果(1)回答「是」,而(2)回答(不需要),那么你可以用更少的成本选择支持 32 个线程的 AMD Ryzen Threadripper 2950X。如果第二个问题的答案是「需要」,那你可能想要选择英特尔 CPU。

对于英特尔 CPU,你需要选择核心的英特尔 X 系列 CPU 用于多 GPU 深度学习。只有 X 系列的 CPU 支持 x299 主板,而只有 x299 主板才具有足够的 PCI-E 通道来支持多 GPU。如果你仅使用 2 个 GPU,那么你可以减少主板+CPU 的成本,选择较便宜的 300 系列英特尔 CPU 和 LGA 1151 主板(而非 x299)。这样你就可以在 16 个 PCI-E 通道上运行一个 GPU,然后在另外 8 个通道上运行另一个 GPU(大部分 LGA 1151 主板有 24 个 PCI-E 通道,但购买的时候请仔细确认)。

机箱

  • 选择适合自己主板的机箱(ATX 是标准尺寸,mini-ATX 较小)。

  • 选择具备气流流通空间的机箱,以保持 GPU 低温。

  • Carbide Series™ Air 540 High Airflow ATX Cube Case 比较适合深度学习工作站。

对于多 GPU 工作站,气流和散热是重中之重。选择适合主板的机箱。大部分使用多 GPU 的主板是 ATX,因此你可以选择一个适合 ATX 主板的机箱。如果你不确定要买哪种机箱,Carbide Series™ Air 540 High Airflow ATX Cube Case 是不错的选择。

硬盘驱动器

如果 m.2 SSD 无法满足存储需求,购买 7200 RPM 的机械硬盘。

如果 m.2 SSD 太小,无法满足你的存储需求,你可以购买一个机械硬盘驱动器。它比较便宜,有两种速度:5400 RPM(较慢)和 7200 RPM(较快)。RPM 表示每分钟转速,这些磁盘会在计算机内进行物理旋转,所以会有噪音。不过机械硬盘驱动器比较便宜,你可以买一个 7200 RPM 的。

内存

  • 购买低间隙内存(RAM),确保它适合你的机箱。

  • 避免购买没听说过的牌子。

关于 RAM,你需要考虑它的容量、物理体积和延迟。我构建的工作站使用的是 128GB RAM,不过你可以根据数据集大小将容量减到 64GB 或 32GB。如果资金充足,我建议购买 128GB RAM,这样在训练深度学习模型时,你可以将整个数据集加载到内存中,避免每个 epoch 中出现 hard-drive <> RAM 瓶颈。

对于多 GPU 工作站,确保购买低间隙 RAM(较小机箱),间隙即 RAM 的高度。主板上要安装大量东西,有时候大机箱 RAM 会阻塞其他组件。海盗船 Vengeance 是一款不错的低间隙 RAM。

如果你不使用全部 RAM 插槽的话,记得查看主板文档。将 RAM 放进合适的插槽中很重要!主板和主板文档通常会写明放置 RAM 的位置。

PSU(电源供应器)

  • 确保你的 PSU 可以提供充足的电量。参考 PSU 计算器:https://outervision.com/power-supply-calculator

  • 每个 RTX 2080 Ti 需要大约 300W 能耗。

  • 选择全模组,因为电缆越少就意味着气流越多。

  • 我的 1300W PSU 导致最大负载时工作站会重启,1600W 比较适合该工作站。

你可能会看到 gold PSU vs. platinum PSU。这指的是 PSU 所用的金属,platinum > gold > silver > bronze > basic,它和 PSU 的效能有关。例如,同样的计算量,bronze PSU 要比 platinum PSU 消耗更多电。如果你需要考虑省电的问题(同时也环保),可以考虑购买 platinum 或 gold PSU。

至于本文介绍的工作站,我原本买的是 Seasonic PRIME 1300W PSU,但是当我进行分布式 PyTorch ImageNet/ResNet50 训练且最大化利用所有 GPU 时,工作站濒临重启状态。于是我换成了 EVGA SuperNOVA 1600 P2,这些问题解决了。注意,我使用 sudo nvidia-smi -pl 180 将 GPU 电量从 250W 降到 180W 时,1300W PSU 是可以使用的。不过我仍然推荐 1600W PSU,不然会限制 GPU 速度。

散热系统

  • 通常,不错的气流和适当的电缆管理对于 GPU 散热来说足够了。

  • 高性能(i9 X-Series)CPU 散热用海盗船 h100i 就可以了。

  • 即使如此,如果可以请将机器放在阴凉、装有空调的房间里。

从散热风扇到全系统水冷却,你有很多选择。通常,如果机箱很大且电缆管理合适,那么你不用要太多华丽的东西。我构建的工作站中,CPU 没有配备散热器,我使用的是深度学习工作站中的标准配置海盗船 h100i。更低价的选择是 Noctua NH-U9S CPU Cooler Fan。我没买它的原因是它太大了,可能会阻塞部分 RAM 插槽。如果你只需要 32 GB RAM,你可以选择这款散热风扇。

基准测试 VS 谷歌计算引擎

我对这台机器和谷歌计算引擎(GCE)深度学习虚拟机进行了基准测试对比。这些虚拟机据称是专门为优化深度学习而预构建的。GCE 深度学习虚拟机使用 CUDA 版本和基于源代码构建的驱动程序,这些程序转为其硬件架构而优化。GCE 虚拟机没有英伟达 RTX 2080 Ti GPU,所以我用 Tesla K40 来代替。根据不同的基准任务,英伟达 RTX 2080 Ti 的性能是 GPU Tesla K40 的 2 倍至 4 倍。所以为了公平起见,我将这台设备上的一个 RTX 2080 Ti 与 GCE 虚拟机上的 4 个 Tesla K40 进行了对比。

为了做基准测试,我使用了 PyTorch 的 ImageNet 分布式案例。我下载了 ImageNet 2012 训练和验证集,并在我的个人机器和 GCE 深度学习虚拟机上运行了以下代码:

python examples/imagenet/main.py -a resnet18 --lr 0.1 --dist-url 'tcp://127.0.0.1:FREEPORT' --dist-backend 'nccl' --multiprocessing-distributed --world-size 1 --rank 0 "/location/where/I/stored/imagenet/"

GCE 深度学习虚拟机规格

我创建的虚拟机规格如下:

  • 架构:64 位,x86_64

  • K40 GPU 数量:8

  • 内存:394 GB

  • RAM:172 GB

  • CPU 线程数量:24

ImageNet 训练时间基准

训练 1 个 epoch 所需时间对比:

  • 我构建的工作站上 1 个 RTX 2080 TI 训练 1 个 epoch 耗时:37.5 分钟

  • GCE 虚拟机上 4 个 Tesla K40 GPU 训练 1 个 epoch 耗时:86.3 分钟

这些值是经过 50 个 epoch 训练后平均得到的。运行的代码和上面相同,没有在任何一台机器上展开其它进程。

训练每个 epoch GCE 所需的花费

我使用的 GCE 架构并不是最具成本效应的设置,训练花费为:

4 个 Tesla K40 GPU 训练 1 个 epoch 所需花费为 12.77 美元

所以用 Tesla K40 GPU 对 ImageNet 进行 100 个 epoch 训练将花费约 1277 美元。而对于整个虚拟机来说,将花费约 21 美元/小时。

与 Lambda 的 4-GPU 工作站进行对比

我所构建的工作站旨在优化成本/性能权衡。如果你想构建与 Lambda 4-GPU 更加匹配的工作站,那么可以看一下 Lambda CEO Stephen Balaban 在 reddit 上分享的几条建议:

  • 添加一块额外的涡轮风扇式 GPU(1349 美元)

  • 加 159 美元,将另外 3 块 GPU 都升级成涡轮风扇式 GPU(共 477 美元)

  • 加一个热插拔式驱动器托架(50 美元)

  • 加 1600W PSU(107 美元)

  • 将 CPU 从 10 核升级到 12 核(189 美元)

  • 上述原本工作站需花费 6200 美元

进行以上调整后,整个工作站的总花费大约是 8372 美元,比 Lambda 工作站少大概 4000 美元。

其他

我使用的操作系统是 Ubuntu Server 18.04 LTS,我使用 TensorFlow Cuda 10.1(从源代码安装)和 PyTorch。当我长时间以最大容量使用这三块 GPU 时,我发现最上面的 GPU 出现过热降频,造成性能出现 5%-20% 的下降。这可能是双风扇 GPU 设计的缘故。如果你担心这个问题的话,推荐使用涡轮风扇式 GPU,以避免过热降频。

原文链接:http://l7.curtisnorthcutt.com/build-pro-deep-learning-workstation

工程深度学习服务器工作站硬件
41
相关数据
亚马逊机构

亚马逊(英语:Amazon.com Inc.,NASDAQ:AMZN)是一家总部位于美国西雅图的跨国电子商务企业,业务起始于线上书店,不久之后商品走向多元化。目前是全球最大的互联网线上零售商之一,也是美国《财富》杂志2016年评选的全球最大500家公司的排行榜中的第44名。

https://www.amazon.com/
相关技术
英特尔机构

英特尔是计算创新领域的全球领先厂商,致力于拓展科技疆界,让最精彩体验成为可能。英特尔创始于1968年,已拥有近半个世纪产品创新和引领市场的经验。英特尔1971年推出了世界上第一个微处理器,后来又促进了计算机和互联网的革命,改变了整个世界的进程。如今,英特尔正转型成为一家数据公司,制定了清晰的数据战略,凭借云和数据中心、物联网、存储、FPGA以及5G构成的增长良性循环,提供独到价值,驱动日益发展的智能互联世界。英特尔专注于技术创新,同时也积极支持中国的自主创新,与产业伙伴携手推动智能互联的发展。基于明确的数据战略和智能互联全栈实力,英特尔瞄准人工智能、无人驾驶、5G、精准医疗、体育等关键领域,与中国深度合作。面向未来,英特尔致力于做中国高价值合作伙伴,在新科技、新经济、新消费三个方面,着力驱动产业协同创新,为实体经济增值,促进消费升级。

https://www.intel.com/content/www/us/en/company-overview/company-overview.html
相关技术
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

SSD技术

一种计算机视觉模型。论文发表于 2015 年(Wei Liu et al.)

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

噪音技术

噪音是一个随机误差或观测变量的方差。在拟合数据的过程中,我们常见的公式$y=f(x)+\epsilon$中$\epsilon$即为噪音。 数据通常包含噪音,错误,例外或不确定性,或者不完整。 错误和噪音可能会混淆数据挖掘过程,从而导致错误模式的衍生。去除噪音是数据挖掘(data mining)或知识发现(Knowledge Discovery in Database,KDD)的一个重要步骤。

操作系统技术

操作系统(英语:operating system,缩写作 OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。

数据迁移技术

数据迁移(又称分级存储管理,hierarchical storage management,hsm)是一种将离线存储与在线存储融合的技术。它将高速、高容量的非在线存储设备作为磁盘设备的下一级设备,然后将磁盘中常用的 数据按指定的策略自动迁移到磁带库(简称带库)等二级大容量存储设备上。当需要使用这些数据时,分级存储系统会自动将这些数据从下一级存储设备调回到上一 级磁盘上。对于用户来说,上述数据迁移操作完全是透明的,只是在访问磁盘的速度上略有怠慢,而在逻辑磁盘的容量上明显感觉大大提高了。

量子计算技术

量子计算结合了过去半个世纪以来两个最大的技术变革:信息技术和量子力学。如果我们使用量子力学的规则替换二进制逻辑来计算,某些难以攻克的计算任务将得到解决。追求通用量子计算机的一个重要目标是确定当前经典计算机无法承载的最小复杂度的计算任务。该交叉点被称为「量子霸权」边界,是在通向更强大和有用的计算技术的关键一步。

推荐文章
“你可能会看到 gold PSU vs. platinum PSU。这指的是 PSU 所用的金属”。。。真的?你没骗我?