计算机编程入门,最常用的形式就是游戏(比如Apple在iOS上推出的Swift Playgrounds应用)和网页(大量线上编程入门课程均选择网页开发)。除了游戏和网页比较有趣外,最主要的原因就是反馈迅速。无论是游戏,还是网页,改动之后,马上就能看到效果。
Peter Norvig的雄文《十年学会编程》也强调了交互和反馈对学习的重要性:
你偏爱哪种学弹钢琴的方式:
通常的交互式的方式,你一按下琴键就能听到音符;
还是“批量”模式,你只有弹完整首曲子才能听到音符?
显然,用交互模式学习弹钢琴更容易些,编程也一样。
这就是为什么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因为架构不同,对内存带宽的利用率有所差异。但总的来说,内存带宽大致上还是一个很好的参考指标。
各代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