ASI · 人工智能技术交流社区
广告北亿纤通光器件与光模块产品F-tone Networks(北亿纤通)光电芯片、光器件与光模块,AI 数据中心光互联访问官网 →

大模型推理显存估算:一张纸就能算明白的方法

算力观察 发表于 2026-10-20 01:42 · 16 次浏览 · 4 条回复
算
选卡之前先把账算清楚,免得买回来发现 batch size 上不去。分享一个手算方法:

1. 权重显存:参数量 × 精度字节数。70B 模型 FP16 就是 70×2=140GB,INT8 量化直接减半,INT4 再减半。
2. KV Cache:2 × 层数 × hidden_dim × 精度 × seq_len × batch。长上下文场景下这一项经常超过权重本身,128k 上下文不做 GQA/MQA 根本扛不住。
3. 激活显存:和 batch、seq_len 正相关,推理时相对小,但大 batch 下不能忽略。
4. 碎片和框架开销:预留 10~15%,vLLM 的 PagedAttention 能省不少碎片,但峰值还是要留。

举例:70B、FP16、GQA、seq 8k、batch 8,权重大约 140G,KV 约几十 G,一张 80G 的卡肯定不够,两张起步是合理的。

你们做推理选型时,KV cache 的估算和实测一般差多少?
b 管理员
【管理员回复】手算方法很实用,补充两处细节:一是 KV Cache 公式中应使用 KV 头数 × 头维度,而不是 hidden_dim。对于使用 GQA 的模型(例如 KV 头数为 8、注意力头数为 64),KV Cache 会比按 hidden_dim 计算的结果小很多,选卡时差距可能非常大;二是还要预留框架开销和激活值,vLLM 默认会按 gpu_memory_utilization 占用显存的大部分,剩余空间给 CUDA 上下文和临时缓冲。建议算完后用实际部署做一次验证。大家常用的模型是否都启用了 GQA?
算
GQA 这点说得很对,用 hidden_dim 估会高估好几倍,举个具体例子:70B 级常见配置 80 层、KV 头数 8、头维度 128,那么每 token 的 KV Cache = 2 × 80 × 8 × 128 × 2 字节(FP16)≈ 327KB;seq 8k、batch 8 就是约 21GB,而按 hidden_dim 8192 算出来是 168GB,差了一个数量级——这正是选卡时"算出来两张卡、实际一张卡就够"的典型来源。

再补充一个容易漏的:vLLM 的 PagedAttention 是按 block 动态分配 KV Cache 的,decode 阶段实测峰值通常比手算的理论上限低 20%~30%,但突发请求一上来还是会冲高。我们的做法是手算给上限、实测给下限,中间取 1.2 倍系数选卡,基本没翻过车。你那边实测和手算一般差多少?
G
新人学习中。想问下这个方案在量产上验证过吗?稳定性如何?
算
GPU_老谢 您好,这个手算方法本身就是从量产部署里反推出来的:权重 + KV Cache + 激活 + 开销这个框架,和 vLLM、TensorRT-LLM 的实际占用对得上。差距主要来自两个地方:一是框架预留,vLLM 默认按 gpu_memory_utilization(一般 0.9)占用显存,剩余部分留给 CUDA 上下文和临时缓冲;突发请求上来时 PagedAttention 按 block 动态分配,峰值通常比手算上限低 20%~30%,但流量毛刺时仍会冲高,所以选卡要按手算上限 × 1.2 倍系数留余量。二是长上下文场景 KV Cache 是主导项,务必按 KV 头数 × 头维度算,别按 hidden_dim,否则差一个数量级。稳定性方面,建议上线前用线上真实的输入输出长度分布做压测,把 max_num_seqs 和 max_model_len 卡死,避免个别超长请求把显存打爆。按这套流程走,基本不会翻车。
广告广告位招商A10 · 帖子页正文下方通栏 · 760×90 · ¥300/月联系 ads@asibbs.com了解详情 →
登录 后参与回复,还没有账号?立即注册