跳到正文
知乎 · AI 游戏文章· 来源· 王珂·· 12 小时前AI 评分12

GPU原本是用来打 游戏 的,为什么最后成了 AI 的核心?

GPU原本是用来打 游戏 的,为什么最后成了 AI 的核心?

正文

这其实是计算机发展史上一段非常有意思的故事。

GPU之所以能够从游戏走向人工智能,背后有一条非常清晰的技术逻辑:

游戏图形渲染需要的计算能力,和人工智能神经网络需要的计算能力,在底层竟然有着惊人的相似性。

只不过,这种相似性经过了很多年才真正转化为巨大的产业价值。

我们从头讲起。

一、GPU当初为什么会被发明出来?

先回到20世纪90年代。

那时候,计算机游戏开始从二维走向三维。

假如你玩一款三维赛车游戏,计算机需要不断计算汽车的位置、道路的形状、物体表面的颜色,以及光照和阴影。

而且,这些计算必须非常快。

比如一款游戏以每秒60帧运行,那么计算机每秒就要生成60张完整画面。

对于一张1920×1080的画面来说,一帧就有大约207万个像素。

如果每秒生成60帧,那么每秒需要输出的像素数量就达到:

\[ 1920\times1080\times60 \approx1.24\times10^8 \]

也就是每秒约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最重要的技术特点:大规模并行计算。

三、神经网络为什么恰好也需要这种能力?

现在,我们暂时忘掉游戏,来看看人工智能。

以最基本的人工神经元为例。

一个神经元接收多个输入:

\[ x_1,x_2,\ldots,x_n \]

每个输入乘以对应的权重,再把它们加起来:

\[ z=w_1x_1+w_2x_2+\cdots+w_nx_n+b \]

最后,经过一个激活函数:

\[ y=f(z) \]

这就是一个非常典型的人工神经元计算过程。

如果你学过线性代数,会发现,这就是向量的内积运算,再加上一个偏置。

那么,如果有一层神经网络,包含1000个神经元呢?

每个神经元都需要进行类似的加权求和运算。

如果把它们组织到一起,就可以写成:

  \boxed{\boldsymbol{y}=f(W\boldsymbol{x}+\boldsymbol{b})}

这里的 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可以理解为一种专门加速矩阵乘加运算的硬件单元。

例如:

\[ D=AB+C \]

这类运算正是神经网络计算中非常重要的部分。

通过专用硬件和混合精度计算,可以显著提高神经网络相关运算的吞吐量。

这里实际上发生了一次身份转变:

早期的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