神经网络推理加速—— GPU为什么这么牛

导 读

AI模型运行在计算机上,除了需要消耗大量的计算资源外,还需要大量的内存以及带宽用来存储和搬运数据。

在如今一个模型动辄几千亿个参数的情况下,模型运行的性能变得越来越重要,对计算机硬件的需求也水涨船高。

而不论是工业界,还是产业界,针对AI模型的优化从未停止过!优化手段也从算法上的优化,扩展到了专用硬件上。

本文主要从硬件加速王者GPU的科普讲起,说一说GPU在神经网络推理中,为什么这么牛,更多细节,欢迎关注本专栏其他文章。

王者GPU

GPU(Graphic Processing Unit),图形处理器,是英伟达在很早就推出的处理器,专门用来进行图形学的计算,用来显示游戏视频画面等,又称为显卡。
图片

2006年,英伟达推出CUDA,这是一种专门针对GPU的编程模型,或者说软件库,它直接定义了异构编程的软件架构,为英伟达进入AI计算领域埋下了种子。

2012年,图像识别大赛,很多参赛队伍采用GPU完成AI加速,让英伟达乘上了人工智能的东风,从此,一跃成为人工智能硬件领域的绝对霸主,一直到今天。

这期间,国内外很多家公司都试图推出了自己的AI芯片,希望可以在人工智能硬件这一领域上分得一杯羹,但却始终无法撼动英伟达AI芯片老大的位置。

国外强如Google 的TPU,AMD以及ARM,国内如华为昇腾、百度昆仑、阿里平头哥等一线互联网企业,以及地平线、寒武纪、比特大陆等自研ASIC芯片的厂家,甚至近几年大火的存算一体芯片,都在一次次的冲击着英伟达。
但它却至今屹立不倒。

GPU的神之地位,被英伟达捍卫的死死的。

其实,早在GPU被用来做AI计算之前,GPU就已经涉及到了多个领域。其涉及的领域之多,再加上CUDA的软件栈生态之普及,社区活跃度之高,才使得GPU屹立不倒。

GPU涉及到的领域

说三个领域,就足以让英伟达赚的盆满钵满,让GPU有价无市,让GPU有黄牛囤货…

第一个领域是:游戏

游戏一直是新科技新技术的试验场地,同时也是一个赚钱的暴利行业。

为什么这么说。

因为新的硬件研发出来,基本上都会在游戏行业找到落地点,比如国内某手机厂商,以王者荣耀运行流畅为卖点,大打广告。

而实际上,软件与硬件的关系,存在着一个著名的安迪比尔定律:硬件提高的性能,很快会软件消耗掉。

这个定律的意思是说,硬件迭代升级带来的性能提升,很快就会被新一代的软件所消耗掉,从而使得人们不得不更换新一代的硬件产品。

这下,你知道为什么去年才买的手机,今年很多软件就带不起来了吧。

软件更新,正在一步步蚕食掉你的新手机!

举个不太恰当但是很生动的例子。

超级玛丽这款游戏,我们玩了很多年,游戏中那么多关卡,那么丰富的剧情,丰富的配图,丰富的配乐,但是你能想象,这款游戏的总大小才64KB么?

64KB包含了游戏所有的代码、图形和音乐!
在

这主要是因为,在超级玛丽那个年代,芯片上所连接的硬件资源少的可怜,游戏开发者为了节省内存,进行了大量的代码优化和图片复用优化。

而现在,一个王者荣耀的更新包,就好几个GB,运行起来占用的内存更是高的离谱。

1年前买的手机,今天很可能就带不动最新的王者荣耀了!

游戏的升级,迫使人们更换新的手机。但也正是因为有安迪比尔定律的存在,才使得硬件被迫不断地迭代升级。

GPU正是如此。

虽然英伟达的GPU一开始就是为显示服务的,但是随着游戏的不断迭代,不光对于GPU的显示技术有了更高的要求,而且对于与显示相关的计算任务也有了更高的要求。

最典型的便是光追技术。

所谓光追,就是光线追踪,游戏场景中针对光影的处理,尤其是进行实时的光影转换,如河面的倒影、阳光打在窗户上的朦胧感等,一直是计算图形学的难点。

