你打开 Hugging Face 想跑一个本地 LLM,结果同一个模型下面是一整墙的文件——Q4_K_MQ5_K_SGPTQAWQIQ3_M……然后你就懵了。这是大多数人撞上的第一堵墙。本文实打实地回答:「我到底该下载哪个量化文件才能把它跑起来?」至于什么是量化(概念本身),我们留给另一篇文章,这里专注于选择格式

我们会讲清楚为什么格式由运行引擎决定、GGUF 的命名规则(Q4_K_M)、四种格式对比、如何挑选位深,以及如何找到文件。先把要点摆在前面。① 格式基本上由「你打算用哪个引擎来跑」决定(GGUF = llama.cpp/Ollama;GPTQ/AWQ = vLLM 之类的 GPU 引擎)。 Q4_K_M 表示「4-bit、K-quant、尺寸 M」——在大多数情况下都是常见的甜点档。 ③ 拿不准就从 Q4_K_M 起步;如果 VRAM 够,再往上升到 Q5/Q6。

QUANTIZATION FORMATS

格式由运行引擎决定

—— 先定引擎,文件选择立刻就收窄了

GGUF llama.cpp / Ollama / LM Studio = 也能跑 CPU、Mac、部分 GPU(唯一对 CPU 友好的)
GPTQ vLLM / TGI / ExLlama = GPU(需要校准)
AWQ vLLM / TGI = GPU(通过激活值保护关键权重)
EXL2 ExLlamaV2 = GPU(可精细调节位宽)

所以第一个问题是「我要用哪个引擎来跑?」本地在 CPU/Mac 上跑 → GGUF。追求速度用 GPU 服务器 → GPTQ/AWQ

1. 为什么量化文件让人困惑

量化的意思是把模型权重舍入到更少的比特,以缩减体积和内存(见什么是量化)。麻烦在于,做这种舍入有好几种方法(格式),而每一种在位深和粒度上又有许多变体。结果就是:Hugging Face 上一个模型底下挂着二十多个文件。

不过别慌——只要把它拆成两步,选择就变得简单了:① 选哪种格式(= 你打算用哪个引擎跑),然后② 在其中选哪个位深的文件。按这个顺序去想。

2. 关键规则:格式由运行引擎决定

最重要的一条事实:一个量化文件只能在支持其格式的引擎上运行。所以先定引擎,格式几乎就自动定了。

格式主要引擎硬件校准
GGUFllama.cpp / Ollama / LM Studio / KoboldCppCPU、Mac、部分 GPU(混合)可选(imatrix)
GPTQGPTQModel(原 AutoGPTQ)/ vLLM / TGI / ExLlamaGPU必需
AWQAutoAWQ / vLLM / TGIGPU必需
EXL2 / EXL3ExLlamaV2 / ExLlamaV3GPU必需
bitsandbytes(NF4/INT8)Transformers(加载时量化)GPU无(无需数据)

记住一点:GGUF 是唯一「本地全能」的格式,能在 CPU / Mac / 部分 GPU 上运行;其余的(GPTQ/AWQ/EXL2)基本上都是只能用 GPU。所以——

  • 在自己的 PC / Mac / CPU 上跑Ollama 或 LM Studio)→ GGUF,没得选。
  • 在 GPU 服务器上追求高吞吐(vLLM/TGI 同时服务大量请求)→ GPTQ 或 AWQ
  • 在单张 GPU 上精细压榨位宽EXL2/EXL3
  • 在 Transformers 里快速试跑(没有预量化文件)→ bitsandbytes(NF4)。

3. 破解 GGUF 命名(Q4_K_M)

本地使用中你最常碰到的 GGUF,一旦能读懂文件名里的「暗号」就不再吓人了。Q4_K_M三部分组成。

Q4_K_M
Q4
位深(名义值)= 4-bit。数字越大,质量越高,文件越大。
K
K-quant(在超级块上做的智能量化)。无后缀 / _0 / _1 是旧式的。
M
S/M/L = 小/中/大。表示有多少重要张量被「升级」到更高的比特。

所以 Q4_K_M = 「4-bit K-quant,尺寸 M(部分张量被升级以保护质量)」。有效比特数会略高于标签值(例如 Q4_K ≈ 4.5 bpw)。

再记住两个术语,你就不会迷路了。

  • IQ 家族(IQ2_XS、IQ3_M 等)= I-quants:一条较新的、基于码本的路线,可以在相同位深下做得更小。但推理更吃力,而且实际上需要下面提到的 imatrix。这是「我实在得把它塞进 VRAM」时的王牌。
  • imatrix(重要性矩阵):让一段校准文本跑过模型,测出哪些权重更重要,然后在低位深下优先保护它们。对 K-quant 是可选的,对 I-quant 则基本是必需的。用 imatrix 构建的 GGUF 在低比特下表现更稳。

4. 四种格式对比(GGUF/GPTQ/AWQ/EXL2)

下面是各主要格式的特点,包括 GPU 类的。

GGUF

唯一能在 CPU/Mac/混合模式下运行的格式。llama.cpp 的标准。对 K-quant/I-quant/imatrix 都很灵活。本地个人使用的首选。

GPTQ

GPU 4-bit 的标准。通过校准把逐层误差降到最小。在 vLLM/TGI 上很快。如今由 GPTQModel 接棒。

AWQ

通过观察激活值来保护「关键权重」(activation-aware)。GPU,仅权重 4-bit。在 vLLM/TGI 上广泛使用。

EXL2 / EXL3

把位宽设成小数(例如 4.5 bpw)。仅限 ExLlama,GPU。EXL3 是较新的、基于 QTIP 的路线,仍在成熟中。

