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

简介: 大家好啊,我是董董灿。 GPU为什么能在各种行业大放异彩,这篇文章讲述了GPU 的技术和引用。

导 读

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

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

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

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

image.png

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包含了游戏所有的代码、图形和音乐!

image.png

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

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

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

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

GPU正是如此。

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

最典型的便是光追技术。

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

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

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

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

第二个领域:AI计算

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

image.png

深度学习的训练领域,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小弟。

总结一下

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

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

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

本文原创,请勿转载,转载请联系作者
欢迎关注@董董灿是个攻城狮及同名公众号

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
4天前
|
人工智能 监控 网络协议
【网络技术】心跳机制(入门讲解)
【网络技术】心跳机制(入门讲解)
|
1天前
|
网络协议 网络架构 Python
Python 网络编程基础:套接字(Sockets)入门与实践
【5月更文挑战第18天】Python网络编程中的套接字是程序间通信的基础,分为TCP和UDP。TCP套接字涉及创建服务器套接字、绑定地址和端口、监听、接受连接及数据交换。UDP套接字则无连接状态。示例展示了TCP服务器和客户端如何使用套接字通信。注意选择唯一地址和端口,处理异常以确保健壮性。学习套接字可为构建网络应用打下基础。
18 7
|
2天前
|
机器学习/深度学习 JSON PyTorch
图神经网络入门示例:使用PyTorch Geometric 进行节点分类
本文介绍了如何使用PyTorch处理同构图数据进行节点分类。首先,数据集来自Facebook Large Page-Page Network,包含22,470个页面,分为四类,具有不同大小的特征向量。为训练神经网络,需创建PyTorch Data对象,涉及读取CSV和JSON文件,处理不一致的特征向量大小并进行归一化。接着,加载边数据以构建图。通过`Data`对象创建同构图,之后数据被分为70%训练集和30%测试集。训练了两种模型:MLP和GCN。GCN在测试集上实现了80%的准确率,优于MLP的46%,展示了利用图信息的优势。
9 1
|
4天前
|
网络协议 安全 Linux
网络入门基础
网络入门基础
7 0
|
4天前
|
机器学习/深度学习 自然语言处理 语音技术
【Python 机器学习专栏】Python 深度学习入门:神经网络基础
【4月更文挑战第30天】本文介绍了Python在深度学习中应用于神经网络的基础知识,包括神经网络概念、基本结构、训练过程,以及Python中的深度学习库TensorFlow和PyTorch。通过示例展示了如何使用Python实现神经网络,并提及优化技巧如正则化和Dropout。最后,概述了神经网络在图像识别、语音识别和自然语言处理等领域的应用,并强调掌握这些知识对深度学习的重要性。随着技术进步,神经网络的应用将持续扩展,期待更多创新。
|
4天前
|
存储 监控 安全
【亮剑】指导初学者如何搭建和使用网络视频监控系统。
【4月更文挑战第30天】本文指导初学者如何搭建和使用网络视频监控系统。核心设备包括摄像头(如固定、PTZ、多目、夜视)、存储选项(NVR、DVR、云存储)及网络交换机等。安装配置步骤涉及规划布局、安装摄像头、设置存储设备和软件配置。实时监控包括实时查看、接收警报和录像回放。理解设备功能、合理布局并细心操作,就能建立稳定监控体系。随着技术进步,未来监控系统将更智能、高效,保障安全。
|
4天前
|
机器学习/深度学习 Python
【深度学习入门】- 神经网络
【深度学习入门】- 神经网络
|
4天前
|
存储 NoSQL Linux
Redis入门到通关之Redis5种网络模型详解
Redis入门到通关之Redis5种网络模型详解
32 1
|
4天前
|
NoSQL Ubuntu 关系型数据库
Redis入门到通关之Redis网络模型-用户空间和内核态空间
Redis入门到通关之Redis网络模型-用户空间和内核态空间
22 1
|
4天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信

热门文章

最新文章