Q仔用AI · 芯片老油条的AI转型笔记
Q仔学AI · 深潜 | TPU训练转型:v2到v3的两代身份切换
一句话核心收获:v1 是一颗推理协处理器,v2-v3 把它改成了训练芯片——BFloat16 是精度与带宽的精确折中,HBM 是存储路线的彻底换轨,液冷是功耗逼出来的必然。推理芯片的基因没丢,但身体换了。
问题引入
③篇结尾留了个伏笔:v1 的 DDR3 决策是"明牌接受小 batch 不拼峰值"。这个决策在推理场景完全成立——权重装一次用很久,INT8 够用,DDR3 带宽够喂。
但两年后,谷歌自己把这套设计几乎全部推翻:DDR3 换成 HBM,INT8 换成 BFloat16,单颗协处理器换成 256 颗组 Pod,风冷换成液冷。
是什么逼得一颗"做对了"的芯片被自己推翻?答案是两个字:训练。
Keynote
- 困境:v1 只做推理,但谷歌的模型越来越大,训练需求爆炸。用 GPU 训练又贵又慢,能不能让 TPU 也干训练?
- 出路:v2 引入 BFloat16 + HBM + 双核,从推理协处理器变身训练芯片;v3 用液冷把功耗墙推上去,性能再翻倍。
- 闭环:v2-v3 证明了"推理芯片的基因可以长出训练的身体"——脉动阵列、scratchpad、确定性数据流全保留,但存储路线彻底换轨。
- 本篇结构:先拆训练对硬件的三个根本性新要求,再看 BFloat16 为什么是谷歌的答案,然后看 HBM 换轨和液冷的必然,最后回看 v1→v2→v3 的变与不变。
一、训练为什么比推理难得多
v1 干的活是推理:输入一张图,输出一个分类结果。数据单向流动,权重固定不动,算完就扔。
训练是另一回事:同一批数据要反复过很多遍(epoch),每一遍都要算梯度、反向传播、更新权重。这对硬件提出了三个 v1 完全没考虑过的要求。
要求一:精度不能太低
推理用 INT8(8 位整数)够了——反正只是分类,差一个像素无所谓。但训练要做梯度下降,权重更新量可能非常小。如果用 8 位,精度不够,梯度会被截断到零,模型学不动。
业界标准答案是 FP32(32 位浮点)。但 FP32 意味着:同样的面积,MAC 数量砍到 1/4;同样的 HBM,能装的模型大小砍到 1/4。训练不是不能用低精度,是不敢用。
要求二:带宽必须够大
训练时,每一轮迭代都要把全部权重从存储读一遍、把全部梯度写回去。推理可以"权重装一次用很久",训练做不到——每个 batch 都要更新权重,每个 batch 都要重新读。
v1 的 DDR3-2133 带宽 17 GB/s,喂推理够用,喂训练远远不够。③篇的 Roofline 分析说过:小 batch 推理落在 memory-bound 区。训练比小 batch 推理更 memory-bound——因为权重不是"装一次用很久",而是"每轮都要刷一遍"。
要求三:功耗必须扛得住
推理是"算一次就停",训练是"算几个小时甚至几周"。v1 整片 40W,插在服务器 PCIe 槽上风冷就够。但如果把算力翻几倍去做训练,功耗直接顶到 200-250W——PCIe 槽的散热上限大约是 75W,250W 必须液冷。
三个要求摆在一起,v1 的每一个核心决策都要重新审视。
二、BFloat16:谷歌自己发明的一种精度
面对"训练需要高精度、但 FP32 太贵"的矛盾,谷歌没有选业界常见的 FP16(半精度浮点,IEEE 754),而是自己发明了一种新格式:BFloat16(Brain Float 16)。

