从2016年AlphaGo登场以来,基于深度学习的人工智能浪潮,催生出能够以假乱真的实时人脸转换,准确率接近百分百的语言翻译、文字识别、语音识别技术。人类正式跨入第三次人工智能浪潮。
GPU作为人工智能时代的专业武器,发挥了越来越重要的作用。
因为每个算法模型背后,都是百亿到千亿级的参数,这些海量的参数又可以形成指数倍的组合。要想达到最优的效果,需要从这些参数组合中,大海捞针般地找到一组最合适的参数。
算法的作用只是设计高效的参数搜索规则,而再神奇的算法,也需要执行,GPU是真正根据这些规则算出来最优参数的幕后大功臣。
可以说,正是因为GPU性能的快速提升,才有了现在的人工智能技术的突飞猛进和大规模应用。
对于人工智能专业或者相关从业者,不仅要专注于算法和编程能力的提升,更要了解GPU的前世今生,能选取合适的GPU来实现自己的人工智能模型。
下面,用一篇文章来说透GPU相关的知识和选择GPU的方法。
一、什么是GPU?
在计算机领域,我们一般会听到CPU和GPU两个名词,CPU处理器精度更高,就像一位稳坐指挥台的指挥官,负责处理着我们的输入指令,并发号施令,指挥着电脑内的硬件和软件程序干活。
但是CPU不支持并行运算,涉及到图形、画面处理等工作,自己也能干,但是干的并不专业。
这个时候就要请出专业的人才——GPU来干了。他天然支持并行运算,被重点应用于图像处理、游戏画面处理等领域,因为过去一直是用来加载游戏、视频等高清画面的,所以大家就给他起了个通俗易懂的名字:显卡。
也就是说CPU侧重于对系统的调度,是电脑的核心,GPU注重于大规模并行计算,是电脑里的计算专家。
CPU对于一般的文字、运行软件来说足够用。所以对于一般人来说,选电脑的时候,处理器都是一个比较重要的挑选标准。
而深度学习本质上是向量的并行运算,这和处理图像等有着相似的特点,所以,对于做深度学习来说,显卡的用途就发挥出来了。
当然,这里只是在说大型复杂的模型训练过程中才会体现出两者的差别,对于简单的机器(深度)学习案例,例如minist手写数据识别、鸢尾花分类、波士顿房价预测等这种小的,CPU和GPU是完全看不出差别的。
所以,千万别把入门深度学习当作找父母要钱买一台好电脑的理由。
顺带提一句。谷歌还推出了专门用于深度学习训练的TPU(Tensor Processing Unit, 张量处理器),相对于GPU来说运算处理速度更快,价格更便宜,现在已经用于谷歌的云计算平台,后续也可以关注,但是目前还不是深度学习界的主流。
二、当今显卡哪家强?
在当今显卡界,有两家公司占据绝对主导地位:英伟达(俗称N卡)和AMD(俗称A卡),如果非要评选一位老大,那必须是英伟达公司(英伟达的市场份额大约在83%左右,而AMD仅仅17%左右)。
英伟达的创始人黄仁勋有个最大的特点就是喜欢在厨房里发布显卡。
N卡因为市场占有率高,又出了一种主要负责处理器的并行运算的cuDNN架构,所以主流的深度学习框架比如TensorFlow对他的支持也比较好,因此,提到做深度学习的GPU,对于初学者来说,英伟达是首选,他也是我们主要的介绍对象。
英伟达旗下的显卡产品大致有三大系列:GeForce、Quadro与Tesla。这三大系列产品功能侧重有所不同,价格差距也很大,GeForce性价比最高,主要用于游戏画面处理;Quadro性价比居中,主要用于作图,Tesla主要用于搭建GPU服务器。
因为GeForce系列性价比相对较高,也是大家用来跑深度学习程序的首选。
GeForce系列前缀一共有4种,性能由高到低排列为:GTX > GTS > GT > GF。常见的一般就是GTX和GT,GTS和GF显卡一般较老,已经不多见了。
在GTX系列下,还有泰坦子系列,也就是GTX****Ti。这个系列属于GeForce系列中的豪华版,性能方面代表了当时代单芯显卡的最高水平。在深度学习中应用也最广。我们熟悉的GTX1080Ti、GTX3080Ti都出自这个系列。
在GTX系列下,还有泰坦子系列,也就是GTX****Ti。这个系列属于GeForce系列中的豪华版,性能方面代表了当时代单芯显卡的最高水平。在深度学习中应用也最广。我们熟悉的GTX1080Ti、GTX3080Ti都出自这个系列。
字母后边的数字代表显卡的型号,其中前两位数字代表产品是第几代,10之后就是每次进10了,比如GTX1080、GTX2080等等。之后的两位数字代表它的小版本,一般来说同代显卡这个数字越大性能就越强。
例如GTX3080Ti就是一块第30代游戏级显卡,就是比GTX3060Ti性能更强。
除了泰坦的加强版Ti系列外,还有,SE(阉割版),M(移动版),MX(移动加强版),同型号的显卡性能比较:Ti>无后缀>SE>MX>M。(10代显卡之后,m和mx的命名方式也几乎绝版)
当然,原厂生产的GTX泰坦系列显卡通常被称为公版显卡,除了原厂生产的GTX系列显卡之外,我们还可以看到国内的厂商购买英伟达的芯片设计专利,自行设计PCB、散热方案并生产的显卡,这种显卡成为非公版。
一般来说,非公版显卡会在公版显卡的基础上做一些改造,甚至增加一些实用功能,甚至比公版更好用。这就类似于把谷歌的安卓做了自己的定制化改造。缺点就是各家厂商生产的显卡质量层次不齐,有的价格甚至比公版还贵。但是,如果公版显卡太抢手,非公版显卡也是一个很好的替代项。
另一种我们深度学习可能会用到的就是Quadro系列,这个系列一般用P***来表示,比如P400、P1000等。这个系列相同配置价格要比GF系列贵些,常常被公司买来部署云计算服务器,如果线上租用显卡,也可能会选到这个系列。
AMD的显卡的命名方式就不赘述了。其实要是单纯想看显卡性能,也没有必要看那些,网上有一个叫“显卡天梯图”的,可以一目了然比较不同品牌,不同系列、不同信号的显卡性能,天梯图越靠上的位置,显卡性能越强。附上最新的天梯图,持续更新。
(来源:秋刀鱼半藏(原帖地址))
当然,显卡还有个参数就是显存,跟内存是一个道理,显存越大,可以缓存的内容就越多。对于非常吃显存的图像类深度学习程序来说,显存太小的显卡批处理就不能调太大,否则会程序会报错。
三、如何能用上显卡
方案一:自己买显卡外接到电脑
为了用高级一些的显卡再买一台配置好显卡的电脑显然不现实,可以直接买显卡外接。
这种方式的优点是比较自由,自己的东西想怎么用就怎么用,缺点是贵,最新的GTX3080Ti出厂价差不多就上万人民币了,随着比特币挖矿的兴起,现在属于加价也难求一卡,而且购买显卡需要具备一定的动手能力才能玩的转,因为需要买来自己接在电脑上。(不过随着目前很多厂商推出了外置显卡扩展坞,显卡也逐步会做到可以像U盘一样即插即用了)
所以这种方式只适用于对显卡有重度需求的土豪,以及重度游戏爱好者,或者要从事深度学习领域的研究,如果只是拿来跑简单的深度学习程序用来入门,我相信大概率会是:“买前生产力,买后玩游戏”或者是“买前生产力,买后压箱底”。
如果确实有需要,那么可以根据自己钱包的承受能力和使用场景选择价格合适的显卡。
方案二:蹭公司(学校)的显卡
对于学生来说,如果你能进入学校里的人工智能实验室打工,一般实验室里会标配几个显卡集群用于大家跑程序(如果一个人工智能实验室里没有这么一个深度学习集群,那基本可以确定这个实验室是用人工智能这个名字哄人的)。同样,很多大公司也会配有专业的内部集群,可以借着实习等方式去蹭算力。
这种方式的优点是免费,但是缺点是既然学校和公司给你提供了这么好的硬件环境,那必然是需要你产出相应的成果的,肯定不能由着自己的想法随便玩。
所谓命运赠送的礼物,早已在暗中标好了价格。
方案三:自己租用显卡,你的下一台显卡,何必是自己的
如果确实没有薅公司和学习羊毛的条件,那么就只能自己租显卡了。
这种方式的优点是随用随续费,而且给自己一种紧迫感,写代码的效率更高,毕竟在这里时间就是金钱,而且还可以按照项目的需要选择合适的配置,比较灵活。
计费方式可以采用按时计费、按月计费和按年计费。大概看了一下,对于3080Ti的显卡来说,如果按时计费的话市场价差不多2~3元每小时,虽然不便宜,但是相比于自己买显卡还是划算太多。
当然,也有免费的羊毛可以薅,最出名的就是谷歌的Colab了,但是因为是国外环境,经常断线很烦人。之后我也会出一期详细的教程,对于初学者来说可以凑合使用。
对于付费云计算平台的选择,一般要参考这么几个因素:价格、能否可以自己随意安装包,当前的包是否齐全、是否可以上传自己的数据集、是否可以随时启用停用、远程连接的方式。
网友评论