显存预算分四块
单卡显存要同时满足四类占用:模型权重、KV 缓存、激活与工作区、框架与通信缓冲。权重决定「跑不跑得起来」,KV 决定「能并发多少」,工作区随批大小变化,框架开销基本固定。把前三块分开算再合账,比笼统留个百分比更可靠,出问题时也更容易判断该压哪一项。
四块构成
| 组成 | 决定因素 | 随并发增长 |
|---|---|---|
| 权重 | 参数量乘精度字节数 | 否,多卡时按并行切分 |
| KV 缓存 | 序列长度、并发数、模型结构与缓存精度 | 是,接近线性增长 |
| 激活与工作区 | 批大小、算子实现与后端选择 | 是,但幅度较小 |
| 框架与通信缓冲 | 引擎实现与并行配置 | 基本固定,含通信缓冲 |
分阶段估算
分阶段估算
# 第一步:权重能不能装下(用十进制口径,注意与工具显示口径一致)
权重 ≈ 参数量 × 每参数字节数
# 第二步:KV 池能撑多少并发
KV 池 = 卡容量 × 引擎显存比例 - 权重 - 工作区预留
# 第三步:由 KV 池反推并发上限,再用高水位长度(如 P95)重算一次
# 第四步:留余量:框架开销与碎片按总量的一成预留典型使用场景
- 采购前评估:判断目标模型与并发目标能否在选定卡型上落地
- 排查溢出:定位是权重超了、KV 超了,还是工作区被批大小顶爆
- 调整参数:按构成决定先缩短上下文,还是降低引擎显存比例
- 多实例共卡:给每个实例分配比例时先算清各自四块占用之和
- 混部设计:小模型与大模型同卡时,按权重与 KV 分别核算
口径提醒
| 精度口径 | 每参数字节数按 FP16、INT8、四位分别取值 |
|---|---|
| 单位口径 | 十进制 GB 与二进制 GiB 相差约百分之七 |
| 统计口径 | 工具显示的已用显存包含分配器保留的缓存 |
| 预留口径 | 工作区与碎片按实测校准,不要照抄别人的比例 |
分阶段估算的顺序不能颠倒:先确认权重装得下,再算 KV 池推并发上限,最后用实测曲线校准预留比例。
只按权重选卡是最常见的误判:长上下文与高并发下 KV 缓存可以超过权重占用,容量规划必须把两块放在一起看。