30秒快速回答: 模型量化是把大模型的参数从高精度浮点数(如 FP32,每个参数 4 字节)转成低精度整数(如 INT4,每个参数 0.5 字节),体积直接缩到原来的 1/8。关键是经过校准后精度损失极低(通常 <1%),但推理速度提升数倍。这就是为什么你能在自己的笔记本电脑上跑 70 亿参数模型的原因。
一、定义:量化是什么、为什么需要?
大模型的一个核心瓶颈:
70B 参数 × FP16(2 字节)= 140 GB 显存 → 个人电脑根本装不下
70B 参数 × INT4(0.5 字节)= 35 GB → 一张消费级显卡就够了
量化就是用更少的比特数表示权重,在精度和效率之间找平衡。
二、原理:怎么量、为什么不太影响效果?
1. 量化公式
量化值 = round( (原始值 - 零点) / 缩放因子 )
核心是找到合适的缩放因子和零点,让整数范围尽可能覆盖原始数据分布。
2. 量化类型
| 类型 | 说明 | 精度损失 | 体积缩小 |
|---|---|---|---|
| FP16 | 半精度浮点 | 几乎无 | 50% |
| INT8 | 8 位整数量化 | <0.5% | 75% |
| INT4 | 4 位整数量化 | 1~3% | 87.5% |
| NF4 | 4 位正态分布量化 | <1% | 87.5% |
3. 两种关键策略
训练后量化(PTQ):模型训完再压缩,需要少量校准数据跑一遍统计激活分布。
量化感知训练(QAT):在训练时就模拟量化效果,精度最高但成本大。
4. GGUF 与 AWQ
- GGUF(llama.cpp):CPU 友好,适合 Mac/普通电脑运行
- GPTQ:GPU 优化,精度高但需要显卡
- AWQ:较新的量化算法,保护关键权重不压缩,效果更好
三、实操:用 Ollama 跑量化模型
步骤 1:安装 Ollama
# macOS
brew install ollama
# 或直接下载 App
步骤 2:拉取并运行量化模型
# 默认就是 Q4 量化版本
ollama pull deepseek-r1:7b
ollama run deepseek-r1:7b
步骤 3:查看模型详情
ollama show deepseek-r1:7b
# 会显示参数量、量化方式、显存占用等
步骤 4:选量化精度
# 不同精度版本
ollama pull qwen2.5:14b-instruct-q4_K_M # Q4, 平衡
ollama pull qwen2.5:14b-instruct-q8_0 # Q8, 高质量
四、工具推荐表
| 工具 | 用途 | 适合 | 价格 |
|---|---|---|---|
| Ollama | 一键部署 | 个人用户 | 免费 |
| llama.cpp | 底层推理 | CPU 场景 | 免费 |
| AutoGPTQ | INT4 量化 | 开发者 | 免费 |
| vLLM | 生产推理 | 企业 | 免费 |
| bitsandbytes | 训练时量化 | 微调 | 免费 |
五、FAQ 常见问题
Q1:量化 100% 无损是不可能的? 对。任何量化都是用离散值近似连续值,必然有信息损失。但好的量化方法 + 校准可以把损失压到人眼/实际任务不可感知。
Q2:Q4_K_M 这些后缀什么意思? llama.cpp 的命名:K 表示用 K-quant 方法,M 是中等大小(Medium),S 是小(Small),L 是大(Large)。K_M 是推荐的平衡选择。
Q3:量化模型能做微调吗? QAT 可以;PTQ 量化后的模型再做微调较困难(精度受限)。新出的 QLoRA 允许在量化模型上做高效微调。
Q4:Mac 用户能用量化模型吗? 非常适合。Apple Silicon 统一内存架构 + Metal 加速配合 llama.cpp/Ollama,是个人跑本地模型的最佳平台之一。
Q5:量化对编程能力影响大吗? 代码生成对精度较敏感。INT8 几乎无影响,INT4 可能出现语法错误增多,建议编程任务用 Q6_K 以上。
继续深入:什么是 MoE 混合专家架构? 看看另一种让模型变高效的架构思路。