[ PROMPT_NODE_22488 ]
quantization
[ SKILL_DOCUMENTATION ]
# 量化指南
## 目录
- 量化方法对比
- AWQ 设置与使用
- GPTQ 设置与使用
- FP8 量化 (H100)
- 模型准备
- 精度与压缩的权衡
## 量化方法对比
| 方法 | 压缩率 | 精度损失 | 速度 | 适用场景 |
|--------|-------------|---------------|-------|----------|
| **AWQ** | 4-bit (75%) | <1% | 快 | 70B 模型,生产环境 |
| **GPTQ** | 4-bit (75%) | 1-2% | 快 | 广泛的模型支持 |
| **FP8** | 8-bit (50%) | <0.5% | 最快 | 仅限 H100 GPU |
| **SqueezeLLM** | 3-4 bit (75-80%) | 2-3% | 中等 | 极致压缩 |
**建议**:
- **生产环境**: 70B 模型使用 AWQ
- **H100 GPU**: 使用 FP8 以获得最佳速度
- **最大兼容性**: 使用 GPTQ
- **极致压缩**: 使用 SqueezeLLM
## AWQ 设置与使用
**AWQ** (激活感知权重量化) 在 4-bit 下实现了最佳精度。
**第 1 步: 查找预量化模型**
在 HuggingFace 上搜索 AWQ 模型:
bash
# 示例: TheBloke/Llama-2-70B-AWQ
# 示例: TheBloke/Mixtral-8x7B-Instruct-v0.1-AWQ
**第 2 步: 使用 AWQ 启动**
bash
vllm serve TheBloke/Llama-2-70B-AWQ
--quantization awq
--tensor-parallel-size 1
--gpu-memory-utilization 0.95
**显存节省**:
Llama 2 70B fp16: 140GB VRAM (需要 4x A100)
Llama 2 70B AWQ: 35GB VRAM (1x A100 40GB)
= 4倍显存缩减
**第 3 步: 验证性能**
测试输出是否可接受:
python
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
# 测试复杂推理
response = client.chat.completions.create(
model="TheBloke/Llama-2-70B-AWQ",
messages=[{"role": "user", "content": "Explain quantum entanglement"}]
)
print(response.choices[0].message.content)
# 验证质量是否符合您的要求
**量化您自己的模型** (需要 80GB+ VRAM 的 GPU):
python
from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer
model_path = "meta-llama/Llama-2-70b-hf"
quant_path = "llama-2-70b-awq"
# 加载模型
model = AutoAWQForCausalLM.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path)
# 量化
quant_config = {"zero_point": True, "q_group_size": 128, "w_bit": 4}
model.quantize(tokenizer, quant_config=quant_config)
# 保存
model.save_quantized(quant_path)
tokenizer.save_pretrained(quant_path)
## GPTQ 设置与使用
**GPTQ** 拥有最广泛的模型支持和良好的压缩效果。
**第 1 步: 查找 GPTQ 模型**
`