← Resources
By Ren Sugaya
— Performance Engineer, GPU & Inference
·
· INSIGHT
LLM 量化详解:GGUF、Q4 与 Q8 及质量取舍
量化通过以更低精度存储权重来压缩 LLM,在 4 位下将 VRAM 需求减少约四倍。本指南讲解 VRAM 计算方法,解码 Q4_K_M 等 GGUF 量化名称,对比 GGUF 与 GPTQ、AWQ 的差异,并指出质量实际从何处开始下降。
什么是量化,为何重要
量化降低了存储模型权重所用的数值精度——通常从 FP16(16 位,每权重 2 字节)降到 8 位或 4 位。由于内存与每权重位数呈线性关系,4 位比 FP16 少用约四倍的 VRAM。它还能加速推理,因为 token 生成受制于内存带宽,而不仅仅是算力。
大小计算很简单:bytes ≈ (parameters × bits-per-weight) ÷ 8。一个 8B 模型在 FP16 下约 16 GB;在 4 位下约 4.5 GB。正是这个差距,让原本需要数据中心 GPU 的模型得以在笔记本电脑上运行。
GGUF 是文件格式,不是量化方法
GGUF 是一种单文件格式,将量化权重与模型元数据(分词器、架构、超参数)一并存储。它是 llama.cpp 项目中 GGML 的继任者,针对 CPU、Apple Silicon(Metal)以及 CPU/GPU 混合卸载进行了优化——这也是它通过 llama.cpp、Ollama 和 LM Studio 主导本地及笔记本推理的原因。
量化级别体现在文件名中。数字是平均每权重位数;`_K` 表示 k-quants(一种现代超级块方法,具有双重量化的缩放因子和层感知的位分配);`_S`、`_M`、`_L` 分别是小、中、大变体。`_M` 会有选择地让敏感层——注意力层与输出层——保持更高精度,这正是 Q4_K_M 优于一刀切 4 位量化的原因。
Q4 对 Q5 对 Q8:用数据看大小与质量
一项针对 Llama-3.1-8B 的同行评审评估让这些取舍变得具体(大小针对该模型,比率具有普遍性)。以 FP16 基线困惑度约 7.32 为参照(越低越好):
- Q8_0 — 8.5 bits/weight,~7.95 GiB,困惑度 7.33:基本无损。
- Q6_K — 6.56 bpw,~6.14 GiB,困惑度 7.35。
- Q5_K_M — 5.70 bpw,~5.33 GiB,困惑度 7.40。
- Q4_K_M — 4.89 bpw,~4.58 GiB,困惑度 7.56:实用的最优平衡点,与基线相差不到半个百分点。
- Q3 及以下——急剧且持续的退化,尤其在推理任务上。
4 到 5 位区间是安全地带。低于 3 位则需使用 importance-matrix(IQ)量化,它借助校准数据把精度集中在最关键之处——可用,但只是内存极度紧张时的最后手段。
GGUF vs GPTQ vs AWQ
GGUF 并非唯一选项;正确的选择取决于运行环境。
- GGUF:专为 CPU、Mac 和混合卸载打造。本地与桌面推理选它。
- GPTQ:训练后量化,基于校准,利用二阶信息将每层误差降到最低。在给定位宽下按权重计算最精确,但生成速度慢,面向 GPU 服务(vLLM、TGI、TensorRT-LLM)。
- AWQ:基于激活幅值保护约 1% 最重要的权重;比 GPTQ 生成更快,并在 4 位下针对 GPU 优化。
- bitsandbytes:加载时即时量化,无需预量化检查点或校准——最简单的方式,广泛用于 QLoRA 微调。
实用分工:本地与笔记本用 GGUF,GPU 服务器吞吐量用 AWQ 或 GPTQ。
实际会损失多少质量?
4 位时比大多数人担心的少得多,而低于 3 位时又比预期的多。在 Llama-3.1-8B 评估中,Q8 与完整精度几乎无异,Q4_K_M 在平均基准测试上损失不到半个百分点,质量悬崖出现在 3 位,在推理密集型评估(如小学数学)上的降幅最为明显。请记住,绝对困惑度和大小数字因模型而异——百分比具有普遍性,但务必查看你所用基础模型的具体数据。此外,VRAM 预算要超出文件大小:KV 缓存和约 10–15% 的框架开销也需要空间。
osFoundry 中的量化
选择量化通常意味着要理解 bits-per-weight、为 KV 缓存留出空间,还要在一堆晦涩的 GGUF 后缀中翻找那个不会崩溃的文件。osFoundry 的本地推理省去了这一步:它自动检测可用内存并选出合适的量化方案——VRAM 紧张时用 Q4_K_M,有余量时用 Q5_K_M 或 Q8_0——让模型以硬件所能支持的最佳质量运行。目录只展示兼容的版本而非所有变体,若较重的量化装不下,则会优雅地回退。你无需知道 Q4_K_M 是什么含义,就能获得手动挑选 GGUF 时那种大小与质量的最优平衡点。
Frequently asked questions
- 用简单的话说,什么是 LLM 量化?
- 就是以更低的数值精度存储模型权重——例如用 4 位而非 16 位——来压缩模型。由于内存与每权重位数成正比,4 位量化比 FP16 少用约四倍 VRAM,运行也更快,代价是质量上轻微且通常可接受的损失。
- GGUF 代表什么,它是什么?
- GGUF 是 llama.cpp 项目的单文件模型格式(GGML 的继任者),将量化权重与模型元数据捆绑在一起。它针对 CPU、Apple Silicon 和 CPU/GPU 混合推理进行了优化,因此成为 llama.cpp、Ollama 和 LM Studio 等本地工具的标准格式。它是文件格式,不是量化算法。
- Q4、Q5 和 Q8 有什么区别?
- 数字是平均每权重位数,因此 Q8 比 Q5 更大、精度更高,Q5 又比 Q4 大。对于典型的 8B 模型,Q8 约 8 GB,几乎无损;Q5_K_M 约 5.3 GB,差距轻微;Q4_K_M 约 4.6 GB,质量损失不到半个百分点,是大小与质量的最优平衡点。
- 我该用哪种 GGUF 量化?
- 大多数情况下用 Q4_K_M——它是大小与质量的最佳平衡,也是标准起点。若有富余的 VRAM 且想要更高精度,可升至 Q5_K_M 或 Q8_0;只有在内存确实紧张时才考虑低于 Q4(使用 importance-matrix IQ 量化),因为 3 位及以下质量会急剧下降。
- 4 位量化会损失多少质量?
- 出乎意料地少。在同行评审的 Llama-3.1-8B 评估中,Q4_K_M 在平均基准测试上比完整精度基线低不到半个百分点。明显的降幅从 3 位开始,尤其在推理和数学任务上。具体数字因模型而异,但 4 到 5 位被普遍视为安全区间。
- GGUF vs GPTQ vs AWQ——该选哪个?
- 通过 llama.cpp 或 Ollama 进行本地、笔记本及 Apple Silicon 推理选 GGUF。GPTQ 和 AWQ 存储 GPU 友好型布局,更适合在 vLLM 或 TGI 下追求 GPU 服务器吞吐量——AWQ 生成更快,GPTQ 按权重计算通常最精确。bitsandbytes 最简单,因为它在加载时无需校准即可完成量化。
- 如何计算量化模型所需的 VRAM?
- 使用 bytes ≈ (parameters × bits-per-weight) ÷ 8。4 位下每十亿参数约 0.5 到 0.6 GB,因此 8B 模型约 4.5 GB。然后加上 KV 缓存和约 10 到 15% 的框架开销——实际运行时的内存占用始终大于磁盘上的文件大小。
Sources