1-8-7 的精确折中
| 格式 | 符号位 | 指数位 | 尾数位 | 总位宽 |
|---|---|---|---|---|
| FP32 | 1 | 8 | 23 | 32 |
| FP16 | 1 | 5 | 10 | 16 |
| BFloat16 | 1 | 8 | 7 | 16 |
关键设计:BFloat16 的指数位和 FP32 一样是 8 位。这意味着它的动态范围(能表示的最大值/最小值)和 FP32 完全相同。
训练中最怕的是什么?不是精度不够,是溢出和下溢——梯度太大爆成 Inf,或太小变成 0。FP16 只有 5 位指数,动态范围窄,训练时极易溢出,必须配合 loss scaling 等技巧才能用。BFloat16 直接复用 FP32 的 8 位指数,从根上消除了溢出问题。
代价是尾数只有 7 位(FP16 有 10 位),精度更低。但对训练来说,精度损失一点可以靠更多迭代补回来,溢出导致训练崩溃则无法补救。BFloat16 是用精度换稳定性——训练场景下,这是正确的取舍。
硬件收益:算力直接翻倍
位宽从 32 砍到 16,同样的面积和功耗下,MAC 数量直接翻倍。v2 单芯片 128×128 的双脉动阵列,在 BFloat16 下跑出 45 TFLOPS——如果用 FP32,同样的硬件只能跑 22.5 TFLOPS。
更妙的是,BFloat16 和 FP32 的转换极其简单——直接截断尾数的低 16 位就行,不需要复杂的舍入逻辑。因为指数位完全一样,转换就是"砍尾巴"。这让混合精度训练(BFloat16 前向 + FP32 权重更新)的硬件开销几乎为零。
谷歌在 2019 年发表了 BFloat16 论文,随后这个格式被 ARM、Intel、NVIDIA 陆续采纳。今天 BFloat16 已经是 AI 训练的行业标准之一——一颗芯片的格式选择,改变了一个行业的精度约定。
三、HBM 换轨:从 DDR3 到 3D 封装
③篇讲过,v1 选了 DDR3 而不是 GDDR5,逻辑是"推理场景下权重复用高,DDR3 带宽够喂"。但训练场景下,这个逻辑不成立了——每轮迭代都要刷一遍权重,带宽需求暴增。
v2 的答案是:彻底抛弃 DDR,换成 HBM(High Bandwidth Memory)。

数字说话
| 指标 | v1(DDR3) | v2(HBM) | 提升倍数 |
|---|---|---|---|
| 存储容量 | 8 GiB | 8 GB | 1X |
| 带宽 | 17 GB/s | 600 GB/s | 35X |
| 每芯片功耗 | ~5W | ~10W | 2X |
带宽翻了 35 倍。这意味着训练时权重灌装不再是瓶颈——③篇 Roofline 里那个"memory-bound 区"被大幅压缩,更多层能落在 compute-bound 区,45 TFLOPS 的算力能真正被吃满。
代价:封装变了
HBM 不是插在插槽上的内存条,是用 TSV(硅通孔) 3D 堆叠在芯片封装里的存储。v2 的每颗芯片封装里集成了 8GB HBM,通过硅中介层和计算 die 互联。
这意味着:芯片不再是 v1 那种"单片 PCIe 卡"的简单形态了,而是需要先进封装产线支持。从 DDR3 到 HBM,不只是换了一种内存,是换了整个供应链。
四、v3:液冷的必然
v2 证明了"推理芯片能改成训练芯片"。但 v2 单芯片 45 TFLOPS、整板 180 TFLOPS,功耗还在 PCIe 卡的散热能力范围内。
v3 把单芯片算力翻到 ~125 TFLOPS(BFloat16),整板 4 芯片 ~500 TFLOPS。功耗直接顶到 250W 级别——风冷已经压不住了。
液冷不是选择,是物理定律
芯片散热的物理边界:
- 风冷上限:约 75W/芯片(服务器标准 PCIe 槽位);
- 液冷上限:可达 500W+ /芯片(直接液冷板接触)。
v3 单芯片 250W,4 芯片板卡 1000W——不液冷,芯片会过热降频甚至损坏。谷歌为 v3 设计了直接液冷方案:冷却液直接流过芯片背面的散热板,把热量带走。
液冷带来的不只是"能散热",还有可以持续跑满频。风冷方案在长时间高负载下会因为热量累积而降频;液冷的热容大得多,芯片可以 7×24 小时跑在标称频率——对训练这种"跑几周不能停"的负载,这是刚需。
v3 Pod:1024 颗的超算
v3 的集群形态也升级了:
- v2 Pod:256 颗芯片,~11.5 PFLOPS;
- v3 Pod:1024 颗芯片,~128 PFLOPS(BFloat16)。
芯片间通过专用高速互联(ICI)组成 3D Torus 拓扑,支持跨芯片的张量并行训练。从"一颗协处理器"到"一台超算",v3 完成了身份切换的最后一步。
五、变与不变:v1 的基因活到了 v3

