模型文件与量化档位:GGUF、safetensors、显存估算表
硬件前提
不需要 GPU。这一篇是买卡/选档之前的计算,做错后面全白干。
先分清两种文件
| 格式 | 是什么 | 什么时候用 |
|---|---|---|
| safetensors | 原始精度权重(多为 FP16/BF16),训练与服务器侧的标准 | 你要微调、要继续训练、要上 vLLM 这类服务 |
| GGUF | 打包 + 量化后的推理文件,llama.cpp / Ollama / LM Studio 用 | 你要在笔记本、消费级显卡上跑 |
一个常见坑:在 Hugging Face 上看到「7B 模型 4GB」就以为 4GB 显存能跑——那通常是量化文件,而原始仓库可能有几十 GB,选错文件会下错东西。
显存/内存估算表(记这张就够)
模型权重占用 ≈ 参数量 × 每位权重字节数:
| 精度 | 每参数 | 7B | 14B | 32B | 70B |
|---|---|---|---|---|---|
| FP16(2 字节) | 2B | 14GB | 28GB | 64GB | 140GB |
| 8bit | 1B | 7GB | 14GB | 32GB | 70GB |
| 4bit(Q4) | 0.5B | 4GB | 8GB | 18GB | 40GB |
还要加上下文开销:KV cache 随上下文长度和并发数增长。经验值:7B 模型每 4K 上下文约 0.5~1.5GB(不同结构差异大,以实测为准)。
所以「Q4 的 7B 是 4GB」不等于「8GB 卡能跑」——加上上下文、程序开销、系统占用,留 30%~50% 余量才不炸。
量化档位怎么选
GGUF 文件名里的 Q4_K_M、Q5_K_M 之类:字母数字大致表示平均位宽,后缀 S/M/L 表示混合精度策略(关键层保留更多位)。
| 档位 | 相对大小 | 建议 |
|---|---|---|
| Q8 | 约 1× | 显存充裕时优先,几乎无痛 |
| Q6 / Q5 | 约 0.7× / 0.6× | 想省一点又不想掉质量 |
| Q4_K_M | 约 0.5× | 默认起点,性价比最好 |
| Q4_K_S / Q3 | 约 0.45× / 0.4× | 只在装不下时用,先测质量 |
| Q2 及以下 | 很小 | 只用于「能跑就行」的实验,别用于正经任务 |
选择顺序:先定档位(能力需求),再看装不装得下;装不下就降档位或换更小模型,而不是硬塞。
实操:下载与校验
# 用 huggingface_hub 下载指定文件(示例)
pip install -U "huggingface_hub[cli]"
hf download <仓库名> <文件名>.gguf --local-dir ./models
检查三件事:
- 文件大小和上表估算是否一致(差太多说明下错精度);
- 仓库里是否有
tokenizer相关文件(GGUF 通常已内置,safetensors 必须有); - 许可证:能否商用、是否要求同名开源、是否禁止再分发。
常见坑
| 坑 | 后果 | 避免 |
|---|---|---|
| 把基座模型当指令模型下 | 复读、不听指令 | 文件名/标签里找 instruct / chat |
| 只看参数量不看精度 | 装不下或爆显存 | 用上表算字节数 |
| 忽略上下文开销 | 跑起来后 OOM | 留 30%~50% 余量 |
| 忽略许可证 | 商用风险 | 下载前读 license |
| 用量化版做评测 | 结论不可信 | 评测用原始精度 |
完成标志
给你手上这台机器,能写出一行结论:「我能跑 X 档位的 Y 模型,上下文最多 Z」。这一行是后面所有本地方案的边界条件。