神经网络推理加速入门—— 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傲视群雄的王牌。

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

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

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
25天前
|
机器学习/深度学习 算法 PyTorch
基于图神经网络的大语言模型检索增强生成框架研究:面向知识图谱推理的优化与扩展
本文探讨了图神经网络(GNN)与大型语言模型(LLM)结合在知识图谱问答中的应用。研究首先基于G-Retriever构建了探索性模型,然后深入分析了GNN-RAG架构,通过敏感性研究和架构改进,显著提升了模型的推理能力和答案质量。实验结果表明,改进后的模型在多个评估指标上取得了显著提升,特别是在精确率和召回率方面。最后,文章提出了反思机制和教师网络的概念,进一步增强了模型的推理能力。
53 4
基于图神经网络的大语言模型检索增强生成框架研究:面向知识图谱推理的优化与扩展
|
17天前
|
JSON Dart 前端开发
鸿蒙应用开发从入门到入行 - 篇7:http网络请求
在本篇文章里,您将掌握鸿蒙开发工具DevEco的基本使用、ArkUI里的基础组件,并通过制作一个简单界面掌握使用
58 8
|
1月前
|
机器学习/深度学习 资源调度 算法
图卷积网络入门:数学基础与架构设计
本文系统地阐述了图卷积网络的架构原理。通过简化数学表述并聚焦于矩阵运算的核心概念,详细解析了GCN的工作机制。
103 3
图卷积网络入门:数学基础与架构设计
|
1月前
|
缓存 算法 关系型数据库
MIT韩松团队长上下文LLM推理高效框架DuoAttention:单GPU实现330万Token上下文推理
麻省理工学院韩松团队提出DuoAttention框架,旨在提高大型语言模型(LLM)处理长上下文的效率。该框架通过区分检索头和流式头,仅对检索头应用全键值缓存,减少内存消耗和计算时间,同时保持模型长上下文处理能力。实验结果显示,DuoAttention在多种模型架构上显著提升了推理效率,为LLM的实际应用提供了新可能。
68 14
|
29天前
|
Web App开发 网络协议 安全
网络编程懒人入门(十六):手把手教你使用网络编程抓包神器Wireshark
Wireshark是一款开源和跨平台的抓包工具。它通过调用操作系统底层的API,直接捕获网卡上的数据包,因此捕获的数据包详细、功能强大。但Wireshark本身稍显复杂,本文将以用抓包实例,手把手带你一步步用好Wireshark,并真正理解抓到的数据包的各项含义。
88 2
|
1月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
82 3
|
2月前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。
|
2月前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)入门
【10月更文挑战第41天】在人工智能的璀璨星空下,卷积神经网络(CNN)如一颗耀眼的新星,照亮了图像处理和视觉识别的路径。本文将深入浅出地介绍CNN的基本概念、核心结构和工作原理,同时提供代码示例,带领初学者轻松步入这一神秘而又充满无限可能的领域。
|
2月前
|
消息中间件 编解码 网络协议
Netty从入门到精通:高性能网络编程的进阶之路
【11月更文挑战第17天】Netty是一个基于Java NIO(Non-blocking I/O)的高性能、异步事件驱动的网络应用框架。使用Netty,开发者可以快速、高效地开发可扩展的网络服务器和客户端程序。本文将带您从Netty的背景、业务场景、功能点、解决问题的关键、底层原理实现,到编写一个详细的Java示例,全面了解Netty,帮助您从入门到精通。
223 0
|
2月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
224 1