人人都会AI编程

15.1 GPU 与 CPU 的本质区别:并行计算架构设计

更新时间:2026-07-09

在 1.4 节的五层架构中,我们提到算力层是大模型的物理基座。而今天一提到 AI 算力,几乎所有人都会想到 GPU。但为什么训练一个 LLM 必须动用成百上千张 GPU,而不是把数据中心的 CPU 堆多一点?要回答这个问题,不能只比较“谁跑分更高”,而要回到芯片架构设计的原点——CPU 和 GPU 从诞生第一天起,就是为了解决完全不同的计算矛盾而存在的。

理解这个本质区别,是你后续理解显存带宽、Tensor Core、CUDA 编程模型,乃至千卡集群网络拓扑的根基。


一、CPU:为“低延迟串行任务”而生的管家

设计哲学:Latency-Oriented(延迟导向)。

CPU(Central Processing Unit)的使命是让单个任务尽可能快地完成。它面对的是操作系统、数据库、业务逻辑这类任务:分支判断多、依赖关系复杂、经常要随机访问内存、对响应延迟极其敏感。

为了做到这一点,CPU 的架构像一位经验丰富的老练管家:

  • 核心数少而精:通常几十核(服务器端),但每个核心都极其复杂,拥有庞大的乱序执行引擎和深度流水线。
  • 超大缓存层级:L1/L2/L3 缓存容量大,就是为了把数据尽可能留在离计算单元最近的地方,减少去内存“取数”的等待。
  • 复杂的控制逻辑:分支预测器、预取单元、重排序缓冲区……这些晶体管开销都是为了猜对程序下一步要走哪条路,避免流水线空转。
  • 高频运行:追求高主频(GHz 级别),力求单线程每一步都跑得飞快。

一句话总结:CPU 是一个“精兵策略”的组织,几十个全能高手,专克复杂、不规则、需要快速响应的任务。


二、GPU:为“高吞吐并行任务”而生的劳动大军

设计哲学:Throughput-Oriented(吞吐导向)。

GPU(Graphics Processing Unit,图形处理器)的基因来自图形渲染:屏幕上有几百万个像素,每个像素的颜色计算大同小异,彼此独立。这种任务的特点是大量同质计算、数据并行、对单一路径的延迟不敏感

因此,GPU 的架构像一支规模庞大的劳动大军:

  • 核心数多而简:现代数据中心 GPU(如 NVIDIA H100)拥有上万乃至数万个 CUDA Core,外加数百个 Tensor Core。每个核心都很“单薄”,没有复杂的分支预测和深度乱序执行。
  • 缓存极小:相比 CPU,GPU 的单核缓存微不足道。它不靠缓存隐藏延迟,而是靠海量线程切换:当一个线程在等待内存数据时,立刻换另一个线程上工,用吞吐换延迟。
  • 精简控制逻辑:把晶体管预算尽量留给算术逻辑单元(ALU),而非用于控制。假设芯片面积是一块蛋糕,CPU 把大半块切给了“调度和决策”,GPU 把大半块切给了“纯干活”。
  • 相对低频:单核频率低于 CPU,但胜在并行规模。

一句话总结:GPU 是一个“人海战术”的组织,几万个普通工人,专克结构统一、可批量并行的大活儿。


三、核心差异对照:一张表看清本质

| 对比维度 | CPU | GPU | 对大模型的意义 |
|---------|-----|-----|---------------|
| 设计目标 | 最小化单线程延迟 | 最大化整体吞吐 | LLM 训练/推理是批量矩阵运算,追求吞吐 |
| 核心数量 | 少(数十核) | 极多(数千~数万轻核) | Transformer 的注意力计算可拆成海量独立乘加 |
| 单核复杂度 | 高(乱序执行、分支预测) | 低(顺序执行、极简控制) | GPU 不爱 if/else,爱规整的 for 循环 |
| 缓存策略 | 大容量 L3,隐藏内存延迟 | 极小,靠多线程掩盖延迟 | 模型参数一次加载,反复复用,契合 GPU 批量处理 |
| 内存带宽 vs 计算 | 高算力,但内存带宽相对充裕 | 极高算力,内存带宽是瓶颈 | 15.5 节会展开:大模型往往是“内存墙”受限 |
| 适用负载 | 事务处理、逻辑判断、系统调度 | 矩阵乘法、卷积、像素渲染 | LLM 的核心是巨型矩阵乘法,天然契合 GPU |


