推理批大小(batch size)与内存的关系
推理批大小(batch size)与内存的关系
batch 翻倍,显存近翻倍
推理时激活和 KV Cache 都跟批大小成正比。batch size 从 1 提到 8,KV Cache 大致乘 8,激活同步增长。显存占用因此接近线性,吞吐却不一定线性涨,因为小 batch 时 GPU 没喂饱,加大了才有规模效应,所以两者不是简单同涨同落。
以 70B 模型、seq=4K 为例,单请求 KV Cache 约 11GB,batch=8 时涨到约 88GB,已经逼近 80GB 显存上限,再大就得分卡或降精度。这就是 batch 与显存硬碰硬的地方,调参时不能只看吞吐曲线,得把显存红线一起画上。
在显存和吞吐间找拐点
把 batch 调大能摊薄固定开销、提升 GPU 利用率,直到撞上显存墙。经验是先把单请求上下文和并发算清,再逐步加压,找到显存刚好不 OOM、吞吐最高那一档。越过拐点后,每加一点 batch 就要么降速要么崩,边际收益转负。
- 小 batch:延迟低,但 GPU 利用率差
- 大 batch:吞吐高,但 KV Cache 吃显存
- 分页注意力:允许超量预留,缓解峰值
实际压测时建议从小 batch 起步,一边加一边盯显存占用和每 token 延迟,画出那条先升后塌的曲线。拐点右侧看着吞吐高,其实已经踩在 OOM 边缘,一根突发长请求就能把它推垮,不值得。
batch size 不是越大越好,它是一道显存与吞吐的权衡题,答案写在你的上下文长度和并发数里。容量配够了,才能把 batch 拉到理想拐点,否则只能在低吞吐区将就。上线前最好做一轮真实流量的压测,而不是只看合成负载。真实请求的长度和并发分布往往更极端,能提前暴露你在实验室里看不到的显存尖峰。
batch 拉满时显存和内存都到极限,模组的真实余量决定能不能稳。HeroTEST 提供模组级 DDR5 RDIMM 宽温测试与可信分级,用实测验证高负载表现,推理部署选型欢迎联系我们。