为什么有效
模型的权重本质上就是数字。训练好的模型通常以 16 位精度(FP16 或 BF16)发布——每个参数占用 2 字节。量化将这些数字舍入到更少的位数:8 位量化每个参数使用 1 字节,而 4 位量化(Q4)则大约使用半字节。每个权重使用的位数越少,意味着需要存储的数据越少,在生成每个令牌时需要通过内存移动的数据也越少。这就是为什么量化模型不仅体积更小,而且运行速度通常也更快——回顾 推理如何工作 一文可知,解码速度受限于权重通过内存的速度,而非原始计算能力。
代价是精度损失。将权重舍入到更少的位数会引入微小误差,这些误差会在模型的层间累积,从而在激进的量化级别下对输出质量产生可测量的影响。有关每个参数的确切字节数以及由此产生的容量估算,请参阅 内存与卸载。
解读 GGUF 量化名称
为基于llama.cpp 的后端(包括 Ollama 和 LM Studio)分发的文件使用 GGUF 格式,其量化变体遵循llama.cpp 量化 README和GGUF 格式规范中记录的命名约定。典型的文件名如下所示:Qwen3-8B-Instruct-Q4_K_M.gguf——.gguf 之前的最后一段即为量化标识。
量化名称大致从 Q2_K(最小,质量最低)到 Q8_0(最大,近乎无损):
因此,
Q4_K_M 解码为:4 位,K-量化系列,中型变体。GGUF Q4_K_M 是混合精度,在实际中平均约为每个参数 0.5–0.56 字节——并非每个张量都固定为 4 位。
名称中
Q 后面的数字越高,并不意味着在所有维度上都“绝对更好”——它是一个大小/质量的调节旋钮。Q8_0 比 Q2_K 更接近原始的 16 位权重,但其文件大小也大约是其四倍。尺寸与质量的权衡
量化每降低一级,都能节省内存并通常获得一点速度提升,但会以一定的输出质量为代价。这种关系并非线性——质量在降至约 4 位时通常保持良好,低于此水平后则会明显下降:Q8_0:非常接近完整的 16 位质量。当您的 VRAM 充裕且希望获得最安全的质量余量时使用。Q4_K_M:常见的默认选项。对于大多数通用用途,在尺寸和质量之间取得了良好的平衡。Q2_K–Q3_K:体积最小,对 VRAM 最友好,但质量明显较低——仅保留用于其他选项都无法容纳的情况。
您应该选择哪种量化?
作为经验法则:从Q4_K_M 开始。大多数模型仓库都将其作为默认推荐是有原因的——它在消费级硬件上运行舒适,同时在大多数任务中保持接近全精度的输出质量。
在此基础上:
- 选择更高(
Q5_K_M、Q6_K、Q8_0):如果您的 VRAM 在考虑到目标上下文长度的 KV 缓存后仍有富余。 - 选择更低(
Q3_K、Q2_K):仅当Q4_K_M确实无法容纳且您没有其他选择时——请预期会出现明显的质量下降,尤其是在重度思考或编码任务中。
量化感知训练 (QAT)
以上内容描述的均为训练后量化 (PTQ)——一次性对已完成的模型进行量化。量化感知训练 (QAT) 则在训练期间模拟低精度,使权重学会容忍舍入,从而在相同位宽下更好地保持质量。Google 为 Gemma 提供了带有-it-qat 标签的 QAT 检查点——例如 ollama run gemma4:12b-it-qat——它们在大约四分之一的 BF16 VRAM 下仍能保持接近全精度的质量。QAT 检查点仍然以 GGUF 格式发布:QAT 是权重的生成方式,而非不同的格式。
量化感知训练详解
QAT 与 PTQ 和 GGUF 的区别,可运行的 Gemma QAT 检查点,以及使用 Unsloth 微调您自己的模型。
深入了解
阅读模型卡片
查找模型仓库实际提供的量化变体。
内存与卸载
完整的容量估算公式,包括每种精度的每参数字节数。
量化与硬件
将权重格式(GGUF、NVFP4、MXFP4、AWQ、GPTQ、MLX)与硬件匹配。
选定量化并运行之后
选择合适的量化能让模型在您的硬件上适配并良好运行。一旦它在本地响应请求,下一步就是从该机器以外的地方访问它。为其提供稳定的端点
Tokios 不选择、托管或微调模型——一旦它在本地运行,Tokios 就会将其转换为一个稳定的、经过身份验证的端点,您可以从任何地方调用它。