一个粗略但够用的对照表。前提:推理框架用 vLLM 或 llama.cpp,量化优先。
显存怎么算
权重显存 ≈ 参数量 × 每参数字节数
FP16 ≈ 2 字节/参数
INT8 ≈ 1 字节/参数
INT4 ≈ 0.5~0.6 字节/参数
KV Cache ≈ 层数 × 2 × 隐藏维度 × 序列长度 × 字节数 × batch
大头经常是 KV Cache,不是权重。 长上下文场景尤为明显。
实用对照
| 显存 | 可跑(INT4/INT8) | 现实评价 |
|---|---|---|
| 8G | 7B~8B INT4 | 能跑,上下文短,别指望并发 |
| 16G | 14B INT4 / 8B FP16 | 单机开发够用 |
| 24G (4090) | 32B INT4 / 14B FP16 | 性价比甜点 |
| 48G | 70B INT4 | 要调 max-model-len |
| 80G (A100) | 70B FP16 | 生产起点 |
注意:上表是单卡。多卡要考虑张量并行的通信开销。
几个省显存的实操开关
--max-model-len:默认可能开很大,直接吃满 KV Cache。按实际需求砍。--gpu-memory-utilization:vLLM 默认 0.9,留点余量更稳。--kv-cache-dtype fp8:长上下文场景能省一半 KV 显存,质量损失可接受。- llama.cpp 的
-ngl:层数卸载,显存不够就少卸几层,用 CPU 顶。 - 量化选 AWQ / GPTQ,比 GGUF 在 GPU 上快。
一句话建议
先量你的实际上下文长度,再选模型。 大多数人按 128K 买卡,实际业务只用到 4K。
你现在的卡和模型组合是什么?跑起来多少 tok/s?贴出来给后来人参考。