模型量化与压缩入门
什么是模型量化
模型量化是指将大语言模型的权重从高精度(如 FP16、FP32)转换为低精度(如 INT8、INT4),从而减少模型大小和显存占用,同时尽量保持推理质量。量化是 大模型在消费级 GPU 甚至 CPU 上运行的关键技术之一。
为什么需要量化
- 显存受限:7B 模型 FP16 约需 14GB 显存,4-bit 量化后可降至约 4–6GB
- 成本:更小模型可在更低配硬件上运行,降低部署成本
- 速度:低精度运算在多数硬件上更快,可提升推理速度
- 普及:使个人电脑、边缘设备运行大模型成为可能
量化方法概览
| 方法 | 精度 | 特点 | 典型格式/工具 |
|---|---|---|---|
| INT8 | 8-bit | 精度损失小,兼容性好 | 动态/静态量化 |
| INT4(GPTQ) | 4-bit | 显存减半以上,需校准数据 | GPTQ、AutoGPTQ |
| INT4(AWQ) | 4-bit | 保持关键权重高精度,质量较好 | AWQ |
| GGUF | 多档 | llama.cpp 生态,2–8 bit 可选 | llama.cpp、llama-quantize |
| BitsAndBytes | 8/4-bit | 动态量化,易集成 | Hugging Face Transformers |
核心概念
量化粒度
- 权重量化:仅量化权重,激活仍用 FP16(常见于推理)
- 激活量化:激活也量化,进一步加速,但实现复杂、精度影响更大
- KV Cache 量化:推理时的 KV Cache 也可量化,节省显存
校准(Calibration)
部分方法(如 GPTQ)需要少量校准数据,在量化过程中评估误差并调整,以减小精度损失。
格式与生态
- GGUF:llama.cpp、Ollama 等广泛支持,方便在 CPU/低显存环境运行
- AWQ/GPTQ:vLLM、TGI 等推理框架支持,适合 GPU 生产部署
- Safetensors:Hugging Face 标准格式,可存储量化后权重
典型应用
- 本地运行:在 8GB 显卡上跑 7B、13B 模型
- 生产部署:量化后单卡可承载更高并发
- 边缘/IoT:CPU 或低显存设备运行小模型
- 多模型并存:显存有限时同时加载多个量化模型
与其他技术的关系
- 微调:可在量化后做 QLoRA 等低秩微调,参见 微调技术
- 推理服务:量化模型通过 vLLM、Ollama 等部署,参见 模型部署
- 本地推理:Ollama、llama.cpp 大量使用 GGUF 量化,参见 本地推理
深入学习
想全面了解 GPTQ、AWQ、GGUF 的原理、工具使用与选型?请查看 模型量化深度解析。
该文档涵盖:
- 各类量化方法原理与对比
- 常用工具与转换流程
- 精度评估与调优
- 与推理框架的集成