📖 定义
Quantization(模型量化)是一种模型压缩技术,通过将模型参数从高精度浮点数(如32位FP32)转换为低精度表示(如8位INT8、4位INT4),显著减少模型体积、内存占用和计算需求,同时尽量保持模型性能。
简单理解:就像把高清照片压缩成小图——文件小了,但基本内容还在。
⚙️ 量化原理
1
映射范围
确定原始浮点范围和目标整数范围
→
2
量化转换
将浮点参数映射到整数(近似取整)
→
3
推理运算
使用整数运算替代浮点运算,大幅加速
🎯 量化精度对比
| 精度 | 位数 | 体积 | 速度 | 精度损失 |
|---|---|---|---|---|
| FP32 | 32位 | 100% | 1x | 基准 |
| FP16 | 16位 | 50% | 1.5-2x | 极小 |
| INT8 | 8位 | 25% | 2-4x | 小 |
| INT4 | 4位 | 12.5% | 4-8x | 中 |
💻 代码示例
Python - 使用 bitsandbytes 进行量化
# 使用LLM.cpp进行量化推理
from llama_cpp import Llama
# 加载量化后的模型 (Q4_K_M - 4位量化)
llm = Llama(
model_path="./models/llama-2-7b-chat.Q4_K_M.gguf",
n_ctx=2048, # 上下文长度
n_threads=4, # CPU线程数
verbose=False
)
# 推理
output = llm(
"用一句话解释量子计算:",
max_tokens=100,
temperature=0.7
)
print(output["choices"][0]["text"])