GGUF 是 llama.cpp、Ollama、LM Studio、KoboldCpp 都能直接读的格式,本地推理基本都应该选它。真正需要做的决定只有一个——下哪个量化版本,而这个决定只由一个数字决定:你能空出多少显存。
这一页用一张表替你看完四篇文章。对绝大多数人来说 Q4_K_M 就是正确答案:相比全精度模型只损失大约 5-7% 的质量,文件却缩到四分之一。只有在显存确实富裕时才上 Q5_K_M 或 Q8_0;BF16 留给「评测模型」而不是「使用模型」的场景。
量化是在文件大小、显存和输出质量之间做交换。实际上质量曲线在 4bit 以上很平,所以社区默认用 Q4_K_M。
| 量化 | 位宽 | 相对 BF16 的质量 | 什么时候选它 |
|---|---|---|---|
| BF16 / F16 | 16-bit | 100%(基准) | 你要公布基准测试结果、做微调,或者专门对比量化带来的差异。这类文件比 Q4 大 3-4 倍,纯聊天基本不值。 |
| Q8_0 | 8-bit | 约 99% | 显存够用,且希望接近无损的输出。体积大约是 Q4 与 BF16 的中间值。 |
| Q5_K_M | 5-bit | 约 96-97% | 能比 Q4 多拿出约 25% 显存,并且在长文写作或代码这类任务上想要肉眼可见的提升。 |
| Q4_K_M ← 推荐 | 4-bit | 约 93-95% | 几乎总是它。这是 K-quant 家族里每 GB 质量最高的一档,也是 Ollama 默认下载的版本。大多数人的最佳默认值 |
低于 4bit(Q3_K、Q2_K)时,推理类提示词的质量会明显崩。如果 Q4_K_M 塞不进去,请换更小的模型变体跑 Q4,而不要让更大的变体跑 Q3——小模型会赢。
下表为社区量化版本,已与 Google 官方 Gemma 4 模型卡交叉核对。文件大小会随仓库修订变化,下载前请到对应仓库确认。
| 模型 | 参数量 | Q4_K_M | Q5_K_M | Q8_0 | BF16 | Q4_K_M 显存 | Hugging Face 仓库 |
|---|---|---|---|---|---|---|---|
| Gemma 4 E2B-it | 5B | 3.11 GB | 3.36 GB | 5.05 GB | 9.31 GB | ~4 GB | unsloth/gemma-4-E2B-it-GGUF |
| Gemma 4 E4B-it | 8B | 4.98 GB | 5.48 GB | 8.19 GB | 15.1 GB | ~6 GB | unsloth/gemma-4-E4B-it-GGUF |
| Gemma 4 26B-A4B-it | 27B MoE | 16.9 GB | 21.2 GB | 26.9 GB | — | ~20 GB | unsloth/gemma-4-26B-A4B-it-GGUF |
| Gemma 4 31B-it | 33B Dense | 18.3 GB | 21.7 GB | 32.6 GB | — | ~22 GB | unsloth/gemma-4-31B-it-GGUF |
显存数字按 Q4_K_M、8K 上下文、并预留约 1 GB KV cache 空间估算。上下文越长 KV cache 越大——E4B 在 32K 上下文下比 8K 多占约 2 GB。所以请按你实际用到的上下文来预算,而不是只看权重。
四种方式,从最省事到最可控。下面的命令都可以直接复制。
Ollama 会自动挑一个适配你硬件的量化,并帮你把 llama.cpp 编译好。没有特别理由的话从这里开始。
# fastest path — Ollama picks the quant for your hardware
ollama pull gemma4:e4b
ollama run gemma4:e4b
# pin a specific quant
ollama run gemma4:e4b-q8_0需要指定某个量化、需要断点续传,或者在无法安装 Ollama 的容器里部署时用它。
pip install -U huggingface_hub
# one file only — the recommended 4.98 GB build
huggingface-cli download unsloth/gemma-4-E4B-it-GGUF \
--include "gemma-4-E4B-it-Q4_K_M.gguf"
# the whole quant set, if you want to compare
huggingface-cli download unsloth/gemma-4-E4B-it-GGUF --local-dir ./gemma4-e4b-gguf完全绕过 Ollama。用 -hf 可以直接流式加载仓库里的文件而不用先下载;需要 OpenAI 兼容接口时用 llama-server。
# straight from the hub, no manual download
./llama-cli -hf unsloth/gemma-4-E4B-it-GGUF:Q4_K_M
# server mode, OpenAI-compatible on :8080
./llama-server -hf unsloth/gemma-4-E4B-it-GGUF:Q4_K_M --port 8080 -c 32768在 Discover 里搜 gemma-4,再在模型卡的下拉框里选量化。LM Studio 会直接标出每档量化的预估显存,比看表更省事。
第一次失败几乎都是这四种情况,每一种的修法只有一个。
显存不够。GGUF 会照着你给的文件去加载,超出显存就溢出到内存,小机器上表现不是清晰报错而是直接被 OOM 杀掉。
修法: 降一档量化(Q5_K_M → Q4_K_M),或者换更小的变体。如果内存够但显存不够,加 --n-gpu-layers 只把部分层放到 GPU。
这是采样参数问题,不是 GGUF 文件问题。量化会影响连贯性,但循环几乎总是温度或重复惩罚造成的。
修法: 把重复惩罚提到 1.1 左右,聊天场景温度保持在 0.6-0.9。预设页里按任务列了实测过的数值。
模型在 CPU 上跑。CPU 上的聊天和代码输出看起来可能是对的,但每次回答要几分钟,感受上等同于卡死。
修法: 确认 GPU 卸载真的生效(llama.cpp 启动时会打印层的分配,Ollama 日志里也能看到)。Apple Silicon 请改用 MLX 而不是 GGUF,统一内存下它明显更快。
上下文溢出。当提示超过设定窗口时,最早的对话轮次会被静默丢弃,或者在指令中途被截断。
修法: 显式设置一个匹配用途的上下文长度(-c 32768,或 Ollama Modelfile 里的 num_ctx)。调高之前,先照上表核对显存代价。
E4B-it 的 Q4_K_M。如果可用显存不到 6 GB,就从 E2B-it 的 Q4_K_M 开始。推荐 Q4_K_M 的原因是它在四分之一体积下仍保留约 93-95% 的全精度质量,而且所有主流运行器都支持它。
Q4_K_M 下大约:E2B 4 GB、E4B 6 GB、26B-A4B MoE 20 GB、31B Dense 22 GB。这些数字已含 8K 上下文和少量安全余量。E4B 上 32K 上下文大约再多 2 GB,所以只有在有余量时才调高上下文。
部分是。Google 在 Hugging Face 上发布官方 QAT 检查点,而绝大多数人下载的 GGUF 量化是社区基于这些权重转换的,通常来自上表链接的 unsloth 仓库,同样以 Apache 2.0 许可再分发。如果商用需要确认来源,请查看对应仓库的模型卡。
只有在显存确实富裕、并且做的是质量敏感任务时才值——比如长代码生成或模型行为评测。在盲测里大多数人无法稳定区分 Q8_0 和 Q5_K_M,而对聊天、摘要、起草这类任务,Q4_K_M 已经足够接近。
能,但大模型变体每次回答会以分钟计。CPU 推理是可用的,llama.cpp 会吃满所有核心,但 26B 和 31B 在纯 CPU 上不现实。只有 E2B 的 Q4_K_M 在纯 CPU 机器上还能用。
可以,两者都原生支持 GGUF——这个格式本来就是围绕它们设计的。Ollama 会自己管理文件副本,LM Studio 则指向磁盘上的文件。如果你已经有一个 GGUF 文件,LM Studio 可以直接加载,不会重新下载。
GGUF 是为 llama.cpp 本地推理设计的单文件格式,量化结果和加载元信息都打包在里面。SafeTensors 是 Transformers 和 vLLM 使用的训练/服务格式。笔记本和工作站选 GGUF,服务器或打算微调的场景选 SafeTensors。
下载总览页同时覆盖 SafeTensors、GPTQ 与 MLX,并附官方 Google 来源和各自的显存说明。