求问,做深度学习用什么显卡

深度学习小钢炮攒机心得:规避一些你看不到的坑 - 简书
深度学习小钢炮攒机心得:规避一些你看不到的坑
———————————————————已经2017年了,从90年代初的品牌机流行,90年代末的组装机流行,桌面级逐渐被移动PC/Mac取代,一直到现在移动终端大行其道,攒机似乎已经走过一个完整的生命周期。而因为2008年老黄开始攒GPGPU的大招,一直到2014年开始深度学习的逐渐兴起,台式家用机开始扮演起另外的角色:家用作坊小钢炮。一直在掉坑的我在此拿出一些心得,与大家分享。———————————————————-1 显卡篇首先要说明一点,在家搞深度学习不是在云端部署用于深度学习的卡那样,所以NVidia的Tesla系列主打单精度的计算显卡、Quadro系列双精度计算卡固然好,但是性价比实际不堪一击,具体可以参考:深度学习是一种概率推断工具,常见于人工智能应用(图像视频识别、语音识别、文本处理、自动对话等),这跟发射火箭需要高精度计算以及纠错(ECC)不一样,一个深度神经网络对单个参数精度的依赖其实很低,不需要双精度计算能力,因此能看到Tesla系列的显卡和此处的10x0系列游戏卡一样,都是设计成为极高的单精度计算能力和极低的双精度计算能力的。所以在生产设计之初这些卡就注定是为了深度学习而生的。实际上,如果你主要跑的是LSTM这种结构的应用(比如文本、语音、OCR),参数比较少的时候,1060的6GB显存已经足够,当然它的算力有些乏善可陈了(3.8T/睿频4.4T)。如果你只跑CV的训练,如大规模残差网络(在公司一个152层的ResNet,数据并行,直接每张卡吃了7G显存,可以8卡并行获得一个可观的加速比),如果你的公司不提供算力,你也不喜欢直接在云平台上花钱训练的化,那么可能一个大显存的Titan X Pascal (12GB)更适合你。就比较中庸,这个根据个人的兴趣和钱包综合选择即可。有人想要问了,我有钱,还是想买个人用的M系列(M40,M60)、P系列(P100)等显卡,而且想多卡并行,该怎么办?这个已经脱离个人家用作坊的定义了,价格从几十万到一百万不等,建议还是直接找NVidia原厂、华硕等能提供质保的大厂提供销售服务。还有人问,我很有钱,还是想买双卡GPU做训练,这个问题已经牵涉到主板的选择,我们放到后面再讨论,但可以先说结论:强行上双卡,会极大的拉低整机性价比,而且最终训练效果的提升未必如你想象的那么好。如果你还要说『我不听我不听』,那请看完本篇。2 内存/存储篇很多人会觉得,存储跟深度学习有个毛关系?我们先来看一下一个优化得不好的深度学习训练任务数据pipeline长什么样子:准备阶段:定义Symbol和图结构数据训练阶段:for i in num_of_epoch:
for k in num_of_iter:
for j in num_of_batch_size:
数据生成/爬取(网络I/O, CPU速度, L3 Cache/内存)
数据清洗(CPU速度,内存)
数据缓存/保存(内存大小,存储I/O)
数据加载进图(内存大小,存储I/O,PCI-E带宽,GPU显存)
根据图Backward一轮(GPU速度)
Forward一轮给出当前iter预测(GPU速度)
根据预测给出当前iter训练集精度(CPU速度,BLAS指令集优化)
Forward一轮给出当前epoch在测试集预测(GPU速度)
根据预测给出当前epoch在测试集的精度(CPU速度,BLAS指令集优化)
保存模型中间点(存储I/O)除了更多的把走网络I/O的步骤移动到准备阶段是一个很明显的优化点以外,你会发现,一旦作为数据缓存的内存容量不够大,你的物理存储I/O马上就会成为下一个瓶颈。尤其图片一般来说还都是小文件,而固态硬盘(SSD)对小文件的优化比机械硬盘8~9ms随机寻道一次的速度不知道超越了几个数量级,如果你真的优化不了数据训练阶段的数据结构,无法把它做成缓存,或者保证它能够连续读取,那你为什么不花多一点的钱提高这个物理存储IOPS的随机寻道性能呢?我的方案是Samsung 960 Pro M.2 256G 作为系统盘【找图】Intel 750 PCI-E 1.2T作为副盘【找图】WD紫色监控盘2T作为数据盘,主打监控(大数据流,大文件读写)功能【找图】。因为M.2接口和PCI-E接口都占用PCI-E通道,稍后在主板阶段我会介绍一下这里面的坑。3 内存篇内存应该是一个题外话,真要买的话,闭着眼睛买个16GB*2的套装可以适应大部分主流的主板,(小主板只有2个内存槽,而大主板的话你可以把内存插到同色槽位,)所以我们就开一个小差聊聊内存的DDR标准。现在新装机的平台,以X99,Z170为例,用的普遍都是DDR4的内存,老一些的机器老树开新花用的有DDR3的内存。假设你的数据较小,数据都能加载到内存种,那究竟什么是影响内存存取速度的关键因素呢?一个就是DDR内存的工作频率,而另一个和工作频率此消彼长的是DDR内存的时序(DDR Timing),这是一个内存存取的延迟指标。工作频率的倒数,就是一个内存工作时钟周期的时间长度。可以看到,图中的这个『8-8-8-24』分别代表CL:CAS Latency,Column Access Strobe (CAS) latency,从系统发送命令到内存开始到读写特定列所消耗的时钟周期数。时间。也就是说,如果我们已经指定了我们要从某一行读内存,但我们要从这一行里取多个数值,每次读写数值的时候这个CL是无可避免要消耗掉的。tRCD:RAS to CAS Delay,激活内存中的一行后(激活动作)到读写动作(READ/WRITE)所需要消耗的时间。如果我们是在同一行进行读写的话,不需要重新激活行的情况下,tRCD的时间只需要消耗一次。tRP:Row Precharge Time。有的时候我们需要取消一行的激活,再去激活另一行以读取数据,这一部分需要对内存行进行充电,这个时间的损耗就是tRP。tRAS:Row Active Time。在激活一行的命令到预充电命令前的准备时间。可以看到这个时钟周期就比较大了。假设我们有一个很大的1维的数组和一堆很小的1维数组,如果前者安排在了连续空间里,那么tRCD、tRP、tRAS的损耗就小,否则tRCD/tRP/tRAS的时间损耗就比较大,这些都是overhead。一个好的BLAS不仅能够利用好的指令集高速计算出我们需要的结果,同时对于底层C代码对内存的管理应该也有一个较清楚的认识。最后还是告诫大家,不要迷信高主频的内存,如果你工作在1600MHz的内存CL=8,每次取出一个数据的时间和工作在2000MHz@CL=10,2400MHz@CL=12的内存就是一个速度,根本起不到超频提速的作用。对于给内存超频的狂热玩家经常能发现,超频之后为了保证内存工作稳定只能调高CL,这不是跟没超频一样吗?又能超频,又能保证低CL的内存一般都是大厂某一批次品质特别好的产品,而如果品质比较均匀的话,人家自己不会标一个更高的参数来卖吗?只有品质不均匀的产品你才有机会通过超频或者降低CL来发现自己买到了超值的内存。要说我的经验的话,我对超频已经不感冒了,一般只会看DDR4(不能插在只支持DDR3的主板上,反之亦然)的频率和CL,买回来直接默认使用。4 FPGA篇【找一个Xilinx的广告图】【找一个Altera的广告图】【找一个Intel的广告图】在Intel收购FPGA两大巨头之一的Altera之后,现在我们在FPGA市场上就有个新的双雄:Xilinx和Intel。前一阵子我还在婊Xilinx长期做视频采集产品,对深度学习嗅觉太差,听说百度用的是Xilinx的方案,我们就来看一下国内拿FPGA做深度学习的厂子,有的自己做基础设施,有的卖产品,有的搭载云服务,各有侧重,今天就不赘述了,因为有人会问了,『你说的这个FPGA,我怎么没听说过啊。』是的,就像你5年前不知道NVidia做GPGPU卡已经如火如荼一样自然,因为它已经改变了行业生态,却还没有改变人类的生活,不做技术也不做技术公司投资的你,嗅觉不够灵敏是很自然的事情。【找一个FPGA板卡的图】如果说我们的CPU、GPU是依靠着定长流水线+接受高级指令+转化低级指令+计算实现『通用计算的话』,FPGA(Field-Programmable Gate Array)就是一个灵活性不算高,但是用可编程门阵列实现指令、算力也不低的这样一种方案,它的灵活性介于CPU/GPU和ASIC之间。好吧,又是一个新名词,ASIC?Application-specific integrated circuit,专用集成电路,常见于只做SHA256一个任务的比特币矿机。因为每次改变计算任务或者网络结构都要重新『烧』一次FPGA,我们还不如用FPGA来充当『训练好的模型对外提供深度学习预测』这样一个角色。GPU训练,FPGA预测。All good.小钢炮的FPGA板卡采用了杭州加速云的FPGA解决方案,使用了Intel Atera Arria 10,算力9.2T,单价2万左右,和搜狗、讯飞、腾讯都有合作的这么一家初创公司。5 平台篇:CPU/主板芯片组/主板板型因为对CPU的需求不高,这次的小钢炮我买了廉价的Z170MX(3PCI-E插口版本)+i5作为方案。如果你觉得对CPU矩阵计算的要求也比较高(比如一些单次矩阵计算的任务,不适合拿进GPU算了一次再拿出来),建议使用X99+E5-2679v4(ES,QS等非盒装产品)这样的组合,经某些土豪实测,E5不仅跟Intel MKL 这个BLAS更搭配,而且2679也拥有牛逼的L3 Cache和性价比。现在要聊聊坑爹的主板芯片组了,自从Intel在05年把NVidia的芯片组排挤出市场之后,就开始了它的邪恶计划:拼命的把一些增强功能压到最底。比如,Z170芯片组全系列最大PCI-E通道只有20,这说明什么?如果我要同时用1080显卡,M.2 SSD 以及PCI-E SSD,PCI-E FPGA,那么全部在工作的它们一定不会满速度I/O,何其可恶。如果你要用更好的显卡,你的钞票就开始熊熊燃烧了。购买一个合理的搭配真是太难了。板型我挑选的是半大不小的M-ATX板型。ATX&M-ATX&ITX,主板的大小基本就这三种,购买的时候注意和机箱搭配即可。一般ITX板型很难有3个以上的PCI-E插槽和2个以上的内存插槽,这也是它的局限性之一,你要它小巧,就不能指望它功能强大。再说说双显卡方案,我刚才已经说了,如果你想用双卡的方案,一定还是要挑选PCI-E通道数较多的主板,比如X99芯片组的微星X99 SLI。它拥有28Lane,尽管这个仍然不能满足我的需求,但是至少,如果我只用1个PCI-E SSD的话,那么我的显存I/O还能工作在一个16x,一个8x的速度上。如果我一直在处理PCI-E I/O密集型的计算任务,这种提升也算是聊胜于无吧。一般双显卡会要求更大的机箱、更大的主板板型、更好的散热,这些可能不会带来成本的提升,但是你不要忘了最重要的一点:你很可能需要一个功率更大的、转化效率更高的电源。对于Pascal这一代显卡来说,多插一块1080带来额外的200W功率的需求,也不是特别难选,但电源的成本可能会上升三四百。6 组装篇呸,应该叫配置环境篇啦。组装这种事情还有大大小小的坑,可以使用京东装机服务、门店的装机服务,女生的话可以考虑计算机系和电子系好人男同学的服务。(泥垢)CentOS 7 + GCC 4.8.5 + OpenCV 2.4.9.1 + CUDA 7.5 + CUDNN 5Ubuntu16.04.1 + GCC 5.4.1 + OpenCV 3.2 + CUDA 8.0 + CUDNN 5.1这两个版本工作的还是比较稳定的,如果非要说不稳定,那么我要甩锅给OpenCV好了。(我用OpenCV生成样例数据的时候遇到Core Dump的几率极高,只能写一个防止卡死、防止Core Dump的wrapper脚本来重启生成数据的脚本。)最后还是要建议大家,量力而为、量力而行、量力而买买买。转载请注明出处。
(两年前的文章)原作者没有署名,在此标明转载文章,源自QQ空间日志,侵删 1:主板故障 2:显卡故障 3:声卡故障 4:硬盘故障 5:内存故障 6:光驱故障 7:鼠标故障 8: 键盘故障 9:MODEM故障 10:打印机故障 11:显示器故障 12:刻录机故障 13:扫描仪...
最近为公司搭建了一台实验用的深度学习主机,在网络上参考了大量的资料,给出了目前最好的配置。本文首先会介绍所有硬件的选择分析,然后介绍深度学习环境搭建流程,最后给出一些简单的性能对比测试。 本文方案定位:适用于预算在5万内,用于深度学习模型研究、开发,需要快速建模验证调参的企...
配置深度学习主机与环境(TensorFlow+1080Ti): (一)硬件选购与主机组装 (二)Win10&Ubuntu双系统与显卡驱动安装 (三)CUDA与CUDNN安装 (四)基于Anaconda的TensorFlow安装 一. 硬件选购 研究需求,遂组装一台全新的计算...
鲁大师检测 详细报表 --------[ 鲁大师 ]-------------------------------------------------------------------------------- 软件:
鲁大师 5.15.16.12...
有时候实在懒得看太多品牌,一件一件去对比,还要关注价格趋势啥的,所以纵览各种贴吧论坛,搬运一些dalao的推荐配置。 同理,只针对于游戏玩家。设计师和无需求的不管。 本文食用攻略和注意事项 照着买就行了,别纠结。 不再推荐任何可能会翻车的配件,但是昂达1050Ti这种爵士乞...
《解密》于我似乎不像一部小说,更像是一段长达十余年的历史!十余年已不是一个时间概念,而是一段光阴,一部人生。 知道《解密》是他的作者麦家在《开讲了》提到的。他说自己用了11年的时间才完成这部作品,这本书几乎是他青春的全部,他命运的一部分,是他本色的苦乐,也是他不灭的记忆! ...
UITableview UITableview是iOS软件中最常见的视图,用来以表格的形式显示数据。 数据源方法 代理方法 根据cell获得对应的indexPath UITableView Spinner 顶部加载时显示的小圆圈动画 模型改变,刷新表格 Universal ...
01 最近大热的电视剧《我的前半生》,虽然刚播出了八集,但每看一集,都会发人深思,剧中的35岁的女主罗子君听信了老公“你负责貌美如花,我负责赚钱养家”的鬼话,从此当上了只会买买买的全职太太,失去了野心,只需要想方设法地讨好身边这个男人。 但日复一日的原地踏步,终究抵不过办公...
昨天晚上是凌晨三点睡的觉,不为别的,只为写字。 今天是来到简书写字的第十天,自己写的动西事实上都是类似日记这样的随笔,我觉得称之为写都有点惭,其实就是自己的的的一些闲言碎语,昨天晚上写的,是前几天就想写的一件事,因为白天上班,所以就一直没有写。 昨晚儿子睡得很早,就想起写了...
放寒假的这些天,一直头疼于宝宝的调皮不听话,然而,哪里真是宝宝调皮不听话,是我这个当妈的不够聪明勤快,每天让宝宝很无聊,所以他只好挖空心思跟我作对。昨天我们就过得非常充实开心,妈妈给两个宝宝开了画画课,舞蹈课,英语课,读书课和才艺表演课。接下来我们展示一下画画课的成...求问,做深度学习用什么显卡【笔记本吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:2,207,181贴子:
求问,做深度学习用什么显卡收藏
据说深度学习显卡是用于计算的?请问用什么卡比较好。。。性价比高的,不要太贵 买不起
双旦狂想曲联终有惊喜{联想笔记本},企业办公套餐1折秒,注册即送售后服务,IT资产管理免费申请,2018企业IT规划免费订制,大咖在线直播,会员秒杀福利.
显卡?p6000
不存在性价比高不太贵的计算卡
泰坦或特斯拉最新版
这个东西不是有多少钱干多少事吗。。。
英伟达有专门做机器学习的开发板
先存个几万块,就那么几张计算卡,有多少钱买多少钱的
登录百度帐号推荐应用本文來源地址:/news/201705/uo3MgYrFxgdyTRGR.html
与“传统” AI 算法相比,深度学习(DL)的计算性能要求,可以说完全在另一个量级上。
而 GPU 的选择,会在根本上决定你的深度学习体验。那么,对于一名 DL 开发者,应该怎么选择合适的 GPU 呢?这篇文章将深入讨论这个问题,聊聊有无必要入手英特尔协处理器 Xeon Phi,并将各主流显卡的性能、性价比制成一目了然的对比图,供大家参考。
先来谈谈选择 GPU 对研究深度学习的意义。更快的 GPU,能帮助新人更快地积累实践经验、更快地掌握技术要领,并把这些应用于新的任务。没有快速的反馈,从错误中学习要花费太高的时间成本,学习深度学习便很可能变成一个令人反胃、进而望而生畏的经历。
是否需要多卡?
出于最初的激动,我走上了多卡交火的不归路——用 40Gbit/s 的 InfiniBand 桥接器连接,我搭建了一个迷你 GPU “集群”,万分激动地试验多卡是否能有更好的表现。
但很快我就发现,让神经网络在多卡上高效地并行处理,其实是一件挺不容易的事。尤其是对于更密集的神经网络,性能的提升可以用一句“不过如此”来形容。通过数据并行化,小型神经网络倒可以很高效地并行处理,但大型的就不行了。比如 Kaggle 竞赛“Partly Sunny with a Chance of Hashtags”,我用深度学习方法拿下了第二名,多卡就基本没有加速效果。
这之后,我继续探索如何在多卡环境玩深度学习。
我开发了一个全新的 8 bit 压缩技术,其模型并行化比起 32 bit 方法要高效得多,尤其是密集或全连接层。但我同时发现,并行化可以让你极度失望——我幼稚地针对一系列问题优化了并行算法,结果发现,即便有优化的特制代码,多 GPU 的并行化仍然效果一般,尤其考虑到投入的大量精力。
在搞并行化之前,你必须要非常了解你的硬件,以及它与深度学习算法的相互支持程度,来估计是否能从并行化获益。
这是我的 PC。你看到的是三块泰坦以及 InfiniBand 桥接卡。但这个配置适合深度学习吗?
从那时起,对 GPU 并行的支持越来越常见,但离普及还差得远,更不要提高效地运行。到目前为止,唯一一个能在多卡、多机环境实现高效算法的深度学习框架,是 CNTK。它利用了微软特制的具有 1 bit 量化(高效)和 block momentum(非常高效)的并行化算法。
如果在 96 卡 GPU 集群上运行 CNTK,线性速度预计可达到 90 到 95 倍。PyTorch 或许会是另一个能高效地支持多机并行化的框架,但暂时还没到位。如果你在一台设备上搞并行化,你的选择基本就是 CNTK、Torch 或者 PyTorch。这些框架有不错的加速表现(3.6-3.8 倍),对于一机四卡(最多)有预定义的算法。其他支持并行化的库和框架也存在,但它们要么很慢(比如 TensorFlow,只有两到三倍的加速);要么对于在多卡环境很难用(比如 Theano);再要么两个缺点都有。
如果并行化对你很重要,我推荐你用 Pytorch 或 CNTK。
多卡,但不搞并行
多卡的另一个优势是,即便你不对算法做并行化,还可以同时跑多个算法、实验——每个算法在在一个 GPU 上单独运行。你不会获得任何加速,但同时使用不同算法或参数,你会得到更多关于效果表现的信息。如若你的主要目标是尽快积累深度学习经验,这是非常有用处的。对于需要对一个新算法的不同版本做实验的研究人员,这也相当有用。
这是多卡在心理上的价值。处理一个任务与获得结果反馈之间的时间越短,大脑把相关记忆碎片组织起来、建立起该任务知识图的效果就越好。如果数据集不大,你在两块 GPU 上用这些数据同时训练两个卷积网络,你会很快就会知道“一切顺利”的感觉有多好。你会更快地发现交叉验证误差,并做合理解释。你能发现一些线索,让你知道需要添加、移除或调整哪些参数或层。
总的来讲,你可以说对于几乎所有任务,一块 GPU 基本就够了。但用多卡来加速深度学习模型,正在变得越来越重要。如果你的目标是快速入门深度学习,多块便宜的显卡也是不错的。就我个人而言,我更倾向选择多块弱一点的 GPU,而不是一块核弹,对于研究实验也是如此。
应该选哪家的加速器——英伟达 GPU,AMD GPU,还是英特尔 Xeon Phi?
英伟达的标准算法库,使得在 CUDA 中建立第一批深度学习库非常简单。但对于 AMD OpenCL,这样的强大标准库并不存在。现实是,现在 A 卡并没有好用的深度学习库——所以一般人只能选 N 卡。即便将来有了 OpenCL 库,我仍会接着用 N 卡。原因很简单:GPU 通用计算,或者说 GPGPU 的社群基本上是围绕着 CUDA 转的,而没有多少人钻研 OpenCL。因此,在 CUDA 社区,你可以立刻获得好的开源方案和代码建议。
另外,对于深度学习,即便这项技术及其产业尚在襁褓之中,英伟达可谓是全面出击。老黄的投入并没有白费。那些现在才投入资金、精力,想要赶上深度学习风口的公司,由于起步晚,离英伟达的距离有老大一截。当前,使用任何除 NVIDIA-CUDA 之外的软硬件组合玩深度学习,简直是故意跟自己过不去。
至于英特尔 Xeon Phi,官方宣传是你能用标准的 C 语言代码,并轻松把代码转化为加速的 Xeon Phi 代码。该功能听着不错——你也许会想着可以借助海量的 C 语言资源。但实际情况是,只有非常少数的 C 语言代码有支持,而且大部分能用的 C 代码会非常非常的慢。因此,它其实比较鸡肋。
我曾在一个 Xeon Phi 集群工作站搞研究,这期间的经历不忍回想,一把辛酸泪:
我无法运行单位测试,因为 Xeon Phi MKL 和 Python Numpy 不兼容;我不得不重构大部分的代码,因为 Xeon Phi 编译器无法对模板做恰当的 reduction,比如说对 switch statement;我不得不修改 C 界面,因为 Xeon Phi 编译器不支持一些 C++11 功能。
所有这些迫使我在心酸沮丧中重写代码,并且没有单位测试。这过程极度漫长,堪称地狱般的经历。
直到我的代码终于成功执行,但所有东西速度都很慢。有一些问题,搞不清是 bug 还是线程调度程序的原因,总之如果张量大小接连发生改变,性能就会大幅降低。举个例子,如果你有大小不同的全连接层或 dropout 层,Xeon Phi 比 CPU 还要慢。我在独立矩阵乘法上重现了这个问题,并发给英特尔,但没有回音。
所以,如果你真想搞深度学习,离 Xeon Phi 越远越好。
预算有限,怎么挑 GPU?
想到为深度学习挑选 GPU,你脑子里冒出来的第一个问题大概是:最重要的性能参数是什么?Cuda 核心数目?频率?显存大小?
对深度学习性能影响最大的参数是显存带宽。
简单来讲,GPU 为显存带宽而优化,为此牺牲了显存读取时间,即延迟。而 CPU 恰恰与此相反——如果只涉及少量内存,它能非常快速地做计算,比如个位数之间的乘法(3*6*9)。但是对于大量内存之上的运作,比如矩阵乘法(A*B*C),CPU 是非常慢的。由于高显存带宽,GPU 就很擅长处理这类问题。当然,CPU 与 GPU 之间有的是微妙细致的区别,这只是非常重要的一个。
因此,如果你想要买一个玩深度学习快的 GPU,首先要看显存带宽。
从显存带宽评估 GPU
近几年 CPU、GPU 的带宽对比
同一代架构内,GPU 的带宽可以直接比较。比如 Pascal GTX 1080 vs. GTX 1070。单独看显存带宽就可以直接判断它们在深度学习上的性能差距:GTX GB/s) 比 GTX
GB/s) 带宽快 25%,实际情况大约如是。
但不同架构之间,比如 Pascal GTX 1080 vs. Maxwell GTX Titan X,带宽并不能直接比较。这是由于不同的制造工艺对显存带宽的使用情况不同。这使得 GPU 之间的对比会稍嫌棘手。但即便如此,仅仅看带宽还是能大致估出 GPU 的深度学习速度。
另一个需要考虑的因素,是与 cuDNN 的兼容性。并不是所有 GPU 架构都提供支持。几乎所有的深度学习库都借助 cuDNN 进行卷积运算,这会把 GPU 的选项限制到 Kepler 开普勒或之后的架构,即 GTX 600 系列或更新。另外,Kepler GPU 大多很慢。因此,你应该选择 GTX 900 或 1000 系的 GPU 获得理想性能。
为了对每块显卡在深度学习上的性能差异,给大家一个大致估计,我创建了一个简单的条形图。读这张图的姿势很简单。比如说,一个 GTX 980 的速度大约是 0.35 个 Titan X Pascal;或者,一个 Titan X Pascal 几乎比 GTX 980 快三倍。
雷锋网提醒,我自己并没有所有这些显卡,我也并没有在每张显卡上做深度学习跑分评测。这些性能对比,是从显卡参数以及计算评测(与深度学习同一级别的计算任务,比如密码挖掘)中获得。因此,这些只是大略估计。真实数字会有一点变化,但误差应该是极小的,并不会影响排序。
另外需要注意的是,对 GPU 性能利用不足的小型神经网络,会让性能更强的 GPU 在对比中吃亏。比如说,在 GTX 1080 Ti 上跑一个小型 LSTM(128 隐层; batch size & 64),并不会比在 GTX 1070 上快很多。得到下图中的数字,你需要跑更大的神经网络,比如 1024 个隐层的 LSTM(batch size & 64)。
GPU 粗略性能对比
性价比分析
如果我们把上图中的显卡性能除以价格,就得到了每张卡的性价比指数,便是下图。它在一定程度上反映出我们的装机推荐。
性价比对比
新卡的价格来自美亚,旧卡来自 eBay。雷锋网(公众号:雷锋网)提醒,该图的数字在很多方面都有些些微偏颇。首先,它没有考虑显存大小。通常情况下,你需要比 GTX 1050 Ti 更大的显存来玩深度学习。因此,榜上靠前的部分显卡虽然性价比很高,但是并不实用。
同样的,用四个小 GPU 比用一个大 GPU 要困难得多,因此小 GPU 出于劣势。另外,买 16 个 GTX 1050 Ti 不可能得到四个 GTX 1080 Ti 的性能,你还需要另外买 3 个 PC。如果我们把这一点也考虑进去,上图看上去应该是这样的:
这幅修正过的 GPU 性价比条形图,把其他 PC 硬件的成本也纳入考虑——把可兼容 4 GPU 的高端 PC 平台的成本,定为 $1500。该情况下,如果你想要买许多 GPU,不出意料的,更高端的 GPU 会占优势,因为 PC 平台+ 显卡的整体性价比更高。
但其实,这还是有所偏颇的。不管四个 GTX 1080 Ti 性价比有多高,对普通人而言,这并没有意义——因为买不起。因此,开发者真正感兴趣的应是有限预算里的性价比。针对你的预算,最佳系统选项是什么?你还需要考虑一些其它问题:你计划让这个 GPU 服役多久?几年后,你是要升级 GPU 还是升级整机?将来是否希望出手旧 GPU,回收一些成本,再买个新的?
如果你能平衡多方面的考虑,最后的结论应该与下面的建议介意。
通常,我会推荐 GTX 1080 Ti, GTX 1080 或 GTX 1070。如果你的预算足够买 GTX 1080 Ti,就不用犹豫了。GTX 1070 便宜一点,但仍然比上代 GTX Titan X (Maxwell) 要快。相比 GTX 980 Ti,所有这些卡都应该优先考虑,因为更大的显存:11GB、8GB &而不是 6GB。8GB 显存听上去或许不多,但对许多任务是绰绰有余的。对于 Kaggle 竞赛里的大多数图像数据集、deep style 和自然语言理解任务,你基本不会遇到问题。
如果你是第一次尝试深度学习,只是偶尔参加 Kaggle 竞赛,GTX 1060 是最好的入门 GPU。但我不会推荐 3GB 显存的 GTX 1060。
在性价比方面,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 则是全能高端选项。
我通常不推荐新推出的 Titan Xp,相比其性能,它定价过高,不如选 GTX 1080 Ti。但对于摆弄大型数据集或视频数据的计算机视觉研究人员,Titan Xp 仍然有市场。在这些领域,每一 GB 显存都有价值,而 Titan Xp 比 GTX 1080 Ti 多了 1GB。有了这两者,我不会推荐 Titan X (Pascal) 。
如果你已经有了 GTX Titan X (Maxwell),想要升级到 Titan Xp。我的建议是:把钱存着买下一代,不值。
如果你预算有限,偏偏又需要 12GB 的内存,可以考虑买个二手的 GTX Titan X (Maxwell) 。
但是,对于大多数研究人员,最好的选项仍然是 GTX 1080 Ti。泰坦的额外 1GB 在大多数情况下没什么影响。
对我个人而言,会选择多个 GTX 1070 或 GTX 1080 来做研究。我宁愿多运行几个慢一点的试验,而不仅仅是运行一个更快的。在 NLP,内存要求并没有计算机视觉那么高,单只 GTX 1070/GTX 1080 对我来说就够了。我需要处理的任务、如何进行试验,决定了对我而言的最佳选择,不管是 GTX 1070 还是 GTX 1080。
对于预算紧张的开发者而言,选择余地非常有限。租 AWS 上的 GPU 实体价格已经太高,还是买自己的 GPU 更划算。我不推荐 GTX 970,不仅慢,二手的价格也不够实惠,而且它还存在显存启动问题。我的建议是加点钱上 GTX 1060,更快、显存更大而且没有毛病。GTX 1060 超出你的预算的话,我建议 4GB 版 GTX 1050 Ti。4GB 显存确实限制比较大,但如果对模型做些修改,仍可以得到还可以的性能表现。对于大多数 Kaggle 竞赛而言,GTX 1050 Ti 是合适的,在少部分比赛可能会影响你的竞争力。
如果你只是私下玩玩深度学习,没打算认真钻研,GTX 1050 Ti 是一个合适的选择。
有了本文中的所有信息,你大概已经能平衡显存大小、带宽、价格等多方面因素,来做出合理的购买决策。现在,我的建议是若预算充足,就上 GTX 1080 Ti, GTX 1080 或 GTX 1070。刚刚上手深度学习、预算有限的话,选 GTX 1060。预算实在有限,那么 GTX 1050 Ti。计算机视觉研究人员可能会需要 Titan Xp。
阅读(...) 评论()

我要回帖

 

随机推荐