GPU 是“通用的并行计算显卡”,适合各种深度学习和通用高性能计算;TPU 是“为神经网络矩阵运算量身定制的专用芯片”,在特定场景(尤其谷歌自家业务)里更高效,但通用性和生态不如 GPU。
一、设计目标和定位
GPU(Graphics Processing Unit)
- 起源:最早为图形渲染设计(像素着色、几何变换),天然适合大规模并行。
- 现在定位:
- 通用加速器:深度学习训练 / 推理
- 高性能计算(HPC):科学计算、数值模拟
- 仍承担图形渲染职责(游戏、3D、视频编解码)
- 典型厂商:NVIDIA、AMD,部分国产厂商(如寒武纪、摩尔线程)也做“类 GPU”。
TPU(Tensor Processing Unit)
- 谷歌为自身机器学习工作负载设计的专用加速器(ASIC)。
- 针对“张量/矩阵运算”(尤其是 dense 矩阵乘法 + 卷积)极度优化。
- 主要用在:
- 谷歌内部业务(搜索排序、推荐、翻译、Gmail、广告等)
- Google Cloud 的 AI 训练 / 推理服务(TPU v2/v3/v4/v5e/v5p/v5p 等代际)。
简化理解:
- GPU = 多才多艺的“并行通用选手”。
- TPU = 为神经网络(尤其矩阵乘法)“专用打造的冠军工具”。
二、硬件架构对比(从“怎么算”上看)

