GPU原本是用来打 游戏 的,为什么最后成了 AI 的核心?
GPU原本是用来打 游戏 的,为什么最后成了 AI 的核心?
这其实是计算机发展史上一段非常有意思的故事。
GPU之所以能够从游戏走向人工智能,背后有一条非常清晰的技术逻辑:
游戏图形渲染需要的计算能力,和人工智能神经网络需要的计算能力,在底层竟然有着惊人的相似性。
只不过,这种相似性经过了很多年才真正转化为巨大的产业价值。
我们从头讲起。
一、GPU当初为什么会被发明出来?
先回到20世纪90年代。
那时候,计算机游戏开始从二维走向三维。
假如你玩一款三维赛车游戏,计算机需要不断计算汽车的位置、道路的形状、物体表面的颜色,以及光照和阴影。
而且,这些计算必须非常快。
比如一款游戏以每秒60帧运行,那么计算机每秒就要生成60张完整画面。
对于一张1920×1080的画面来说,一帧就有大约207万个像素。
如果每秒生成60帧,那么每秒需要输出的像素数量就达到:
也就是每秒约1.24亿个像素。
注意,这还只是最终输出的像素数量,并不是渲染过程中实际需要执行的全部计算。
对每个像素,计算机可能还需要进行光照、纹理、颜色混合等运算。
这给当时的CPU带来了巨大的压力。
于是,人们开始考虑一个问题:
能不能专门制造一种芯片,让它负责图形计算,把CPU解放出来?
这就是图形加速器以及后来GPU发展起来的重要原因。
1999年,英伟达推出GeForce 256,并以GPU(Graphics Processing Unit,图形处理器)的名称进行宣传。
不过,早期GPU并不是今天这样的通用并行计算设备,它最初主要服务于图形处理。
二、GPU和CPU到底有什么不同?
理解GPU后来为什么适合AI,关键就在这里。
我们先看CPU。
CPU是一种通用处理器,需要处理各种各样的任务。
比如运行操作系统、响应鼠标和键盘、执行程序中的判断与分支、管理文件,以及协调各种硬件。
这些任务往往具有复杂的控制逻辑,而且有很多前后依赖关系。
所以,CPU的设计非常重视单个线程的执行效率、低延迟和复杂控制能力。
但图形渲染有一个非常特殊的地方。
大量计算任务可以同时进行。
比如,一幅图像中有很多像素,一个像素的颜色计算,在许多情况下并不需要等待其他像素全部计算完成。
既然如此,我们为什么非要依次计算呢?
当然,现代CPU也具有多核心、SIMD向量指令等并行计算能力,GPU内部也有复杂的控制逻辑。
二者真正的差别在于架构设计的取舍。
CPU希望把复杂的任务尽可能高效地完成。
GPU则更强调让大量相似的计算同时执行,以获得很高的整体吞吐量。
这就是GPU最重要的技术特点:大规模并行计算。
三、神经网络为什么恰好也需要这种能力?
现在,我们暂时忘掉游戏,来看看人工智能。
以最基本的人工神经元为例。
一个神经元接收多个输入:
每个输入乘以对应的权重,再把它们加起来:
最后,经过一个激活函数:
这就是一个非常典型的人工神经元计算过程。
如果你学过线性代数,会发现,这就是向量的内积运算,再加上一个偏置。
那么,如果有一层神经网络,包含1000个神经元呢?
每个神经元都需要进行类似的加权求和运算。
如果把它们组织到一起,就可以写成:
这里的 W 是权重矩阵。
注意,矩阵乘法内部包含大量乘法和加法,而这些运算具有非常丰富的并行计算机会。
这下有意思了。
GPU本来是为了并行处理大量图形数据而发展起来的,而神经网络恰恰也需要大量并行的数值运算。
一边是游戏画面中的像素、顶点、光照计算。
另一边是神经网络中的矩阵乘法、卷积以及其他张量运算。
虽然它们解决的问题完全不同,但是在计算硬件眼里,很多工作都可以归结为:
对大量数据反复执行相似的数学运算。
这就是GPU和人工智能走到一起的根本原因。
但这时候,还存在一个非常现实的问题:
GPU虽然计算能力很强,可它原本是给图形程序使用的。
如果一个数学家想用GPU求解矩阵方程,难道还得先去学习图形编程吗?
早期还真是如此。
GPU计算最初需要借助图形接口,把普通数据伪装成纹理等图形数据,再利用着色器完成计算。
这种方法非常麻烦。
直到后来,一项重要技术出现了。
四、2006年,CUDA改变了GPU的命运
2006年,英伟达推出了GeForce 8800 GTX显卡。
这款显卡有一个非常重要的特点:采用统一着色器架构。
以前的GPU往往使用不同的硬件单元来处理不同类型的图形任务,而统一架构让计算资源的使用更加灵活。
更重要的是,英伟达在这一年推出了CUDA。
CUDA是一套面向GPU的并行计算平台和编程模型。它让程序员不必再通过图形API绕弯子,而是可以直接编写通用计算程序,让GPU处理数学运算。
2006年推出CUDA,2007年相关软件工具正式发布,这成为GPU发展史上的关键转折点。
以前,GPU主要是图形处理器。
现在,它逐渐变成了一种可以运行通用数值计算程序的并行处理器。
而且,不只是人工智能能够使用GPU。
科学计算、流体力学仿真、图像处理、金融计算,以及很多工程领域,都开始尝试利用GPU加速。
但需要注意,CUDA出现的时候,深度学习还没有迎来后来的爆发。
换句话说,英伟达并不是等到ChatGPT出现以后,才突然想到GPU可以拿来计算。
它早在人工智能成为全球热点之前,就已经进行了长期投入。
五、2012年,真正改变历史的AlexNet
如果要在GPU与人工智能的结合史中,寻找一个标志性的事件,那么2012年一定不能绕过。
这一年,多伦多大学的Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton等研究人员,开发了一个名叫AlexNet的深度卷积神经网络。
他们用它参加ImageNet图像识别竞赛,取得了突破性的成绩。
而这项研究使用的核心计算硬件是什么呢?
两块GeForce GTX 580游戏显卡。
不是今天动辄数万美元的AI加速卡,而是当时面向高端游戏玩家的消费级显卡。
每块显卡有3GB显存,研究人员把神经网络分布到两块GPU上,训练大约用了5至6天。
最终,AlexNet在图像识别任务上取得了显著优于当时其他方法的成绩。
这件事情的意义非常重大。
因为神经网络的基本思想并不是2012年才出现的。
人工神经网络、反向传播算法等技术,在此之前已经研究了很多年。
但此前制约深度学习发展的一个重要因素,就是计算资源。
一个复杂的神经网络,可能包含几千万个权重参数。
训练时,不仅要进行前向传播,还需要通过反向传播计算梯度,再不断调整这些参数。
而这样的过程,需要在大量训练样本上重复进行。
于是,人们发现:过去那些因为计算量太大而难以实际训练的神经网络,在GPU的帮助下,变得越来越可行了。
当然,深度学习的成功也离不开算法改进和大规模数据集。
但GPU提供的计算能力,确实让许多研究从理论探索走向了大规模实践。
2012年之后,GPU和深度学习的结合开始快速发展。
六、后来,GPU开始专门为AI改变自己
到了这里,故事又出现了一个有意思的变化。
最初,是人工智能研究人员发现GPU适合神经网络。
但后来,GPU厂商反过来开始为人工智能设计专门的硬件。
比如2017年,英伟达发布Volta架构,并在V100中引入了Tensor Core。
Tensor Core可以理解为一种专门加速矩阵乘加运算的硬件单元。
例如:
这类运算正是神经网络计算中非常重要的部分。
通过专用硬件和混合精度计算,可以显著提高神经网络相关运算的吞吐量。
这里实际上发生了一次身份转变:
早期的GPU是为了游戏而设计,顺便可以计算AI;后来的数据中心GPU,已经把AI计算作为重要的设计目标。
而且,除了计算能力之外,AI还需要很高的显存带宽、足够的存储容量,以及多GPU之间的高速通信。
因此,现代高端AI加速器与普通游戏显卡,虽然仍然有共同的GPU技术基础,但已经出现了明显的产品分化。
七、大模型的出现,把GPU推向了新的高度
2017年,Google研究人员提出Transformer架构。
Transformer的一个重要特点,就是它在训练时能够充分利用并行计算。
其中的注意力机制、前馈网络等部分,包含大量矩阵运算。
这种计算模式与GPU非常契合。
随着大语言模型不断扩大规模,参数量、训练数据量以及计算需求持续增加。
研究人员开始把大量GPU连接起来,组成规模庞大的计算集群。
这时候,人工智能需要的已经不是单纯的一块高性能显卡。
它需要的是一个庞大的计算系统,包括计算芯片、显存、高速互联、网络设备、驱动、计算库以及训练软件。
于是GPU的发展就形成了一条非常清晰的路线:
1990年代
三维游戏推动图形并行计算
2006—2007年
CUDA让GPU走向通用计算
2012年
AlexNet证明GPU训练深度网络的潜力
2017年
Tensor Core与Transformer推动计算革新
2020年代
大模型引发AI算力需求爆发
到这个阶段,GPU已经不再只是游戏产业的配套产品,而是支撑现代人工智能的重要基础设施。
不过,GPU并不是运行AI的唯一选择。Google的TPU、其他专用AI芯片,以及CPU、NPU等处理器,也可以承担不同类型的AI计算。
GPU的优势在于:它既具备强大的并行计算能力,又具有相对成熟、灵活的编程生态。
八、为什么最终是英伟达占据了优势?
现在回过头来看,就更容易理解英伟达的护城河了。
它的竞争力其实不只是GPU芯片本身。
还有非常重要的一层,就是长期积累的软件生态。
比如:
- CUDA:让开发者编写GPU并行计算程序。
- cuBLAS:提供GPU加速的基础线性代数运算。
- cuDNN:提供面向深度神经网络的高性能计算库。
- PyTorch等框架:可以调用这些底层能力,让研究人员不必每次都从头编写GPU计算代码。
其中,cuDNN在2014年推出时,就已经开始围绕卷积、池化、激活函数等神经网络运算提供优化。
而经过多年的发展,大量研究项目、算法实现、工程工具和开发经验,都围绕这一生态积累起来。
这就形成了一种正向循环:
更多开发者使用英伟达GPU,推动软件工具不断成熟;成熟的软件生态又吸引更多开发者使用英伟达GPU。
所以,今天英伟达的竞争优势,并不只是芯片性能领先,而是硬件、软件、开发工具以及数据中心系统能力共同构成的。
这也解释了为什么其他企业即使能够设计出计算性能很强的AI芯片,也不一定能够迅速取代英伟达。
来源:知乎 · AI 游戏文章 · zhuanlan.zhihu.com