AI 为什么常用 GPU?CPU 在训练和回答时做什么?

IT那些事2026-09-27发布 WarpEdit
89 0 0

AI 常用 GPU,主要因为神经网络里有大量可以分开同时算的数值运算,GPU 很擅长集中处理这类工作。CPU 并没有因此退出:它运行程序、准备数据、安排计算,也能直接执行模型运算。训练一个模型和让模型回答一句话,通常都需要这些环节配合,只是工作量和分工不同。把它理解成“GPU 负责 AI,CPU 只负责开机”,会漏掉半台机器的工作。

CPU 通用工作台与 GPU 并行计算装置共同工作的手绘场景,标题为 AI 为什么常用 GPU

处理图形的芯片,为什么能算 AI?

CPU 是中央处理器,负责执行电脑里的各种程序;GPU 是图形处理器,名字来自它处理图形的老本行。画面里有很多像素和图形数据,需要做大量相似计算,这推动了 GPU 向同时处理许多份数据的方向发展。后来人们发现,神经网络也有不少适合这种处理方式的计算。

文字进入模型后,会转成数字表示。模型内部再把这些数字与参数——训练得到的大量数值——组合起来,反复做乘法、加法等运算。很多计算能整理成一行行、一列列的数字表,这就是这里所说的矩阵。矩阵乘法听起来陌生,但其中一个基本动作就是:对应的数先相乘,再把结果加起来。

看一个专门为说明原理设计的小例子:给四行数据都执行“第一个数乘 2,加上第二个数乘 3”。(1,2) 得到 8,(3,4) 得到 18,(5,6) 得到 28,(7,8) 得到 38。四行使用同一种规则,而且这一行不必等上一行的答案,因而可以分开同时处理。真实模型里的规模大得多,计算关系也更复杂,但这种可并行的工作正是 GPU 的用武之地。

四个独立计算工位用相同乘加规则处理不同数据,结果分别为 8、18、28、38
每行互不依赖,可以同时计算。这是教学算例与并行关系示意,不是真实芯片结构,也不表示 CPU 只能串行。

这不表示 CPU 只能一行一行算。现代 CPU 同样有多个核心,还能通过一条指令处理多个数;某些 CPU 也带有矩阵加速能力。区别在于设计侧重:CPU 适合处理种类多、分支和依赖关系复杂的程序,GPU 则把很多资源投入到大批相似运算的吞吐量上。两者的“核心”含义和能力也不一样,不能拿核心数量直接比谁强多少倍。

GPU 的优势也不只来自“人多”。例如 NVIDIA 的 Tensor Core 是专门加速矩阵乘加的计算单元,配套计算库会把模型操作安排成硬件擅长的形式。换句话说,芯片能力、模型运算和软件实现得对上,优势才能发挥出来。

训练时,CPU 不只是给 GPU 发号施令

如果还分不清这两个阶段,可以先看训练与推理有什么区别:训练会调整参数,普通回答则使用已有参数。

训练要反复做几件事:让模型处理样本,衡量输出与训练目标的差距,再计算调整参数所需的信息,并更新参数。其中常用的梯度,描述参数发生微小变化时,误差会怎样变化;优化算法据此决定怎样调整。大型神经网络中,这些步骤包含大量数值运算,适合交给 GPU 等加速器。

但样本不会自己从硬盘整整齐齐地跳进 GPU。在常见训练程序里,CPU 上运行的进程要读取数据、处理格式、把样本组成一批,再安排数据传输和计算任务;它还要运行训练程序的控制逻辑。GPU 忙着算这一批时,CPU 可以同时准备下一批,而不是全程站在旁边等。

这也是为什么“显卡很强,训练却没变快”并不奇怪。假如读取和准备样本跟不上,GPU 会等数据;如果计算被切成许多零碎小任务,安排任务本身也会产生开销。PyTorch 的性能指南专门讨论了异步加载和 CPU 到 GPU 的数据传输,目的就是减少这类等待。

上述分工是常见做法,不是不可调整的岗位表。部分预处理能放到 GPU,部分模型或优化器计算也可以放到 CPU。应当看程序实际把什么工作放在哪里,而不是把 CPU 永久叫作“指挥官”、GPU 永久叫作“苦力”。

你发出一句问题后,两者怎样配合?

假设一个聊天服务把模型放在 GPU 上运行,你输入“用三句话解释彩虹”。从收到问题到返回回答,可以分成三个容易观察的环节:

  1. 准备模型输入。服务接收请求,整理可用的对话,再把文字转成模型处理的 Token 编号。Token 是模型使用的文本片段单位,不一定等于一个字或一个完整单词。这类处理和请求调度常由 CPU 上的软件承担。
  2. 执行模型计算。GPU 用已经加载的模型参数处理输入,计算后续文本的候选结果。生成过程中仍然有大量数值运算,只是普通推理不需要像训练那样计算用于学习的梯度、更新参数。
  3. 把结果交回用户。服务将输出编号还原成文字,组织成响应,通过网络逐步发回页面。这部分也有 CPU 上运行的程序参与。
