买 AI 加速卡最容易踩的坑:只看 TOPS。A 卡标 300 TOPS,B 卡标 200 TOPS,实际跑你的模型 B 反而更快。不是厂商虚标——大概率是你的 workload 根本没吃到算力,而是卡在了访存上。Roofline 模型就是用来一眼看穿这件事的。

模型很直观:可达性能 = min(峰值算力, 访存带宽 × 算术强度)。算术强度 = 每次从内存搬运 1 字节能做多少次浮点运算(FLOP/Byte)。横轴是算术强度,纵轴是性能,屋顶的拐点叫 Ridge Point。落在拐点左边的是访存受限(memory-bound),右边的是算力受限(compute-bound)。

实战怎么算:拿一个 GEMM 举例,M=N=K=4096,计算量约 1.4e11 FLOP,搬运约 100MB 数据,算术强度约 1300 FLOP/Byte——大概率落在算力区。但推理 batch=1 的 decode 阶段,每次只算一个 token,权重却要全量读一遍,算术强度可能只有几十,直接掉进访存区。这就是为什么“训练看算力、推理看带宽”是句大实话。

工程落地三步:第一,实测带宽别信纸面,用 STREAM 或厂商带宽测试打个折,HBM 标 3TB/s 实测能到 80% 就不错;第二,峰值算力同样打折,稀疏/稠密、FP16/INT8 分开看;第三,把你的算子按算术强度标到图上。落在访存区就别再堆 kernel 优化了,方向是量化(INT8/FP8 减半搬运量)、KV Cache 优化、算子融合减少中间访存。

结论:选型时把“TOPS ÷ 带宽”算一下得到 Ridge Point,再估自己模型的算术强度——在拐点哪边,决定了你该为什么付钱。