文章翻译自:
Which GPU(s) to Get for Deep Learning(http://t.cn/R6sZh27)
深度学习是一个计算需求强烈的领域,GPU的选择将从根本上决定你的深度学习研究过程体验。在没有GPU的情况下,等待一个实验完成往往需要很长时间,可能是运行一天,几天,几个月或更长的时间。因此,选择一个好的,合适的GPU,研究人员可以快速开始迭代深度学习网络,几个月的实验可以在几天之内跑完,几天的实验可以在几个小时之内跑完。因此,在购买GPU时,正确的选择至关重要。那么应该如何选择适合的GPU呢?今天我们将深入探讨这个问题,并会给出一些合适的建议,帮助你做出适合的选择。
拥有高速GPU是开始学习深度学习的一个非常重要的方面,因为这可以帮助你快速获得实践经验,这是搭建专业知识的关键,有足够的时间将深度学习应用于解决新问题。如果没有这种快速的反馈,就需要花费太多的时间从错误中学习。因此,今天就谈谈如何选择一款合适的GPU来进行深度学习的研究。
首先给出一些总体的建议
较好的GPU整体(小幅度):Titan Xp
综合性价比高,但略贵:GTX 1080 Ti,GTX 1070,GTX 1080
性价比还不错且便宜:GTX 1060(6GB)
当使用数据集> 250GB: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集群:这个优点复杂,另做探讨。
刚开始进行深度学习研究:从GTX 1060(6GB)开始。根据你下一步兴趣(入门,Kaggle比赛,研究,应用深度学习)等等,在进行选择。目前,GTX 1060更合适。
想尝试下深度学习,但没有过多要求:GTX 1050 ti(4或2GB)
应该选择什么样的GPU?NVIDIA GPU,AMD GPU或Intel Xeon Phi?
NVIDIA的标准库使得基于CUDA来建立第一个深度学习库变得非常容易,而AMD的OpenCL则没有这样强大的标准库。现在,AMD卡没有像这样好的深度学习库,所以就只有NVIDIA。即使未来有一些OpenCL库可能也可用,但我也会坚持使用NVIDIA,因为GPU计算能力或GPGPU社区非常强大,可以持续促进CUDA的发展,而OpenCL则相对有限。因此,在CUDA社区中,很容易获得不错的开源解决方案和可靠的建议。
此外,即使深度学习刚刚起步,NVIDIA仍然在持续深入的发展。这个选择得到了回报。而其他公司现在把钱和精力放在深度学习上,由于起步较晚,现在还是相对落后。目前,除NVIDIA-CUDA之外,其他很多软硬件结合的深度学习方案都会遇到或多或少的问题。
至于英特尔的Xeon Phi处理方案,官方广告宣称编程者可以使用标准的C代码进行开发,并很容易将代码轻松转换为经过加速的Xeon Phi代码。这个特性听起来很有趣,因为我们可以依靠丰富的C代码资源。但是,实际上只有很小部分的C代码是被支持的,所以这个特性目前并不是很有用,而且能够运行的大部分C代码都很慢。
给定预算下如何选择最快的GPU
在选择GPU时,首先要考虑的第一个GPU性能问题是什么呢:是否为cuda核心?时钟速度多大?内存大小多少?
这些都不是,对于深度学习性能而言,最重要的特征是内存带宽(memory bandwidth)。
简而言之:GPU针对内存带宽进行了优化,但同时牺牲了内存访问时间(延迟)。CPU的设计恰恰相反:如果涉及少量内存(例如几个数字相乘(3 * 6 * 9)),CPU可以快速计算,但是对于大量内存(如矩阵乘法(A * B * C)则很慢。由于内存带宽的限制,当涉及大量内存的问题时,GPU快速计算的优势往往会受到限制。当然,GPU和CPU之间还有更复杂的区别,关于为何GPU如此适用于处理深度学习问题,另做探讨。
所以如果你想购买一个快速的GPU,首先要关注的是GPU的带宽(bandwidth)。
通过内存带宽评估GPU的性能
随着时间的变化,CPU和GPU的带宽比较:带宽是GPU比CPU更快的主要原因之一。
带宽可以直接在芯片的体系结构上进行比较,例如像GTX 1080和GTX 1070这样的Pascal卡,其性能可以直接通过单独查看内存带宽进行比较。例如,GTX 1080(320GB / s)比GTX 1070(256 GB / s)快25%(320/256)。然而,不同的结构,例如像GTX 1080与GTX Titan X之类的Pascal与Maxwell不能直接比较,因为不同制造工艺(以纳米为单位),导致不同的架构对于如何利用给定的内存带宽的方式不同。这使得一切都有点棘手,但仅仅基于整体带宽就能让我们很好地评价GPU的速度到底有多快。为了确定在一个给定的条件下,一款GPU最快能多快,可以查看这个维基百科页面,以GB / s为单位查看带宽;这里列出的关于这些新卡(900和1000系列)的价格是相当准确,但较旧的卡明显比较便宜 - 特别是如果你通过eBay购买这些卡。例如,一个普通的GTX Titan X在eBay上的售价约为550美元。
另一个需要考虑的重要因素是,并不是所有的架构都与cuDNN兼容。由于几乎所有深度学习库都使用cuDNN进行卷积运算,这就限制GPU的选择只能是Kepler GPU或更高的版本,即GTX 600系列或更高版本。最重要的是,Kepler GPU一般都很慢。所以这意味着应该选择GTX 900或1000系列的GPU,以获得更好的性能。
为了粗略地估计一下这些卡在深度学习任务上的表现,我构建了一个简单的GPU等值图。如何阅读这个?例如,一个GTX 980与0.35 Titan X Pascal一样快,或者换句话说,Titan X Pascal几乎是GTX 980的三倍。
请注意,我自己并没有所有的这些卡,我并没有在所有这些卡上运行然后得到深度学习的benchemarks。比较的结果通过卡片规格以及一些可得到的计算benchmarks(一些用于加密货币挖掘的情况,这一性能在深度学习相关的计算能力上是可比较的)得出的。所以这些结果粗略的估计。实际的数字可能会有所不同,但通常错误应该是比较小的,卡的顺序应该是正确的。另外请注意,那些不足以充分利用GPU性能的小型网络会让GPU的性能看上去不好。例如,GTX 1080 Ti上的小型LSTM(128个隐藏单元;批量大小> 64)不会比在GTX 1070上运行速度快很多。为了获得图下表中显示的性能差异,需要运行更大的网络,比如具有1024个隐单元的LSTM(批量大小> 64)。
GPU之间粗略的性能比较。此比较建立于充分利用GPU性能情况下。
性价比分析
基于上面绘制的性能比较图,除以它们对应的价格,得到下图的基于成本的排名,越长代表性价比越高,该图某种程度上反映了不同卡之间的性价比差异。
成本效益对比图。请注意,这个数字在很多方面都有偏差,例如它没有考虑到内存。
但请注意,这种对GPU排名的衡量标准考虑并不全面。首先,没有考虑GPU的内存大小。从上面的图看,GTX 1050 Ti性价比较高,但当实际应用中你说需要的内存超过了1050 Ti所能提供的内存时,也不能用。类似地,使用4个小的GPU比仅使用1个大得GPU要复杂的多,因此小型GPU也有很多不足之处。此外,不能通过购买16 GTX 1050 Ti来获得4 GTX 1080 Ti的性能,因为还需要购买3台额外的昂贵的电脑。如果考虑这最后一点,即GPU的内存大小,得到下图所示性价比分析图。
综合考虑其他硬件的价格(比如搭载GPU的电脑价格),对GPU的性价比进行标准化。在这里,比较了一台完整的机器,包含4个GPU,配置价值约1500美元的其他高端硬件(CPU,主板等)条件下。
因此,在这种情况下,如果您想要购买更多的GPU,毫无疑问,内存越大的GPU性价比越高,因为相同内存需求条件下,不需要买更多的机器。但是,这种对GPU选择方法仍然存在缺陷。如果你预算金额有限,没有办法无法负担4 GTX 1080 Ti机器的价格,这种对比就毫无意义。因此,实际情况是,基于你有限的预算下,你可以购买到的哪种系统性能是较好的?同时,你还必须处理其他问题,例如:每天使用此GPU的时间有多长?想在几年内升级GPU或整个计算机?想在未来多长一段时间内卖掉当前的GPU,并购买新的更好的GPU?等等
所以你可以看到,做出正确的选择并不容易。但是,如果你对所有这些问题平衡的看待,就会得出类似于以下的这些结论。
一般的GPU选择建议
一般来说,我会推荐GTX 1080 Ti,GTX 1080或GTX 1070.他们都是优秀的显卡,如果你有钱,应该购买GTX 1080 Ti。GTX 1070比普通的GTX Titan X(Maxwell)便宜一些。GTX 1080的性价比比GTX 1070低一些,但是自GTX 1080 Ti推出以来,价格大幅下滑,现在GTX 1080的性价比已经能够与GTX 1070比拟。所有这三款显卡应该比GTX 980 Ti要好,因为它们具有11GB和8GB(而不是6GB)的内存。
8GB的内存可能看起来有点小,但是对于许多任务来说这已经足够了。例如对于Kaggle比赛,大多数图像数据,deep style和自然语言理解任务,这些你可能会遇到几个问题。
对于入门级的人来或是偶尔想用GPU来参加类似Kaggle比赛的人,GTX 1060是一个不错的选择。我不推荐内存只有3GB的GTX 1060 variant产品,因为6G的内存就已经很有限了。但是,对于许多应用来说,6GB就足够了。GTX 1060比普通的Titan X慢,但与GTX 980具有可比的性价比。
就综合性价比而言,10系列设计得非常好。GTX 1050 Ti,GTX 1060,GTX 1070,GTX 1080和GTX 1080 Ti都非常出色。GTX 1060和GTX 1050 Ti适用于初学者,GTX 1070和GTX 1080是适合于初创公司,部分研究和工业部门,而性能突出的GTX 1080 Ti,对于以上应用都合适。