四、为什么 Transformer 大模型“天生”属于 GPU?

知道了架构差异,再看大模型的计算特征,就会发现两者是天作之合

1. 计算模式高度规则
Transformer 的核心是 Self-Attention 和前馈网络(FFN),本质都是大规模矩阵乘法(GEMM)。一个矩阵里的每个元素计算方式一模一样,没有复杂的分支跳转。这正是 GPU 最擅长的 SIMD/SIMT(单指令多数据/单指令多线程)场景。

2. 数据并行度极高
训练时,一个批次(Batch)里有成百上千条序列,每条序列的注意力计算相互独立;推理时,批量请求(Batching)也可以并行处理。GPU 的万级线程正好一把梭。

3. Tensor Core 的专用加成
从 Volta 架构开始,NVIDIA GPU 引入了 Tensor Core——专门为混合精度矩阵乘加(FP16/BF16/INT8)设计的计算单元。一个 Tensor Core 一个时钟周期就能完成 4×4×4 的乘加累加,这让 Transformer 的训练速度相比纯 CUDA Core 提升了数倍到十数倍。

4. CPU 真的会“干瞪眼”
假设你用 64 核顶级 CPU 去训练一个 7B 参数的模型。不是不能跑,而是单位时间内完成的浮点运算量(FLOPS)相比一张 A100 可能差两个数量级。更致命的是,CPU 的内存通道数远少于 GPU 的 HBM 带宽,喂不饱计算单元,大部分时间都在等数据。


五、实用认知:五个必须纠正的误区

在实际工程选型或团队沟通中,关于 GPU 和 CPU 的关系,存在大量误解:

误区 1:GPU 可以取代 CPU
真相:GPU 是协处理器(Accelerator),离不开 CPU。训练/推理流程中,数据加载、预处理、分布式通信协调、Checkpoint 读写、日志记录,甚至 Python 解释器本身,都跑在 CPU 上。CPU 是 GPU 的“调度主任”。

误区 2:只要任务搬到 GPU 上就会变快
真相:GPU 讨厌强分支逻辑(if/else 密集)、讨厌细粒度同步、讨厌频繁的小数据量读写。如果你的代码里充满不规则循环和递归,在 GPU 上可能比 CPU 还慢。大模型框架(如 PyTorch、DeepSpeed)做了大量底层工作,把不规则的 Python 控制流转换成规整的 CUDA Kernel,才让 GPU 能高效运转。

误区 3:GPU 只负责训练,推理用 CPU 就行
真相:小模型(如 1B 以下)或极低并发场景,CPU 推理确实可行且成本低。但一旦模型上到 7B、70B,或者需要高并发低延迟,GPU 推理几乎是唯一选择。23 章将详述的 vLLM、TensorRT-LLM 等框架,全是围绕 GPU 吞吐优化的。

误区 4:GPU 核心数越多,单任务越快
真相:GPU 的“快”体现在整体吞吐。对于单个极小的请求(Batch Size = 1),GPU 的大量核心根本用不满,此时延迟可能不如高频 CPU。这也是为什么大模型推理要拼命做 Continuous Batching(连续批处理)——把零散请求攒成一批,喂饱 GPU。

误区 5:国产 AI 芯片直接对标 NVIDIA GPU 的“核心数”
真相:不同架构的“核心”定义千差万别。NVIDIA 的 CUDA Core、Tensor Core,华为昇腾的 AI Core,AMD 的 Stream Processor,指令集、精度支持、缓存结构完全不同。横向对比“多少核”没有工程意义,必须看实际模型的端到端吞吐训练框架适配度。16.3 节会专门讨论国产 GPU 的现状。


六、小结

CPU 和 GPU 的本质区别,不是“同一个赛道上谁跑得快”,而是从芯片晶体管分配的最底层就选择了不同的优化目标

  • CPU:用复杂控制和巨大缓存,赌的是“单个任务尽快出结果”;
  • GPU:用海量简单核心和线程切换,赌的是“一堆任务一起出结果”。

大语言模型的矩阵运算、数据并行、批量处理特征,恰好砸在了 GPU 的甜区上。这不是偶然,而是过去十年 AI 芯片演进与算法演进相互选择的结果。

在 15.2 节中,我们将把 GPU 这块芯片拆开,细看它的内部硬件结构:CUDA Core、Tensor Core、HBM 显存、调度单元……看看这些组件如何协同,把“人海战术”真正转化为每秒千万亿次的浮点运算。