速度取决于三件事:
为什么同一个模型,跑 50ms 而不是 50s 或者 5ms?
三个可能的瓶颈:
| 瓶颈 | 描述 | 类比 |
|---|---|---|
| 🧮 计算 | CPU/GPU 算不过来 | 工人干活慢 |
| 📦 内存带宽 | 数据搬运太慢 | 送货太慢 |
| 🔗 多卡通信 | 卡与卡之间传输慢 | 车间之间协调差 |
超级计算机越来越快,但程序速度提升却不如预期。
为什么?
问题不在于 CPU 有多快,而在于 数据能不能及时送到 CPU 手里。
🧑💻 超级打字员:1000 字/分钟 📝 你递稿子:10 字/分钟
他再快也没用,大部分时间都在干等!
| 芯片 | bf16 算力 |
|---|---|
| NVIDIA H100 | ~9.89×10¹⁴ FLOPs/s |
| Google TPU v6e | ~9.1×10¹⁴ FLOPs/s |
做 1万亿次(10¹²)运算: \(\frac{10^{12}}{9.89 \times 10^{14}} \approx 1\text{ms}\)
| 芯片 | HBM 带宽 |
|---|---|
| NVIDIA H100 | 3.35 TB/s |
| Google TPU v6e | 1.6 TB/s |
🏭 机器(计算核心)再快 📦 原材料(数据)送不过来 ⏸️ 机器就得停工等待!
| 连接类型 | 说明 |
|---|---|
| NVLink | NVIDIA 卡间连接(快) |
| ICI | TPU 卡间连接(快) |
| PCIe | 通用接口(相对慢) |
卡间带宽比 HBM 低 1-2 个数量级
→ 多卡通信往往是更大的瓶颈!
最好情况(完美重叠): \(T = \max(T_{\text{计算}}, T_{\text{通信}})\)
最坏情况(完全不重叠): \(T = T_{\text{计算}} + T_{\text{通信}}\)
直觉:每搬运 1 字节数据,能做多少次运算?
| 条件 | 结果 |
|---|---|
| 算法强度 > 临界强度 | ✅ 计算受限(好事!) |
| 算法强度 < 临界强度 | ❌ 通信受限(浪费算力) |
🎯 算术强度就像”性价比” —— 每搬运 1 字节数据能做多少活。 性价比越高,硬件利用率越高。
| 项目 | 数量 |
|---|---|
| 加载数据 | 4N + 2 字节 |
| 运算次数 | 2N - 1 FLOPs |
对比临界强度 240…… 差了 480 倍!💀
🧮 数学家能力:每秒算 240 道题 📝 你送题速度:每秒 1 道题
他 99.5% 的时间都在摸鱼!
这就是为什么 GPU/TPU 上很多”逐元素运算”效率不高:
它们的算术强度都很低!
FLOPs/s
↑
峰值 ├────────────────── 天花板(算力极限)
│ ╱
│ ╱
│ ╱ 斜坡(带宽限制)
│ ╱
│ ╱
│ ╱
└───────────────────→ 算术强度
↑ 临界点
| 区域 | 位置 | 含义 | 性能表现 |
|---|---|---|---|
| 🔺 斜坡 | 临界点左边 | 通信受限 | 性能随强度线性增长 |
| ⬜ 平台 | 临界点右边 | 计算受限 | 性能达到峰值 |
| 项目 | 计算 |
|---|---|
| 加载数据 | 2(BD + DF + BF) 字节 |
| 运算次数 | 2BDF FLOPs |
bf16 矩阵乘法要跑满算力,batch size > 240!
X[:, :D/2] @ Y[:D/2, :] X[:, D/2:] @ Y[D/2:, :] | 单卡 | 双卡 | |
|---|---|---|
| 计算时间 | $\frac{2BDF}{\text{算力}}$ | $\frac{BDF}{\text{算力}}$ ⬇️ |
| 通信来源 | HBM带宽 | 卡间带宽 🔄 |
| 通信量 | 2(BD+DF+BF) | 2BF |
如果有 4 张卡呢?8 张卡呢?
| 场景 | 要满足的条件 |
|---|---|
| 单卡 bf16 matmul (TPU) | Batch size > 240 |
| 单卡 bf16 matmul (H100) | Batch size > 300 |
| 多卡并行 | 模型宽度 D > 临界值 |
| int8 量化 | 临界 batch size 更低(约 120) |
如果用 fp32 代替 bf16,算术强度会怎么变?
注意力机制的算术强度是多少?它是计算受限还是通信受限?
如果你的模型只有 D=1024,在多卡上扩展效果会好吗?
H100 的临界 batch size 是多少?(提示:查规格表)
📄 Roofline 论文原文 Williams, Waterman, Patterson (2009) “Roofline: An Insightful Visual Performance Model”
🔗 硬件规格
联系方式
下节课见!我们一起打开 TPU 的”黑盒子”! 🔓