对于那些一直想进行深度学习研究的同学来说,如何选择合适的配置一直是个比较纠结的问题,既要考虑到使用的场景,又要考虑到价格等各方面因素。日前,medium上的一篇文章(http://t.cn/RYLYxXP)为我们详细描述了该如何为个人的深度学习机器选择配置,主要该进行哪些方面的考虑。以下是AI研习社的翻译:
作为一名业余爱好者,在探索和解决深度学习问题时,亚马逊 EC2 实例的运行成本太高了。在一开始,我采用的是 Reserved 实例收费模式,因为我对云生态系统不是很懂。后来,在运行结构良好的实验时,Spot 实例也成了我的选择之一。但用这种方法去启动和执行实验往往会碰到问题,我主要会在为备份和恢复数据/进程设置环境时碰到问题。很感谢 Alex Ramos 和 Slav Ivanov 提供的 Classic 和 24X7 版本的 EC2 Spotter 工具,这在使用 spot 实例时很有用。(如果你仍然使用 Spot 实例的话可以试试他们的提供的工具)
在使用亚马逊 EC2 实例大约6个月后,我意识到,长远来看,还是买一个属于自己的机器会更加便宜。买机器之后,我可以更好地控制实验,并且可能会取得比在云端更好的效果。在互联网上进行详尽的调查之后,我下定决心买属于自己的机器,然后我开始研究如何为本地深度学习来选择组件。
如何选择深度学习的组件?这真的很困扰那些刚开始实验的新手。这要求用户拥有一些关于构建系统的基本知识,以保证较高的性价比。
这篇文章试图帮助刚开始进行深度学习的读者选择机器配置,在选择产品之前帮助他们了解更多参数。
首先,你必须定下你最大需要多少块GPU,如果你经常进行机器学习研究,那你可能需要更多 GPU,这可以帮助你并行运行多个任务,你可以同时尝试不同的模型结构、数据规范化、超参数等等。
我的建议:如果你是一个普通研究员/学生/业余爱好者,可以考虑双 GPU。如果你打算运行大型的模型,并参加像 ImageNet 那样需要大量计算的竞赛,你可能需要考虑多 GPU 结构。
一旦你想清楚自己想要进行哪种研究,接下来就可以考虑需要的 PCIe 通道数了。
双 GPU(最多两块GPU):24条 PCIe 通道(当使用共享 PCle 通道的 SSD 或同时使用两块 GPU 时,可能会出现延迟)
多 GPU (最多4 块 GPU): 40到44条 PCIe 通道
为什么首先考虑 PCIe 通道?
实际情况下,在对磁盘进行访问操作或数据增加时,数据流到GPU上会出现瓶颈。一块 GPU 需要16条 PCIe 通道才能满负荷运转。
这篇文章将着重为大家介绍双 GPU 系统,下次我也将带来多 GPU 系统的介绍。
1.主板
一旦确定了 PCIe 通道的需求,接下来就可以挑选主板芯片组了:
下表给出了在不同芯片组下可用 PCIe 通道的个数:
注:理想情况下,单个 GPU 发挥最优性能需要16个 PCIe 通道。
因此,即使 B150、B250、H110、H170、H270 这样的芯片组支持英特尔处理器,它们也很少用于深度学习,因为对于深度学习应用来说,需要更多的 PCIe 通道数。因此,首选芯片组如下:
Z170 — 支持第6/7代英特尔处理器。使用第7代可能需要BIOS更新。
Z270 — 支持第6/7代英特尔处理器。
(最新的) Z370 — 支持第8代英特尔处理器。
一旦你决定了芯片组,可以利用 PC Partpicker(http://t.cn/RY9vEzX)来选择主板。
你需要注意的有:
外形规格(例如ATX,微型ATX,EATX等)
PCIe slot 数(最小2个 slot)
最大支持内存(首选 64GB)
内存 slot 数(最小4个 slot)
SSD 和 SATA slot 数(你可以考虑一下)
2.处理器
选择主板之后,因为有 socket 类型等的限制,处理器的选择范围就缩小了,CPU 的选择可能会进一步依赖于 GPU。正如前面提到的,对于深度学习应用来说,CPU 主要负责数据处理和与 GPU 的通信。因此,如果我们想在数据预处理中进行并行计算,那每个核的核数和线程数将至关重要。建议大家选择多核系统(最好是4核)来处理这些任务。
需要注意的有:
Socket 类型
核数量
费用
PS:一些处理器中可能不带散热风扇。
下面是用 PC Partpicker 选择处理器的地址:http://t.cn/RY9PAn5
当处理大数据集时,它们可能需要存储于内存中。RAM 的大小决定了内存中可以容纳的数据集的量。对于深度学习应用来说,至少选择 16G 的内存(Jeremy Howard 建议选择 32G 的内存)。Clock 越高越好,建议大家最小选择 2400 MHZ的。
要记住,让单个 stick 的内存更大!因为这可以使得剩余 slot 的扩展空间更大。我看到很多人用4*8GB的内存取代2*16GB的内存,仅仅只是因为这样价格比较便宜,但最后会导致没有升级空间。
SSD变得越来越便宜,速度也更快了,所以HDD的价格也在持续下降。
最好有一个小容量的SSD和一个大容量的HHD。SSD倾向于存储和检索被经常使用的数据。HDD则主要用来存储将来会使用的数据。
SSD ——存储使用中的数据,价格昂贵,推荐最小买 128GB 的
HDD ——存储各种用户数据,价格相对来说会便宜一点,推荐最小买 2TB,7200RPM 的
GPU 是配置用于深度学习的机器的核心,它们决定了在训练神经网络过程中获得的性能增益。深度学习中涉及的大部分计算都是矩阵运算,所以在相同的并行模式下,GPU 的表现胜过传统 CPU。GPU 内部有很多叫核的小型计算单元,单元中的线程能保证矩阵运算更加快速。GPU 的内存带宽也可以使得它支持对大量数据进行操作。
Tim Dettmers之前写过一篇关于如何选择用于深度学习的 GPU 的文章,这篇文章很有代表性,一旦有了新卡他也会更新,在选择 GPU 之前大家可以看下他的这篇文章(http://t.cn/R6sZh27)。
下面是他关于 GPU 选择的建议:
最佳 GPU 选择:Titan Xp
高效但昂贵:GTX 1080 Ti, GTX 1070, GTX 1080
高效且便宜:GTX 1060 (6GB)
要是处理的数据集在 250 GB 以上,那么你的选择最好是 GTX Titan X (Maxwell)、 NVIDIA Titan X Pascal 或 NVIDIA Titan Xp
要是资金不足,那就选择 GTX 1060 (6GB)
完全没钱:GTX 1050 Ti (4GB)
参加kaggle比赛:常规比赛选择 GTX 1060 (6GB),深度学习类型的比赛,选择GTX 1080 Ti
经常参加比赛的计算机视觉研究人员:NVIDIA Titan Xp,不需要升级现有的 Titan X (Pascal 或 Maxwell)
研究人员:GTX 1080 Ti。在进行类似于自然语言处理的任务时,也可以选择 GTX 1070 或 GTX 1080,大家可以检查下当前模型的内存需求如何。
想要构造 GPU 集群:这有点复杂,你可以复制链接参考http://t.cn/RY9PQyY
刚刚开始想要认真进行深度学习的研究:GTX 1060 (6GB)。根据你接下来选择的领域(初创公司,Kaggle,研究,深度学习应用),卖掉之前的 GTX 1060,然后购买更合适的。
抱着试一试的心态来进行深度学习研究:GTX 1050 Ti (4或2GB)
如果预算有限,强烈推荐初学者买 1060 6GB 的 GPU,新旧都可以。如果预算可以增加一点,那么建议买最近发布的 1070ti (大约430美元),它与 1080 的性能几乎一样,但价格较低(几乎与 1070 相同)。不要去买 1070,除非你有站得住脚的理由。如果你有足够的钱,那就买 1080ti。
再啰嗦一遍,如果你真的很热衷于进行研究,那么最好买2块 1070ti,而不是1块 1080ti,这将会给你带来极大的灵活性。