该技术需要大量的实时计算,依据游戏中的实时场景,随时计算光线的折射,反射,漫反射等。

自从英伟达在自家芯片上支持了光追技术之后,GPU便成了一些游戏的标配。

一部分游戏发烧友们,玩游戏,必上显卡。

第二个领域是:比特币挖矿

相信很多人记得英伟达被黑客组织 LAPSUS$ 勒索的事件。

原因是英伟达为了限制人们使用显卡挖矿,在显卡的驱动程序中添加了一把软件锁,用来限制挖矿时的带宽,从而降低显卡的性能。

正常游戏时,显卡可以用到100%的带宽,而挖矿时,显卡却只能发挥50%的带宽性能,这让买了显卡的挖矿矿工们很不爽。

之所以这么做,是因为显卡挖矿太有优势了!

大量的显卡被买来去挖矿,这不是英伟达希望看到的,英伟达更希望自家的芯片,用来进行科学计算或者做对人类更意义的事。

第三个领域:AI计算

就像文章开头说的,自从英伟达的GPU乘上了深度学习的东风,不管是出货量,股价还是公司影响力,都大幅飙升,直接造就了一个硬件王国。


深度学习的训练领域,GPU是当之无愧的王者,至今,染指训练的硬件厂商也寥寥无几,并且训练的性能和精度与GPU相比,还是差一些。

很多ASIC芯片(专用芯片)公司,都拿GPU的计算结果作为精度和性能的标杆,以此来鼓吹自己的芯片性能,大做广告。

游戏、挖矿和深度学习这三个领域,就可以让英伟达的GPU立于芯片不败之林了,更别提普通显卡、科学计算甚至数据中心等领域了。

说了这些,那为什么GPU这么牛呢

这要从GPU的硬件架构说起。

平常我们电脑上所用的CPU,是一种多核架构,看看你的电脑,可能是4核或者8核的处理器。在执行计算任务时,通过程序的控制,比如多线程,可以让8个核同时工作,此时的计算并行度是8。

而GPU的恐怖之处在于,它远远不止8个核心这么简单,它把计算核心做到了成千上万个甚至更多,通过多线程,可以使得计算并行度成千上万倍的提升。

GPU是众核!

举个例子,如果计算5000个数组相加。

int a[5000];
int b[5000];
int c[5000];
for (int i = 0; i < 5000; i++) {
    
    
  c[i] = a[i] + b[i];
 }

即使我们使用8核CPU计算,那么每个核还需要计算5000 / 8 = 625个数,而单个核心的计算是串行的,需要排队,也就是算完一个,再算另一个。

假设计算一个数需要1s,那么即使8个核同时运行,也需要625s。这里暂时不考虑支持向量指令的CPU。

而由于GPU有成千上万个核,计算5000个数字,使用5000个核同时计算,每个核计算一个数就搞定了!总共需要1s!

这就是GPU!

有个比喻。

CPU是指挥部,每个核是一个将军,除了需要指挥军队完成调度这种劳神费心的工作外,如果让它杀敌,它也只能一个一个杀,杀死1w敌军不得把将军累死了?

而GPU是军队,只负责杀敌,1w个士兵杀1w个敌军,一对一,不分分钟的事?

正是由于GPU这种独有的硬件架构,加上图形专用硬件单元或者深度学习专用硬件单元(如TensorCore)的加持,再加上多层级的存储架构,使得GPU的硬件,计算性能和访存性能都如王者般,傲视其他ASIC小弟。

总结一下

游戏,挖矿,深度学习,这三个领域足以让英伟达的GPU傲视群雄!安迪比尔定律,软件会吃掉硬件的性能,反过来会迫使硬件更新迭代!GPU也是如此。

GPU独有的多核硬件架构以及专用硬件单元和多层级存储,是GPU傲视群雄的王牌。

好啦,本篇文章就说到这,敬请关注本专栏其他文章。

本文原创,请勿转载,转载请联系作者

v v v v v v

点击下方卡片,关注我的公众号,有最新的文章和项目动态。

v v v v v v

猜你喜欢

转载自blog.csdn.net/dongtuoc/article/details/130176942