很多人本地跑大模型的第一步是「买张显卡」,第二步才发现模型加载不起来。顺序反了。真正决定能不能跑起来的,是显存预算:模型权重、KV 缓存、运行时开销三者相加,超一点就会 OOM(显存不足)或者被系统悄悄丢到内存里,速度掉到无法接受。
这篇文章给一套可以直接套用的估算方法,以及在不同预算下的硬件选型思路。
一、显存被谁吃掉了
一次推理请求的显存占用,大致由四块构成:
- 权重(weights):模型参数本身,由参数量和量化精度决定,是最大的一块。
- KV 缓存(KV cache):随上下文长度和并发数线性增长,是长文本场景的主要变量。
- 运行时开销:框架、CUDA 上下文、算子临时缓冲,通常 0.5–1.5 GB 起步。
- 批处理与碎片:并发提高后显存碎片会明显增加,需要预留余量。
先估权重,再估 KV 缓存,最后加固定开销和 15%–20% 的余量,这就是你的显存下限。
二、权重显存速算
权重的近似算法是「参数量 × 每参数字节数」:
def weights_gb(params_b, bytes_per_param):
# params_b: 参数量,单位十亿(B)
# bytes_per_param: FP16=2, INT8=1, INT4 约 0.5(另加约 5%-10% 缩放开销)
return params_b * bytes_per_param * 1.08
for p in (7, 8, 13, 32, 70):
print(p, "B INT4 ≈", round(weights_gb(p, 0.5), 1), "GB",
" FP16 ≈", round(weights_gb(p, 2), 1), "GB")
常见规模的结果大致如下(单精度粗算,仅作选型参考):
| 参数量 | FP16 | INT8 | INT4 | 典型可跑设备 |
|---|---|---|---|---|
| 7B–8B | 约 15 GB | 约 8 GB | 约 4.5 GB | 12–16 GB 单卡 |
| 13B–14B | 约 27 GB | 约 14 GB | 约 8 GB | 16–24 GB 单卡 |
| 32B | 约 65 GB | 约 33 GB | 约 18 GB | 24 GB 单卡勉强、双卡更稳 |
| 70B | 约 145 GB | 约 73 GB | 约 40 GB | 多卡或大统一内存 |
结论很直接:想用单张 16 GB 显卡,就老老实实选 8B 级别的 INT4 量化模型,不要盯着 FP16 的 32B。
三、KV 缓存:长文本才是隐藏成本
KV 缓存的近似公式:
KV ≈ 2 × 层数 × KV头数 × 头维度 × 序列长度 × 批大小 × 每元素字节数
代入一个 8B 级别模型(32 层、8 个 KV 头、每头 128 维、FP16):
- 单条 8K 上下文:约 1 GB 左右;
- 单条 32K 上下文:约 4 GB 左右;
- 4 条 32K 并发:约 16 GB,直接超过模型权重本身。
这解释了一个常见现象:短对话很流畅,一贴长文档就卡死——不是模型不行,是上下文把显存吃穿了。
四、量化格式怎么选
| 格式 | 适合场景 | 优点 | 代价 |
|---|---|---|---|
| GGUF(Q4_K_M 等) | 单机 CPU+GPU 混合、消费级显卡 | 门槛最低,CPU 也能跑 | 并发能力弱 |
| AWQ / GPTQ(4bit) | 单卡 GPU 服务 | 显存省、GPU 推理快 | 需要预先量化权重 |
| FP8 | 较新架构的 GPU | 精度损失小 | 硬件要求高 |
| FP16 / BF16 | 有充足显存 | 精度最好 | 显存需求翻倍 |
一般建议:先跑 FP16 的量化版对比效果,确认能满足业务,再决定是否为了速度上更低比特。顺序反过来,很容易把「模型能力不足」误判成「任务本身做不到」。
五、按预算选硬件
- 核显/轻薄本:8B 以下 INT4 + GGUF,CPU 或核显混合推理。可用,但只适合单轮问答,不做长上下文。
- 单张 16 GB 消费卡:8B INT4 舒适,13B INT4 可行,长上下文要收着用。
- 单张 24 GB 消费卡:13B–14B INT4 舒适,32B INT4 能装但要牺牲上下文和并发。
- 大统一内存平台(如高内存容量工作站):能装 70B 级别的量化模型,代价是带宽有限、生成速度慢,适合离线批处理而非交互。
- 多卡或服务器:才谈 FP16 与并发服务化。
六、落地前先跑通的检查清单
- 确认模型权重大小与你算出来的显存下限一致,别只看模型名。
- 明确业务真正的上下文长度,按 2 倍预留 KV 缓存。
- 先用最小可用框架跑通一次完整请求,再谈优化。
- 记录首字延迟与每秒生成 token 数两个指标,作为后续对比基线。
- 跑一轮压力测试,观察显存碎片与并发上限。
- 把量化版本与实际效果一起记录,避免只记住「跑通了」而忘了「效果如何」。
小结
本地部署的门槛不在显卡价格,而在是否先把显存账算清楚。权重决定下限,KV 缓存决定上限,量化决定你能在这两者之间换到多少空间。把这三件事按顺序算一遍,选型基本不会有惊喜。