💡 GPTQ vs AWQ(简要):GPTQ 「逐层最小化重建误差」,而 AWQ 「观察激活分布,保护大约 1% 的重要权重」。谁更胜出取决于模型、位宽和实现,所以没有谁在所有情况下都更好。你选的引擎支持哪个就用哪个即可。

5. 该选哪个文件 / 哪种位深

格式定下来后,接着就是位深。以 GGUF 为例,下面给出一个「拿不准就选这个」的实用阶梯(数字是近似值,会因模型和构建方式而异)。

文件定位何时选它
Q4_K_M常见的甜点档(许多模型在 Ollama 上的默认值)拿不准时。一般来说体积/质量平衡最好
Q5_K_M / Q6_K更接近完整质量VRAM 有富余,想再往上升一档
Q8_0近乎无损,但不推荐很少需要(换来微小的质量提升却要多得多的内存/更慢)
IQ2 / IQ3(I-quant)用极低位深硬塞进去只有当你非得把大模型塞进 VRAM 时

作为经验法则,人们常说每权重大约 4.5–5 比特(Q4_K–Q5_K)是「好吃」的区间(一个启发式判断)。超过 Q6 后质量提升会放缓,而 Q8_0 或 FP16 在内存和速度上代价很大,换来的差异却很小——这是实践中的共识。先跑 Q4_K_M,觉得不够就升到 Q5/Q6,塞不下就降到 IQ,边跑边调。要估算所需的 VRAM,见本地 LLM 硬件需求

6. 在 Hugging Face 和 Ollama 上找文件

Hugging Face 上,用 library=gguf 筛选 GGUF,或者直接去某个量化重新打包者的仓库。撰写本文时,bartowskimradermacher 都在积极发布 GGUF(包括 imatrix 构建版)——但重新打包者的活跃度会变化,所以要看最近一次上传的日期。(TheBloke 曾经的标准仓库还在,但新上传基本已经停止。)要转换你自己的模型,可以用官方的 gguf-my-repo Space。

Ollama 上,标签遵循 model:size-variant-quant 的格式。

# 不加标签 = 默认值(许多模型是 Q4_K_M)
ollama pull llama3.1

# 显式指定量化
ollama pull llama3.1:8b-instruct-q5_K_M
ollama pull qwen2.5-coder:7b-instruct-q8_0

# 在 ollama.com/library/<model>/tags 查看可用标签

所以真正的工作流就是三步:定引擎 → 收窄到它的格式 → 挑一个适配你 VRAM 的位深文件。掌握了这一点,那堵二十个文件的墙就不再让你发怵。要真正把模型跑起来,见如何运行本地 LLMOllama 指南

总结

选择量化格式分两步。先看① 你打算用哪个引擎跑——本地 CPU/Mac → GGUF;追求速度的 GPU 服务器 → GPTQ/AWQ;单张 GPU 上微调位宽 → EXL2;Transformers 快速试跑 → bitsandbytes。最高准则:格式只能在支持它的引擎上运行

然后是② 位深。GGUF 的 Q4_K_M 表示「4-bit、K-quant、尺寸 M」——常见的默认选择。拿不准就 Q4_K_M →(有富余)Q5/Q6 →(塞不下)IQ。以 约 4.5–5 bpw 的「好吃区间」这一启发式为锚点,边跑边调。用 imatrix 构建的版本在低比特下表现更稳。相关:什么是量化如何运行本地 LLM硬件需求最佳本地模型Ollama 指南

FAQ

Q. 那我到底该选哪个文件?
A. 先定「你打算用哪个引擎跑」。自己的 PC 或 Mac(Ollama/LM Studio)→ GGUF;GPU 服务器(vLLM/TGI)→ GPTQ 或 AWQ。然后看位深,拿不准就 Q4_K_M(体积/质量平衡好,也是许多模型在 Ollama 上的默认值)。VRAM 有富余就 Q5_K_M/Q6_K;只有非得把大模型塞进去时,才考虑 IQ2/IQ3

Q. Q4_K_M 是什么意思?
A. 三部分。 Q4 = 约 4-bit(数字越大质量越高、文件越大),K = K-quant(在超级块上做的智能量化;无后缀或 _0/_1 是旧式的),M = 尺寸中等(S/M/L 表示有多少重要张量被升级到更高比特)。有效比特数会略高于标签值(Q4_K ≈ 4.5 bpw)。

Q. GGUF 和 GPTQ/AWQ 有什么区别?
A. 区别在于它们支持的运行引擎(硬件)。GGUF 是唯一「本地全能」的格式,能在 CPU、Mac 和部分 GPU 上运行,用于 llama.cpp/Ollama。GPTQ 和 AWQ 则以 GPU 为先,适合在 vLLM/TGI 上做高吞吐。它们在方法上也不同(GPTQ 最小化逐层误差;AWQ 通过激活值保护关键权重),但没有谁在所有情况下都更好。你的引擎支持哪个就用哪个即可。

Q. IQ(I-quant)和普通的 Q4 有什么不同?
A. 它能在相同位深下做得更小(一种较新的、基于码本的方法)。代价是推理会更吃力一些,而且实际上需要一个 imatrix 才能保住质量。它的用途是「我必须把大模型塞进 VRAM」时的王牌。如果正常就能装下,像 Q4_K_M 这样的 K-quant 用起来更省心。

Q. Q8_0 或 FP16 不是质量更高吗?为什么「不推荐」?
A. 它们确实近乎无损,但比 Q5/Q6 只带来微小的质量提升,却要吃掉多得多的内存、跑得更慢。连 llama.cpp 社区都不推荐日常使用它们。实践中,大约 4.5–5 bpw(Q4_K–Q5_K)是「好吃」的区间,你从这里按需上下调整(数字是近似值,会因模型/构建方式而异)。