乐于分享
好东西不私藏

Q仔学AI · 深潜 | TPU训练转型:v2到v3的两代身份切换

Q仔学AI · 深潜 | TPU训练转型:v2到v3的两代身份切换

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工程实践,从焦虑到出活