Quantization Guide
Contents
- - Quantization methods comparison
- - AWQ setup and usage
- - GPTQ setup and usage
- - FP8 quantization (H100)
- - Model preparation
- - Accuracy vs compression trade-offs
- - Production: Use AWQ for 70B models
- - H100 GPUs: Use FP8 for best speed
- - Maximum compatibility: Use GPTQ
- - Extreme compression: Use SqueezeLLM
- - H100 or H800 GPU
- - CUDA 12.3+ (12.8 recommended)
- - Hopper architecture support
- - Use 128-512 diverse examples from target domain
- - Representative of production inputs
- - Higher quality calibration = better accuracy
- - Have sufficient GPU memory
- - Need absolute best accuracy
- - Model <13B parameters
- - Using H100/H800 GPUs
- - Need best speed with minimal accuracy loss
- - Production deployment
- - Need to fit 70B model in 40GB GPU
- - Production deployment
- - <1% accuracy loss acceptable
- - Wide model support needed
- - Not on H100 (use FP8 instead)
- - 1-2% accuracy loss acceptable
Quantization methods comparison
| Method | Compression | Accuracy Loss | Speed | Best For |
| -------- | ------------- | --------------- | ------- | ---------- |
| AWQ | 4-bit (75%) | <1% | Fast | 70B models, production |
| GPTQ | 4-bit (75%) | 1-2% | Fast | Wide model support |
| FP8 | 8-bit (50%) | <0.5% | Fastest | H100 GPUs only |
| SqueezeLLM | 3-4 bit (75-80%) | 2-3% | Medium | Extreme compression |
| Quantization | Accuracy | Memory | Speed | Production-Ready |
| -------------- | ---------- | -------- | ------- | ------------------ |
| FP16 (baseline) | 100% | 140GB | 1.0x | ✅ (if memory available) |
| FP8 | 99.5% | 70GB | 1.8x | ✅ (H100 only) |
| AWQ 4-bit | 99.0% | 35GB | 1.5x | ✅ (best for 70B) |
| GPTQ 4-bit | 98.5% | 35GB | 1.5x | ✅ (good compatibility) |
| SqueezeLLM 3-bit | 96.0% | 26GB | 1.3x | ⚠️ (check accuracy) |
When to use each:
No quantization (FP16):
FP8:
AWQ 4-bit:
GPTQ 4-bit:
Testing strategy:
1. Baseline: Measure FP16 accuracy on your evaluation set
2. Quantize: Create quantized version
3. Evaluate: Compare quantized vs baseline on same tasks
4. Decide: Accept if degradation < threshold (typically 1-2%)
Example evaluation:
`python
from evaluate import load_evaluation_suite
Run on FP16 baseline
baseline_score = evaluate(model_fp16, eval_suite)
Run on quantized
quant_score = evaluate(model_awq, eval_suite)
Compare
degradation = (baseline_score - quant_score) / baseline_score * 100
print(f"Accuracy degradation: {degradation:.2f}%")
Decision
if degradation < 1.0:
print("✅ Quantization acceptable for production")
else:
print("⚠️ Review accuracy loss")
`