回看 v1→v2→v3 的变化:
| 维度 | v1 | v2 | v3 |
|---|---|---|---|
| 定位 | 推理专用 | 训练+推理 | 训练+推理 |
| 精度 | INT8 | BFloat16 | BFloat16 |
| 存储 | DDR3 8GiB | HBM 8GB | HBM 32GB |
| 带宽 | 17 GB/s | 600 GB/s | ~900 GB/s |
| 散热 | 风冷 40W | 风冷 ~150W | 液冷 ~250W |
| 阵列 | 1×256×256 | 2×128×128 | 2×128×128 |
| 集群 | 单卡 | 256颗Pod | 1024颗Pod |
变化是剧烈的。但有些东西没变:
| v1 的基因 | v2/v3 的继承 |
|---|---|
| 脉动阵列 | 仍然是计算核心,只是从 256×256 拆成 2×128×128 |
| 软件管理存储 | 从 Unified Buffer 变成 HBM + 片上 Buffer,仍然是 scratchpad 思路 |
| 确定性数据流 | 编译器仍然排好每一拍,硬件不猜 |
| 删掉猜测性硬件 | 仍然没有缓存层次、没有分支预测 |
v2-v3 换的是精度、存储介质和散热方式;没换的是脉动阵列、scratchpad 和确定性数据流的哲学。
这也解释了为什么谷歌能从 v1 快速走到 v2——核心架构不用重新设计,只需要在存储和精度两个维度上做工程升级。v1 的"简单"不只是省了面积,还省了迭代成本。
小结
训练对硬件的三个新要求——精度、带宽、功耗——每一个都逼着 v1 做根本性改变。
BFloat16 的设计精髓是"复用 FP32 的指数位"——动态范围不变,尾数砍半,用精度换稳定性。
从 DDR3 到 HBM 不只是换内存,是换封装、换供应链、换芯片形态。
液冷不是"高级选项",是 250W 功耗下的物理必然。
v1→v2→v3 变的是身体(精度/存储/散热),不变的是灵魂(脉动阵列/scratchpad/确定性数据流)。
下一篇⑤,看 v4 怎么把互联变成主角:光电路交换(OCS)让 4096 颗芯片组成一台超算,SparseCore 处理稀疏特征——当芯片数量足够多,瓶颈不再是单颗芯片,而是芯片之间的连线。
参考文献
- BFloat16: The Secret to High Performance on Cloud TPUs —— Google Cloud Blog, 2019。BFloat16 格式设计动机、与 FP16/FP32 的对比、混合精度训练流程。
- A Study of BFLOAT16 for Deep Learning Training —— Kopp et al., arXiv:1905.12322, 2019。BFloat16 在训练中的系统性实验验证。
- Cloud TPU: Codesigning Architecture and Infrastructure —— HotChips 2019 Tutorial。v2/v3 芯片架构、HBM 集成、液冷系统设计一手来源。
- Google's Training Chips Revealed: TPUv2 and TPUv3 —— ResearchGate, 2020。v2/v3 微架构对比、性能功耗实测数据。
延伸阅读
- 系列③《TPU v1 深度拆解》:v1 的存储决策和控制逻辑,理解"被推翻"的起点。
- 系列⑤《TPU v4 光互联》(待写):当互联成为主角,4096 颗芯片怎么组超算。
- 《英伟达花200亿买下的Groq》(已发布):Groq 选了另一条训练路线——不训练,只做推理,和 v2-v3 的方向正好相反。
Q仔用AI
15年芯片设计老油条 × AI工程实践,从焦虑到出活
夜雨聆风