本稿 · 2026-04-26 · 同专栏「小显存、长上下文、语义压缩」系列
系列位置:同专栏「小显存、长上下文、语义压缩」一组;本篇只谈选型和话语对齐,不铺具体端口与 curl——机器上怎么分资源、能跑多长的上下文见后续篇。
说明:不背公式、不讲芯片级细节;能帮你做到两件事——搜到 W4A16 和 Q4_K_M 时不懵,按硬件/目标选对栈。
1. 为什么「4 bit」会搜出一堆不同词
- 你会同时看到 INT4 / W4A16 / Q4_0 / Q4_K_M / AWQ 等。
- 原因:「4 位」只是位数,背后可能是 PyTorch+CUDA 上的训练/服务栈,也可能是 llama.cpp 的 GGUF 文件里那一套——不是同一个产品的两个型号,而是两套生态里各自的习惯叫法。
后文就按两条主叙事来分:(A) 通用 INT4 系(偏 GPU、训练/服务) 和 (B) GGUF 里的 Q4 系(偏本机、一条文件、Ollama/llama.cpp)。
2. (A) 广义 INT4:在说什么
口语里的「INT4 量化」 多指:权重用 4 bit 整型(或等价的低比特存储与计算)表示,在 GPU 上做推理或训练/微调。文档里还常见:
- W4A16:权重量化到 4 bit,激活仍用较高精度(如 16 bit),是推理侧很常见的一种组合。
- GPTQ、AWQ 等:在「怎么把权重量到 4 bit」上有不同假设与实现,落地时往往对应一套导出格式 + 一套推理实现(如 vLLM、部分 TGI 等)。
- 与 PyTorch / HuggingFace 全精度的关系:你通常要有一个 全精度或 FP16 的底座,再走「校准 → 导出 → 部署」;和「下载一个 GGUF 就跑」是两条不同的准备成本。
更适合干什么:有 NVIDIA 独显、CUDA 可用 时,做 vLLM 高吞吐、QLoRA/训练后再下 INT4 部署 等——和「我只有一个 CPU 想体验」的默认路线不一样。
3. (B) 名字里带 Q4 的:多半指 GGUF 里那一族
在 llama.cpp / Ollama 的语境下,Q4_0、Q4_1、Q4_K_* 指的是 GGUF 文件里采用的具体 4 bit 变体(不同块大小、是否 mix 更高位的「K-quants」等),不是「再发明一种比 INT4 多一位的数学」。
- K-quants(如
Q4_K_M):常见表述是在重要权重上用更高位、在次要部分压得更狠,在 CPU / 内存 上跑时,在体积、速度、主观质量之间往往比较好折中。 - 实践中:没有独显、或只想本机一条文件跑起来时,选 GGUF 的 Q4 变体比「去折腾通用 INT4 的 PyTorch 推理在 CPU 上」要省心;社区资源也更多。
更适合干什么:Ollama、llama.cpp、koboldcpp 等;不拿来训练/微调(训练侧仍是全精度 / BF16+LoRA+… 等路径)。
补一句,避免绝对化:llama.cpp 有 CUDA 时也可以让 GGUF 走 GPU;下文的「搭配」分的是心智——本机一条 GGUF + 轻量体验 常走 (B);有卡、要服务化、要和训练管线下游对齐 常走 (A)。两套可以都在你机器上并存,别在文章里和读者吵架说「Q4 永远不能上 GPU」。
4. 怎么和硬件、工具搭配(人话表)
| 情况 | 更常走的路线 | 典型工具 | 训练? |
|---|---|---|---|
| 没独显 / 以 CPU 为主、先跑通 | GGUF 的 Q4 系 | Ollama、llama.cpp | 否(推理/体验) |
| 有独显、要 vLLM、要和 QLoRA/INT4 部署一条心 | W4A16 / INT4 推理等(含 GPTQ、AWQ 等落地形态) | vLLM、TGI、自写 PyTorch 等 | 训练/微调用上游链;**INT4 多为推理侧权重 |
| 边缘 GPU、要极致时延/厂商栈 | 视情况 TensorRT-LLM 等 | 各厂商指南 | 偏部署侧 |
- (1) CPU 跑、没独显:优先在 Ollama / llama.cpp 侧选 GGUF Q4;别指望在这套链路上「顺手做完整微调」。
- (2) 独显跑、要服务/要对齐你训练产出的 int4 权重:INT4 / W4A16 + vLLM 等更常见;准备成本在「环境、依赖、与底座一致的导出」上,通常比「下个大 GGUF」重——所以小项目、先验证产品,很多人会用 在线 API 换时间(这点与后面「12G 本机实验」那篇的交代一致)。
所谓「不建议用 GPU 去硬跑」通常指:别指望在 vLLM+INT4 和 GGUF+llama.cpp 上搞一套同一句命令的「通用迁移」——格式与内核不是一回事,选型时按目标栈来,而不是只按「都是 4 bit」来。
5. INT4「大家族」里怎么粗选(不背厂商名单)
| 类型(文档里常见名) | 核心直觉 | 常见用途 |
|---|---|---|
| GPTQ 系 | 对权重做分组量化,有校准过程 | 离线量化后,给 vLLM 等 加载跑推理 |
| AWQ 系 | 强调对「重要权」的保护,主观质量在不少任务上更稳 | 对稳字当头的线上生成 |
| PyTorch/框架内 W4A16 | 和训练/实验脚本绑得紧,可定制多 | 自己写 pipeline、接 QLoRA 训练后再量化 时常见 |
| TensorRT-LLM 等 | 强绑定硬件与图优化,偏「部署交付」 | 有明确交付形态时再看 |
结论给懒人:有 NVIDIA 卡 + 要 vLLM,先看你 底座模型官方 推荐哪种 INT4/AWQ/GPTQ 导出,再对 vLLM 的模型页 能吃什么格式——比先背名词重要。
6. Q4(GGUF)里「后缀」怎么粗选
| 变体 | 大致印象 | 什么时候想它 |
|---|---|---|
| Q4_0 | 更省、更糙 | 极轻设备、能忍质量波动 |
| Q4_1 | 比 Q4_0 多一点表示力 | 略在乎主观质量时试对比 |
| Q4_K_S / K_M 等 | K-quants:混合精度、常见「日用默认」在 K_M 一类 | 笔记本/一般 PC 上想 少折腾 时,多数场景先试 Q4_K_M 类 再微调 |
结论给懒人:本机 Ollama/llama.cpp 体验时,在容量够的前提下,优先试社区口碑好的 K-quants(如 K_M);再往下抠再换 Q4_0 等。
7. 10 秒速查(可贴便签/笔记)
| 你问自己的 | 更偏 (A) INT4/服务系 | 更偏 (B) GGUF/Q4 系 |
|---|---|---|
| 硬件 | 有 CUDA 独显、愿意维护推理栈 | CPU 为主或先单文件开跑 |
| 目标 | 训练/微调、高吞吐、和 OpenAI 兼容服务 对齐 | 本机/离线体验、快速对话、少依赖 |
| 工具 | vLLM、TGI、HF 训练+导出 等 | Ollama、llama.cpp 等 |
| 坑 | 环境、与底座一致的量化格式、显存/上下文窗口 | 不用于完整微调;和 (A) 的权重不互通 别硬搬 |
8. 收束
- INT4 在本文里=GPU/训练+服务语境里,大家嘴上说的那一类 4 bit 权重量化+对应运行时。
- Q4_* 在本文里=GGUF 生态里 4 bit 的多种口味,和 Ollama/llama.cpp 一条线;不解决「我要训 LoRA」。
- 搜资料时,先问自己:我此刻是在选 GGUF 文件名,还是在选 vLLM 能吃的 checkpoint?——两种都「是 4 bit」,但两条准备路径不是同一项工作。
下一篇 写 12GB 本机:在有独显+内存的情况下,把长上下文、向量、重排跑成可测实验(含:快速起项为何更推荐在线 API)——《12GB 本机实验:上下文链路先跑通——向量、重排与 llama.cpp 三进程》
本篇到这里就够用了。
若文内工具名与版本随社区更新,以各项目官方说明为准。欢迎勘误。