CPU vs. GPU
想象两种工作场景:

- CPU(中央处理器):像一位博学多识的老教授,他非常聪明,能快速、顺序地处理各种复杂任务(比如逻辑判断、系统管理),但一次只能专心做一两件事。
- GPU(图形处理器):像一万名训练有素的小学生,每个小学生都不如教授聪明,只会做简单的算术题(比如加减乘除),但关键是,他们可以并行地做大量简单的、相同的算术题。
训练AI(尤其是深度学习)在干什么? 本质上就是进行海量、重复的矩阵和张量运算(巨大的乘法、加法),这正是那“一万名小学生”最擅长的工作。
GPU为何擅长这种工作?硬件架构揭秘
-
海量核心(ALU):
- CPU通常只有几个到几十个高性能核心,专为复杂任务优化。
- GPU则有数千个甚至上万个更小、更节能的计算核心(流处理器),这些核心专为同时执行相同的数学指令而设计。
-
极高的内存带宽:
- 训练AI需要频繁地从显存(GPU的专用高速内存)中读取和写入海量数据(模型参数、输入数据、中间结果)。
- GPU配备了超宽的内存总线(例如384位、512位),提供比CPU高数倍的内存带宽(可达1TB/s以上),确保数据能源源不断地“喂给”计算核心,避免“饥饿”。
-
专为并行计算优化的架构:
- SIMD/SIMT:单指令多数据流,一条指令可以指挥成千上万个核心同时对不同的数据执行相同的操作,这正是矩阵乘法的完美匹配。
- 层次化线程管理:GPU可以高效地组织和管理数万甚至数百万个并发线程,每个线程处理一小块数据。
以训练神经网络为例,GPU如何工作?
假设我们在训练一个识别猫的图片的神经网络。
-
前向传播:输入一张图片(像素矩阵)。
- 图片数据被加载到GPU显存。
- 网络的第一层需要将图片数据与第一层的权重矩阵进行乘法运算,这个运算被分解成无数个并行的乘加操作。
- GPU的数千个核心同时启动,每个核心负责计算结果矩阵中的一个或几个元素。一层计算瞬间完成,结果传给下一层,直到输出预测结果(“这是猫的概率是85%”)。
-
计算损失:比较预测结果和真实标签(“是猫”),计算误差。
-
反向传播(关键):这是训练中最耗时的部分。
- 根据误差,从输出层反向逐层计算每个参数(权重)对误差的“贡献度”(梯度),这需要用到链式法则,本质上又是一系列大规模的矩阵运算和梯度传递。
- 同样,每一层的梯度计算都可以被完美地并行化,GPU再次发挥其“人海战术”优势,同时计算所有参数的梯度。
-
参数更新(优化):
- 使用优化器(如SGD、Adam),根据计算出的梯度更新所有权重,更新公式(如
W = W - 学习率 * 梯度)又是一个可以在所有参数上并行执行的操作。 - GPU同时更新数百万、数十亿个参数。
- 使用优化器(如SGD、Adam),根据计算出的梯度更新所有权重,更新公式(如
一次迭代完成,接着处理下一批图片,重复上述过程,GPU的并行能力使得处理一批数据(如128张图片)的时间,可能只比处理一张图片多一点点。
现代GPU的进一步优化:Tensor Core与专用AI芯片
为了更进一步提升AI训练效率,现代GPU(如NVIDIA的Volta、Ampere、Hopper架构)引入了更专用的硬件单元:
- Tensor Core(张量核心):这是专门为深度学习中的混合精度矩阵乘累加运算设计的硬件单元,它可以在一个时钟周期内完成一个4x4的矩阵运算,速度比传统的GPU核心快得多,并且支持FP16、BF16、INT8等低精度格式,在精度损失很小的前提下大幅提升速度和能效比。
- 专用AI芯片:如Google的TPU,其设计从底层就是为张量运算服务的,采用了不同的芯片架构(脉动阵列),在能效比上可能比通用GPU更有优势。
显卡训练AI的原理,本质是利用GPU硬件架构的三大特点:
- 大规模并行计算能力:用成千上万个核心同时处理海量简单计算。
- 高内存带宽:确保数据流能跟上计算核心的“胃口”。
- 专用计算单元:如Tensor Core,为AI核心运算进一步提速。
正是由于这些特性,使用GPU训练深度神经网络的速度可以比使用CPU快几十倍到数百倍,将原本需要数月的训练时间缩短到几天甚至几小时,从而彻底推动了深度学习革命,没有GPU,今天的大模型(如GPT、Stable Diffusion)时代几乎不可能到来。