跳到内容

术语★★★★★9 分钟阅读

LLM 量化:为什么 4-bit 模型还能用

70B 模型怎么塞进单张消费级 GPU — 以及这个魔法在哪里会失灵。

登入以收藏

你如果在本机跑过开源 LLM,大概看过 llama-3-70b-Q4_K_M.gguf 这种文件名,然后想过 Q4 是什么意思。它是「需要 4 万美元的 GPU」跟「只要一张 1200 美元的 RTX 4090」的差别。量化是让非百万富翁也能用本地 LLM 的技术。这篇讲它实际在做什么、什么时候会失灵。

模型存了什么

现代 LLM 是几亿到几千亿个数字,叫参数或权重。默认每个是 16-bit 或 32-bit 浮点数。一个 70B 参数的 16-bit 模型光加载就要 140GB 内存(2 bytes × 70B)。这是问题,因为:

  • 消费级 GPU 像 RTX 4090 有 24GB VRAM
  • 专业 GPU 像 H100 有 80GB
  • 跑没量化的 70B 要 4-8 张 H100,买起来 10 万美元以上

洞见:每个数字 16 或 32 bit 大部分是 LLM 推理用不到的精度。你可以把每个数字换成很小的近似值,模型大致还能用。

量化实际在做什么

量化是降低模型权重位宽的过程。最常见的等级:

  • FP16 / BF16(16-bit) — 标准「没量化」格式。每参数 2 bytes。
  • INT8(8-bit) — 一半大小,多数任务保留 95-99% 原始质量。
  • INT4 / Q4(4-bit) — 四分之一大小,用现代技术保留 90-97% 质量。
  • Q3 / Q2 — 八分之一或更小,质量下降明显,只在超大模型或内存极紧时用。

70B 模型:

  • BF16:140GB
  • INT8:70GB
  • Q4_K_M:约 40GB
  • Q3_K_M:约 32GB

40GB 塞进两张 RTX 3090(二手 1500-2000 美元)或一张 RTX 6000 Ada(7000 美元),不用买 10 万美元 H100 跑 BF16 版。

怎么运作的(不讲数学)

单纯量化是:「找出这组数字里的最小最大值,然后把每个换成 16 个(4-bit)等距值里最近的那个」。快速但有损。

现代量化聪明很多。GPTQAWQGGUF Q-types(Q4_K_M、Q4_K_S、Q5_K_M 等)这类技术会做这些事:

  • 模型不同部分用不同精度量化,把最敏感的层保持较高位
  • 在一个 tensor 里用「混合精度」 — 把相似权重分组,每组独立量化
  • 每组用 scaling factor 较好保留动态范围
  • 用真实数据的小样本校准量化以最小化误差

结果是 Q4_K_M 量化在基准测试上通常只比原始 BF16 模型损失 1-3 个百分点。聊天用,常常感觉不出差别。对推到模型能力边缘的程序或推理,有时候感觉得出来。

后缀是什么意思

看到 Q4_K_MQ5_K_SQ4_0,llama.cpp 用的 GGUF 格式大致解码:

  • Q4 / Q5 / Q6 / Q8 — 位宽:4、5、6、8 bit
  • K — 现代 k-quants,用混合精度区块(同等大小质量比旧量化高很多)
  • S / M / L — K-quants 的小 / 中 / 大变体。大一点意味稍高大小和质量。
  • 0 / 1 — 旧的 legacy 量化类型(Q4_0、Q4_1)。新用途避开;K-quants 严格较好。

经验法则:Q4_K_M 是最佳通用 4-bit。Q5_K_M 多 25% 大小换稍高质量。Q8_0 对多数任务跟 BF16 基本无法区分。Q3 以下是内存极紧时的最后手段。

量化哪些时候有效、哪些时候会坏

有效:

  • 30B+ 模型量化通常很优雅 — 权重里有足够冗余
  • 标准聊天、摘要、翻译、写程序 — 质量损失小
  • 推理用量化(典型情况)比训练用量化宽容很多

会坏:

  • 小模型(7B 以下)常常在激进量化下明显受损。1.5B 模型的 Q4 可能比同模型的 Q8 差很多。
  • 极长 context 生成 — 量化误差会在数千 token 上累积
  • 推到模型能力边缘的任务(困难数学、新颖推理) — 损失 2-3% 准确率可能让没量化能成功的场景失败
  • MoE 模型 — 看 MoE 那篇讲为什么这比较难
  • 视觉和音频模型 — image token 有时候比文字对量化更敏感

那低精度训练呢?

不同主题,术语有重叠。「混合精度训练」(BF16 + FP32)几年来就是标准。「FP8 训练」现在前沿实验室在用(DeepSeek-V3、Llama 3.1)大幅降低训练成本。INT8 / INT4 训练大致不行 — 质量损失太多。你看到的「INT4 量化」几乎都是训练后量化,不是从头用 INT4 训练。

什么时候不要量化

生产 API 服务、每个百分点质量都重要、你有 GPU,跑 BF16。前沿实验室内部都这样,即使对外提供量化版。

做研究、量测小效应时,量化会干扰结果。比较模型时,在同一精度等级比较。

极小模型(3B 以下)目标边缘设备 — 有时候一个小但没量化的模型比一个大但 Q4 的模型好。两个都测。

关键推理(医疗、法律、财务决策) — 即使 1-2% 质量损失也重要。不要量化。

替你处理这些的工具

  • llama.cpp — 量化模型的主流推理引擎。读 GGUF 格式。CPU、GPU、或 Apple Silicon 都跑得动。
  • Ollama — llama.cpp 的包装,用友善 CLI 下载和跑模型。默认 Q4_K_M。
  • LM Studio — 桌面 app,可以并排比较不同量化等级。
  • vLLM — 生产级推理服务器,支持 AWQ 和 GPTQ 做高吞吐量服务。
  • Hugging Face transformers + bitsandbytes — Python 里加载时 INT8/INT4 量化。

多数用户只需要知道:挑 Q4_K_M,除非有不挑的理由。

下一步

  • 怎么挑自架技术栈 — 本地跑量化模型的实际设置
  • MoE 解释 — 推理成本的另一个大架构杠杆
  • Speculative decoding — 又一个让推理更快的方法

最后更新: 2026-04-29

We use cookies

Anonymous analytics help us improve the site. You can opt out anytime. Learn more

LLM 量化:为什么 4-bit 模型还能用 · BuilderWorld