Generated by Gemini(Nano Banana Pro)
1. 计算单元结构
GPU:
- 由很多个“流处理器(CUDA Core / Shader Core)”组成,分组为 SM(Streaming Multiprocessor)。
- 每个 SM 里有:
- 标量/向量 ALU(算加减乘)
- 寄存器堆
- 小型共享内存 / L1 cache
- Tensor Core(新一代 GPU 中专门为矩阵乘法优化的单元)
- 支持多种类型指令:
- FP32、FP16、BF16、INT8、INT4 等
- 控制流、纹理采样、图形管线等
TPU:
- 逻辑核心是大规模 systolic array(脉动阵列):
- 比如 TPU v2 是 128×128 的 MAC(乘加)阵列,TPU v3 更大。
- 这种结构几乎就是“硬焊死”的矩阵乘法机器,非常适合做
W·x这类操作。
- 强调数据流而不是丰富指令集:
- 把激活和权重流经阵列,节点之间流水传递并累加。
- 通常配有:
- 高带宽片上 SRAM(存放激活、部分权重)
- 与主机 / 其它 TPU 连接的高速互联(如 torus mesh)
结果:
- GPU:更通用,支持图形 + 通用计算 + 专门为矩阵乘法新增 Tensor Core。
- TPU:几乎把芯片大部分面积押在矩阵乘法上,用结构化硬件实现极致吞吐。
2. 存储与带宽
GPU:
- 显存:GDDR 或 HBM(高带宽内存)。
- 拥有多级缓存:L1、L2(NVIDIA Hopper/Blackwell 这代的 L2 非常大)、寄存器。
- 为了适应多种 workload,缓存层级比较复杂。
TPU:
- 更偏“scratchpad + SRAM”的数据流架构:
- 大片片上 SRAM 用来显式管理激活、权重。
- 设计上鼓励编译器/运行时把数据摆放好,以减少 off-chip 访问。
- 芯片间通过高速互联组成 pod(数百甚至上千个 TPU 芯片组成系统)。
直观差异:
- GPU:用缓存去“猜”程序的访问模式,靠硬件自动缓存。
- TPU:更偏“你(编译器)必须规划好访问模式,我给你高带宽的数据通路和 scratchpad”。
三、编程模型与生态
1. 工具链和框架支持
GPU 生态(特别是 NVIDIA)非常成熟:
- 编程接口:
- CUDA(最核心)、OpenCL(较少用)、Metal/Vulkan Compute 等。
- 上层框架一整套:
- PyTorch、TensorFlow、JAX、MXNet 等均有成熟 GPU 支持;
- cuDNN、cuBLAS、TensorRT、cuGraph、cuQuantum、cuOpt……各种库。
- 社区资源巨大:
- 教程、示例、第三方库、可视化工具(Nsight、Profiler)等。
TPU 生态(谷歌主导):
- 主力是 TensorFlow + XLA / JAX + XLA。
- 对外使用:
- 在 Google Cloud 上租用 TPU VM/Pod,通过
tf.distribute或 JAX 的pjit。
- 在 Google Cloud 上租用 TPU VM/Pod,通过
- 编程体验:
- 需要“对 XLA 友好”:多用静态 shape、纯函数式、少用 Python-side 控制流。
- 支持 PyTorch on XLA,但成熟度和社区规模远不如 CUDA 生态。
实际效果:
- GPU:随便买张卡(或租云 GPU),配合 PyTorch/TensorFlow 就能玩。
- TPU:几乎只能在 Google Cloud 上用,且对编程模式要求更“规整”。
2. 灵活性与通用性
GPU:
- 不只跑深度学习:
- 图形、视频编解码、游戏、CUDA 加速的 HPC 应用。
- 更容易跑“奇怪”的模型:
- 稀疏网络、动态图、RNN、大量条件分支逻辑。
- 小型实验和个人开发特别友好(买一块消费级 RTX/专业卡就行)。
TPU:
- 对“规整的张量运算”友好:
- CNN、Transformer、MLP、大规模矩阵乘法/卷积。
- 对动态 shape、稀疏模式、多分支逻辑不那么友好,需要编译器优化。
- 不适合需要图形、人机交互的应用。
四、性能与能效
注意:不同代际差异很大,这里只是原则和趋势,而不是某一代产品的具体数值。
1. 浮点算力
- GPU:
- 现代数据中心 GPU(如 NVIDIA H100、B200)在 FP16/BF16 上提供数百 TFLOPS 甚至更高的算力。
- 通过 tensor core 实现矩阵运算加速。
- TPU:
- 每一代 TPU 针对 BF16/INT8 等格式优化,单芯片原始算力也在百 TFLOPS 甚至更高量级。
- 整个 pod(数百/上千芯片)总算力极其庞大。
总体来说,在大规模矩阵乘法密集型 workload 上,单瓦能提供的有效算力,TPU 往往略优或相近(视代际/配置/模型而定)。
2. 能效(性能 / 功耗)
- TPU 由于硬件更加“专用、直通”,在矩阵乘法密集的大模型训练、推理上,通常有更高能效:
- 少了很多控制逻辑、图形管线、通用计算单元。
- 数据路径短、SRAM+脉动阵列组合非常高效。
- GPU 需要兼顾图形和各种通用 workload,硬件上有一定“通用性开销”,能效略逊一筹,但随着架构优化,这个差距在缩小。
但 这些优势往往要在“足够大规模、足够规整”的 workload 上才能体现出来。小模型或复杂控制流任务中,GPU 有时反而更有效率(因为 TPU 资源浪费、流水不满)。
五、应用与部署场景
1. 研发与实验阶段
- GPU 优势绝对明显:
- 灵活:想怎么写 PyTorch 就怎么写,调试方便。
- 硬件容易获取:本地台式机、实验室服务器、云 GPU 都很常见。
- 生态:论文开源代码几乎默认跑 GPU。
- TPU 在研究场景:
- 适合基于 JAX / TensorFlow + XLA 的团队进行大规模实验(如 Google/DeepMind 风格)。
- 对学术个人/小团队不太友好(云 TPU 成本+门槛+生态)。
2. 大规模训练(大型模型)
- 在 Google 生态内部:
- TPU pod 是训练大模型的主力,例如很多 Google/DeepMind 自家模型。
- 通过 XLA 编译优化,充分榨干矩阵乘法和网络互联。
- 在开放生态和其他大厂:
- NVIDIA GPU 依然是主力(大多数 LLM、扩散模型训练都在 GPU 集群)。
简单说:
- 如果你在 Google 体系内=> TPU 很香。
- 如果你是“全世界其它人”=> GPU 是现实选择。
3. 在线推理 / 部署
- GPU:
- 广泛用于在线推理(推荐系统、聊天机器人、图像生成)。
- 可以混合承载:同一台 GPU 服务器既可以跑推理又跑部分训练、又负责视频编码等。
- TPU:
- 谷歌很多线上服务使用 TPU 做推理加速,例如搜索排序、广告等。
- 但对于普通企业/开发者,部署 TPU 推理主要通过 Google Cloud。
六、成本与可获得性
GPU:
- 消费级:几千元~上万元人民币就能买到一块不错的显卡做深度学习。
- 数据中心级:A100/H100/B100 等非常贵,但云上租赁很普遍。
- 供应链广泛,品牌、型号多,二手市场也有。
TPU:
- 作为独立硬件几乎不对外零售。
- 只能在 Google Cloud 租用(TPU v2/v3/v4/v5 等),按小时或按长期合约付费。
- 对中国等地区用户,还有访问、支付、网络等现实问题。
结论:
对绝大多数个人和公司来说,GPU 是现实可用的选择;TPU 更像是“Google 提供的一种云上特种武器”。
七、开发体验对比(以开发者视角)
用 GPU 写深度学习:
- 一般流程:
pip install torch→model.to("cuda")→ 就跑了。- 想怎么调结构、写自定义 op、加 debug print 几乎都行。
- 调试:支持动态 graph(PyTorch eager)、逐步断点、丰富 profiler。
- 移植:从一块显卡到多卡、多机基本只需改少量分布式代码/API。
用 TPU(特别是 Cloud TPU):
- 更强调“静态图 + 编译”:
- 尽量少使用 Python-side 动态控制逻辑;
- 多用
jit/pjit、tf.function之类把计算图编译到 XLA。
- 调试:
- 有 profiler,但“编译 + 执行”模式让调试复杂度略高。
- 分布式:
- TPU pod 布局要考虑 replica、shard、mesh 拓扑等问题。
总结:
- GPU 更像“即时脚本执行 + JIT 优化”的世界,很自由。
- TPU 更像“高性能编译型语言”的世界,需要提前设计好。
八、未来趋势和如何选用
1. 趋势
- GPU:
- 继续演化出更强的 Tensor Core、更大 L2 cache、更快互联(NVLink / NVSwitch)。
- 在 AI 时代仍是“通用算力的主角”,且不断增加针对 AI 的优化(压缩格式、稀疏性)。
- TPU 和类似 ASIC:
- 用于超大规模、特定业务的优化非常有前景(谷歌、亚马逊、微软都在搞自研加速器)。
- 越来越多公司走“GPU + 自研 ASIC”的混合路线。
2. 你该选哪个?
- 如果你是:个人开发者 / 学术研究者 / 中小企业:
- 优先 GPU:
- 上手简单、生态成熟、资料多。
- 优先 GPU:
- 如果你是:大规模用 Google Cloud 的团队,并且愿意投精力绑定谷歌生态:
- 可以认真评估 TPU:
- 在大模型训练、推理成本上可能更有优势。
- 可以认真评估 TPU:
- 如果你是:超大厂(在考虑自研芯片):
- TPU 的设计理念(大规模 systolic array + 数据流架构)是很好的参考范式。
九、总结一句话版
- GPU:
通用并行计算平台,生态成熟、编程灵活、硬件易获取,是全世界深度学习研发的“默认标准”。 - TPU:
针对张量运算深度定制的专用加速器,在规整的大规模神经网络任务里能提供更高的吞吐和能效,但依赖 Google 生态,通用性和可获得性不如 GPU。