大模型推理速度慢,很多人怪算力不够。但真相是:数据在内存和计算单元之间的搬运,才是最大的拖累。减少数据移动,不降低精度,才是当前推理优化最务实的路径。
你用的是 A100 还是 H100?还是国产的昇腾?
很多人以为,跑大模型推理慢,是 GPU 算力不够。于是拼命堆卡,从 8 张加到 32 张。但结果往往不如预期——卡越多,收益越低,甚至出现负加速。
问题的关键不在计算本身,而在内存。
先看一组数据。在现代 AI 芯片上,计算单元(Matrix Core、Tensor Core)的利用率通常在 20% ~ 40% 之间。也就是说,超过一半的时间,计算单元在空等数据。
为什么会空等?因为数据从显存搬运到计算单元的速度,远赶不上计算单元处理数据的速度。
类比一下:你有一个超级聪明的厨师(计算单元),每秒能切 100 个土豆。但厨房门口只有一个传送带(内存带宽),每秒只能送过来 10 个土豆。厨师大部分时间只能发呆。
这就是典型的内存墙问题。
传统的优化思路是降低模型精度:FP32 换 FP16,再换 INT8。但这会牺牲准确率,尤其在推理任务中,精度损失不可忽视。
更好的思路是:保持精度不变,减少数据搬运次数。怎么做到?
Transformer 推理中,Attention 的计算有大量重复读取。比如一个 token 的 Key、Value 矩阵,会被多个 Query 反复读。如果能把这些数据缓存在离计算单元更近的 SRAM 里,就能大幅减少对显存带宽的依赖。
百度在 Paddle Inference 里做了类似的优化,将 KV Cache 放在 On-Chip 存储,推理吞吐提升了 3 倍。
多个小算子合并成一个大算子,中间结果不需要写回显存,直接在寄存器里流水线处理。
比如 LayerNorm + MatMul 合并,数据停留在计算单元内部,带宽占用减少一半。阿里在 Blade 推理引擎里就用这招,对大模型推理效果明显。
不是一刀切把模型全量化到 INT8。而是对每个权重矩阵分别量化,敏感度高的部分保留 FP16,不敏感的部分压到 INT4。这样总数据量减小,但关键部分的精度没变。
华为 MindSpore 的 QAT 方案就支持这种混合精度,在代码模型上精度损失 <0.3%,内存带宽需求降低 40%。
现在业界有一个共识:推理优化从“堆算力”转向“省带宽”。原因很简单:
未来差距会越来越大。谁能在数据搬运上做文章,谁就能在推理成本上拉开差距。
国内一些公司已经开始行动。字节跳动在火山引擎上部署大模型推理服务,核心优化点就是 KV Cache 压缩和算子内存复用,成本比直接租 A100 低 60%。
不要被“算力焦虑”带偏了。对于 AI 推理,90% 的问题出在内存。
比买更多卡更重要的,是让每张卡上的数据少跑几趟。
参考:
免费获取企业 AI 成熟度诊断报告,发现转型机会
关注公众号

扫码关注,获取最新 AI 资讯
3 步完成企业诊断,获取专属转型建议
已有 200+ 企业完成诊断