当前位置: 首页 > 资讯

【原创】深度学习入门该怎么选GPU

论智       2017-10-28

计算机编程入门,最常用的形式就是游戏(比如Apple在iOS上推出的Swift Playgrounds应用)和网页(大量线上编程入门课程均选择网页开发)。除了游戏和网页比较有趣外,最主要的原因就是反馈迅速。无论是游戏,还是网页,改动之后,马上就能看到效果。


Peter Norvig的雄文《十年学会编程》也强调了交互和反馈对学习的重要性:


你偏爱哪种学弹钢琴的方式:

通常的交互式的方式,你一按下琴键就能听到音符;

还是“批量”模式,你只有弹完整首曲子才能听到音符?

显然,用交互模式学习弹钢琴更容易些,编程也一样。

piano


这就是为什么GPU对于入门深度学习非常重要的原因。如果没有一块强劲的GPU,每一次尝试可能都要跑几个月。


CPU不行吗


CPU不行。


为什么?


因为CPU和GPU的设计不同。如果用快递来打比方,CPU像是一辆摩托车,而GPU像是一辆货车。它们都能用来搬用货物,但是适用的货物类型不同。CPU(摩拖车)可以非常快速地访问内存(包裹)而GPU(货车)访问内存的速度很慢(高延迟)。然而,如果包裹数量很多的话,CPU(摩托车)需要多次往返才能完成运输,而GPU(货车)一下子就能运输一大堆包裹。


换句话说,CPU(摩托车)适合处理小数据(几个小包裹)而GPU(货车)适合处理大数据(多个大包裹)。Intel最高端的Core i9-7980XE,内存带宽约为57GB/s, 而NVIDIA为大数据分析与科学计算推出的Tesla K80显卡内存带宽高达480GB/s.


另一方面,CPU是为通用运算设计的,而GPU更擅长并行的浮点计算。


这两个设计上的区别,决定了GPU更擅长深度学习。深度学习由多层的神经网络组成,这些神经网络包含很多权重和偏置。而这些权重和偏置简单来说,就是许多巨大的浮点矩阵。这就意味着,深度学习需要很大的内存带宽访问这些网络,也需要进行大量的浮点运算。因此,GPU对深度学习至关重要。


如何挑选显卡


首先,看品牌。这个没什么选择。NVIDIA


Intel的Xeon Phi吹得很厉害,你可以使用标准的C代码,Xeon Phi会自动转成Xeon Phi专用代码。所以,理论上,基于Xeon Phi做一些底层的优化会比较容易。但是,机器学习大量的框架还是基于C++等语言编写的,纯C编写的非常少。另外,由于Xeon Phi比较新,业界也很少用于机器学习,因此各种各样的坑也比较多。


AMD的卡好歹支持OpenCL, 比Intel的Xeon Phi强多了。不过相比NVIDIA家的CUDA, OpenCL完全不是对手。由于NVIDIA投入深度学习领域较早,深度学习的大量标准库和框架都基于CUDA.


其次,看是否与cuDNN兼容。


基本上所有的深度学习库都使用cuDNN. 因此,确保购买的是Kepler系列以上的N卡,或者说,GTX 600以上级别的卡(警告:GTX 600虽然兼容cuDNN,但是很慢)。


然后,看带宽。


如上一节所说,GPU和CPU的关键差别在于内存带宽。因此,内存带宽是挑选GPU的重要因素。当然,不同系列的GPU因为架构不同,对内存带宽的利用率有所差异。但总的来说,内存带宽大致上还是一个很好的参考指标。


bandwidth-benchmark


各代CPU和GPU的带宽比较

再次,看显存。


不同的深度学习任务对显存的要求是不一样的。


一般来说,3GB的显存是基本不够用的。6GB有点窘迫,但对某些应用来说也足够了。8GB的话,对于很多应用来说都够用了。对于图像和视频领域,显存是多一点好一点,可能需要带11GB或者12GB显存的显卡。


最后,看价格。


价格当然也是要考虑的,包括:


是否在预算范围内

性价比怎么样

入门深度学习,并不推荐动辄好几万的Tesla K40和Tesla K80这样的专业计算卡。这些专业计算卡是为科学运算设计的,科学计算需要很高的精度,因此这些专业计算卡比普通的消费级显卡贵很多。可是,深度学习对于计算精度的要求并不高。当然,如果你自控能力特别差,担心买了消费级显卡就沉迷游戏不可自拔的话,那还是咬咬牙买专业计算卡吧。


另外,如果你使用MacBook Pro作为开发平台的话,也可以考虑购买Thunderbolt接口的外置显卡。外置显卡与主机之间的通讯依赖Thunderbolt,带宽约20GB/s,对于深度学习来说足够了。


显卡推荐


如果你预算很低,或者你只打算尝试一下深度学习,那可以买GTX 1050 Ti(4GB版),1200人民币左右。4GB内存有点紧张,不过用来尝试深度学习还是可以的。甚至用来参加大多数Kaggle竞赛项目都没问题,只不过有些项目用这张卡的话你可能很难取得好成绩。

如果你预算较低,或者你打算深入学习深度学习,那可以买GTX 1060 (6GB),2千多人民币。很多应用,甚至包括参加Kaggle竞赛,都够用了。随着以后学习的深入,如果有更高需求,可以把这张卡卖掉,换更合适的卡。

如果你预算充足,或者你想在Kaggle竞赛中领先的话,推荐GTX 1080 Ti, 性能差不多是GTX 1050 Ti的3倍多,GTX 1060的2倍多。不过价格就比较高了,6千人民币左右。

根据你的具体应用,选择别的一些卡。比如,自然语言处理的某些应用,GTX 1070(3千人民币左右)也许够用了。再比如,视觉处理,可能需要售价过万的Titan Xp.

机器人网原创文章,未经授权禁止转载。详情见转载须知

本文来自机器人网,如若转载,请注明出处:https://www.jqr.com/news/008228