先把 Q4_K_M 这串字符读懂
GGUF 是 llama.cpp 的单文件格式,权重、词表、元数据打成一个文件,Ollama 和 LM Studio 底层都用它。量化名拆开看:Q4 表示主权重压到 4 bit;K 指 K-quant 分块量化,按 block 单独存缩放系数,比老的 Q4_0 精度好很多;M 是 medium,表示不同张量混用精度,注意力里的部分张量保留 Q6_K,前馈主体用 Q4_K。同族还有 Q4_K_S、Q5_K_M、Q6_K、Q8_0(接近无损),以及更狠的 IQ2_XXS、IQ3_M 这类带重要性矩阵的量化。经验结论很稳定:Q4_K_M 是质量与体积的拐点,再往下(Q3、IQ2)中文表达和推理能力肉眼可见地下滑,Q5_K_M 提升有限但体积涨约两成,除非做基准对照,一般不值。
按显存倒推,别按模型名硬塞
"权重文件大小"不等于"显存占用",还要加 KV cache、计算缓冲和系统桌面占用,实测留 2 GB 以上余量才稳。下面按 Q4_K_M 估:
| 模型 | 权重体积 | 建议显存 | 备注 |
|---|---|---|---|
| qwen2.5:3b | 约 2.0 GB | 4 GB | 还能开 8k 上下文 |
| 7B(qwen2.5 / coder) | 约 4.7 GB | 8 GB | 主流甜点,先 4096 ctx |
| 14B | 约 9.0 GB | 12 GB | 上下文别开太大 |
| 32B | 约 20 GB | 24 GB 或双卡 | 单卡勉强,速度一般 |
6 GB 卡的正确打开方式不是硬塞 7B 然后全量 CPU offload,而是换 7B 的 Q4_K_S/Q3_K_L,或者直接降到 3B、phi4-mini、gemma2:2b 这类 4B 级模型,实测体验好得多。
下载与运行的命令
Hugging Face 上同一个仓库常放十几个量化文件,用 --include 只挑需要的那个,别把整个仓库拉下来。国内直连慢就切镜像端点。
huggingface-cli download Qwen/Qwen2.5-7B-Instruct-GGUF
--include "*Q4_K_M*.gguf" --local-dir ./models
HF_ENDPOINT=https://hf-mirror.com huggingface-cli download
Qwen/Qwen2.5-7B-Instruct-GGUF --include "*Q4_K_M*.gguf" --local-dir ./models
llama.cpp 里 -ngl 控制放多少层到 GPU,设 99 表示全放;显存不够就调小,比如 20,只把前 20 层放显卡,其余走 CPU,形成混合推理。Ollama 会自动选 GGUF,也能从本地文件导入成一个自定义模型。
./llama-cli -m ./models/qwen2.5-7b-instruct-q4_k_m.gguf
-ngl 99 -c 4096 -p "用一句话解释量化"
FROM ./models/qwen2.5-7b-instruct-q4_k_m.gguf
PARAMETER num_ctx 4096
PARAMETER temperature 0.3
ollama create q7 -f Modelfile
ollama run q7
踩坑清单
- 静默降速:显存不足不报错,而是把层挪到内存,token/s 从 30 掉到 3,很容易误判成"模型不行"。用 nvidia-smi 和 ollama ps 看真实占用。
- 上下文也吃显存:-c 翻倍,KV cache 跟着涨,爆显存时先压 ctx,再压量化等级。
- 困惑度只作参考:perplexity 对比排名和中文实际体验不完全一致,自己拿 20 条真实问题测更可信。
- Agent 场景别贪小:工具调用和 JSON 输出对量化更敏感,做自动化流程时低于 Q4_K_M 的版本会明显变不稳定。
微信赞赏长按识别 / 扫一扫
支付宝长按识别 / 扫一扫
留言与讨论
评论提交后需作者后台审核才会公开 · 同一 IP 每小时最多 10 条 · 本小时还可发布 10 条