CPU 侧准备输入,GPU 使用已有参数进行模型计算,CPU 侧还原文字并返回回答的三阶段场景
常见 GPU 聊天服务的简化分工。工作台和编号卡是比喻,卡上的数字不对应真实分词结果;具体实现可将步骤合并、移动或交给其他设备。

这张分工图省略了缓存、排队和多机协作等细节,具体服务也会把某些步骤合并或放在别处。它要说明的是:GPU 可以承担主要模型计算,但一次聊天请求还包括模型计算之外的工作。例如 vLLM 的架构文档,就分别描述了接口服务、输入输出处理、调度与模型执行。

还有个看似矛盾的地方:既然 GPU 能并行,为什么回答还会一个字接一个字地冒出来?常见语言模型按 Token 逐步生成,下一步会使用此前已经生成的内容,不能简单把整段未来答案完全独立地同时算完。可是生成一个 Token 所需的内部计算,仍有很多可以并行的部分;服务端也可以合并处理多个用户的请求。输出有先后,并不意味着芯片内部只有一个计算单元在干活。

算得快,还要装得下、搬得动

只盯着芯片的算力数字,很容易看漏另外两件事:模型和中间数据能否装进内存,以及这些数据能多快送到计算单元。

对于独立显卡,GPU 通常有自己的显存。运行模型时,除了参数,还需要给中间结果和生成过程中的缓存留空间;有些系统采用共享或统一内存,不能照搬“CPU 一份、GPU 一份”的图景。容量影响能放下多少东西,带宽影响每秒能搬多少数据,两者不是同一个指标。

比如,模型虽然装得下,计算单元却经常要等参数和缓存读过来,继续提高峰值算力也未必明显加快回答。反过来,装不下时采用拆分或在不同设备间搬运的办法,可能又增加等待。NVIDIA 的性能文档将计算、内存带宽和延迟分别讨论,就是因为限制速度的不总是同一环节。

所以,不能仅凭“训练用了 GPU”推断“回答一定很快”,也不能只根据显存大小判断两台机器的实际速度。模型大小、数值存储方式、输入长度、同时处理的请求数和软件实现,都会改变负担落在哪里。

没有独立显卡,能不能用 AI?

能,但先分清模型在哪里运行。如果你使用的是把模型部署在服务器上的网页聊天服务,本机主要负责浏览器、输入显示和网络通信,模型的大头计算在远端完成。此时为自己的电脑换一张高端显卡,通常不会让服务端生成文字更快;页面本身卡顿则是另一回事。

如果要在本机运行模型,CPU 也能直接做推理,并非只能帮忙准备数据。llama.cpp 就支持 CPU 运算、GPU 加速以及两者混合执行。在合适的小模型、内存和速度要求下,纯 CPU 方案可以有实际用途;大型模型或较高吞吐量要求则常常更适合加速器。这里没有通用的“慢几倍”数字,必须结合具体模型和机器判断。

没有独立显卡,也不必然意味着只有 CPU:设备可能还有集成 GPU 或用于神经网络计算的 NPU,数据中心也可能使用其他专用加速器。GPU 是常见选择,而不是 AI 的唯一通行证。

理解这层关系后,看见“支持 GPU 加速”时,真正值得问的是:它加速了哪一步,当前任务的瓶颈又在哪一步?CPU 和 GPU 的分工,最终要落回这份实际工作上。

资料依据(核对于 2026 年 9 月 27 日):
NVIDIA:GPU Performance Background User’s Guide
https://docs.nvidia.com/deeplearning/performance/dl-performance-gpu-background/index.html
NVIDIA:Matrix Multiplication Background User’s Guide
https://docs.nvidia.com/deeplearning/performance/dl-performance-matrix-multiplication/index.html
PyTorch:Performance Tuning Guide
https://docs.pytorch.org/tutorials/recipes/recipes/tuning_guide.html
vLLM:Architecture Overview
https://docs.vllm.ai/en/latest/design/arch_overview.html
Intel:Comparing CPUs, GPUs, and FPGAs
https://www.intel.com/content/www/us/en/developer/articles/technical/comparing-cpus-gpus-and-fpgas-for-oneapi.html
Hugging Face:Optimizing LLMs for Speed and Memory
https://huggingface.co/docs/transformers/llm_tutorial_optimization
llama.cpp:项目说明与支持的硬件

© 版权声明

相关文章

暂无评论

none
暂无评论...