Quantization (Lượng tử hóa) là gì?
Kỹ thuật giảm độ chính xác số trong model AI để chạy nhanh hơn, tốn ít RAM hơn — đánh đổi chút accuracy.
Quantization là kỹ thuật giảm độ chính xác (precision) của các số trong mô hình AI — từ float 32-bit xuống 16, 8, hoặc thậm chí 4-bit — để model nhỏ hơn, chạy nhanh hơn, tốn ít RAM/GPU hơn, đánh đổi 1-3% accuracy.
Vì sao quantization quan trọng?
Llama 3.3 70B ở float32: ~280GB → cần GPU H200 (>$30k).
Cùng model ở 4-bit (Q4): 40GB → chạy được trên RTX 4090 ($1.6k) hoặc Mac M-series 64GB.
Quantization làm cho model lớn chạy được trên hardware bình dân — đặc biệt quan trọng với open source LLM tự host.
Các mức quantization phổ biến
| Bit | Tên | Giảm size | Accuracy loss |
|---|---|---|---|
| 32 | FP32 | 1× (gốc) | 0% |
| 16 | FP16 / BF16 | 2× | ~0% |
| 8 | INT8 | 4× | < 1% |
| 4 | Q4_K_M, NF4 | 8× | 1-3% |
| 2 | Q2 | 16× | 5-15% (nguy hiểm) |
| 1 | BitNet | 32× | còn nghiên cứu |
→ “Sweet spot” hiện tại: Q4 (đặc biệt Q4_K_M format của llama.cpp).
Cách quantization hoạt động (đơn giản)
Mỗi parameter trong model là 1 số thực (vd: 0.0327891).
Float32 lưu cả 32 bit → chính xác cao, tốn bộ nhớ.
Quantize xuống int8: chỉ lưu 256 mức giá trị (-128 đến 127). 0.0327891 được làm tròn xuống mức gần nhất.
Khi inference: dequantize tạm thời để tính → kết quả gần giống float32 nhưng nhanh hơn nhiều.
Quantization vs Distillation
| Quantization | Distillation | |
|---|---|---|
| Cách | Giảm precision | Train model nhỏ học từ model lớn |
| Effort | Vài giờ | Vài ngày-tuần |
| Quality loss | 1-3% | 5-15% (tùy ratio) |
| Khi dùng | Inference faster | Cần model NHỎ + nhanh |
Hai kỹ thuật bổ sung nhau, thường dùng cả 2.
Tools phổ biến
Cho LLM tự host
- llama.cpp — quantize sang Q4/Q5/Q8, format GGUF
- bitsandbytes — quantize cho HuggingFace
- GPTQ, AWQ — quantization-aware methods, accuracy tốt hơn
- MLX — tối ưu cho Apple Silicon
Workflow điển hình
# Tải model gốc 70B, quantize Q4
ollama pull llama3.3:70b-instruct-q4_K_M
# Hoặc download GGUF từ HuggingFace TheBloke
Khi nào KHÔNG dùng quantization
- Model đã bé sẵn (< 7B): không quantize cũng chạy được trên GPU thường
- Cần accuracy tuyệt đối (vd: y tế): giữ FP16 ít nhất
- Đang fine-tune: train ở precision cao hơn, quantize sau