
Quantization (lượng tử hóa) là kỹ thuật nén mô hình ngôn ngữ lớn (LLM) từ độ chính xác FP16/FP32 xuống INT4/INT8, giúp giảm dung lượng model 2–4 lần mà vẫn giữ hiệu năng gần như không đổi. Nhờ đó, các model 7B–70B có thể chạy trên laptop, MacBook M-series, thậm chí Raspberry Pi mà không cần GPU đắt tiền.
Tại sao cần quantization? Model gốc Llama-3-70B ở FP16 chiếm ~140 GB VRAM — vượt xa khả năng của bất kỳ GPU consumer nào. Lượng tử hóa INT4 đưa nó xuống ~40 GB, đủ chạy trên 2× RTX 3090 (48 GB) hoặc offload một phần lên CPU/RAM qua llama.cpp.
Ba chuẩn quantization phổ biến nhất
GGUF — định dạng cho llama.cpp (CPU/Apple Silicon ưu tiên)
llama.cpp dùng định dạng GGUF (thừa kế GGML) với các phương pháp k-quant: Q4_K_M, Q5_K_M, Q8_0… Chữ “K” chỉ k-means clustering trọng số, “M” = medium (cân bằng tốc độ/chất lượng). Q4_K_M được cộng đồng coi là điểm cân bằng vàng: mất ~1–2% perplexity so với FP16 nhưng nhanh 3–4× trên CPU.

GPTQ — one-shot quantization cho NVIDIA GPU
GPTQ (Gradient-based Post-Training Quantization) lượng tử hóa trọng số xuống INT4/INT3 trong một lần forward-pass, không cần fine-tune. Phù hợp cho inference trên GPU (vLLM, text-generation-inference) vì kernel CUDA tối ưu INT4. Model GPTQ thường có hậu tố -GPTQ trên Hugging Face Hub (ví dụ: TheBloke/Llama-2-7B-GPTQ).
AWQ — activation-aware, chính xác hơn GPTQ
AWQ (Activation-aware Weight Quantization) quan sát phân phối activation để bảo vệ các trọng số quan trọng, chỉ lượng tử hóa phần ít nhạy cảm. Kết quả: AWQ INT4 thường tốt hơn GPTQ INT4 ở cùng kích thước, đặc biệt với model > 13B. Dùng thư viện AutoAWQ để quant tự động.
So sánh nhanh: chọn chuẩn nào?
| Tiêu chí | GGUF | GPTQ | AWQ |
|---|---|---|---|
| Phần cứng mục tiêu | CPU, Apple Silicon, GPU offload | NVIDIA GPU (CUDA) | NVIDIA GPU (CUDA) |
| Độ chính xác INT4 | Tốt (Q4_K_M) | Tốt | Rất tốt |
| Tốc độ inference | Nhanh trên CPU | Rất nhanh trên GPU | Rất nhanh trên GPU |
| Công cụ phổ biến | llama.cpp, llama-cpp-python | AutoGPTQ, vLLM | AutoAWQ, vLLM |
| Huấn luyện (QLoRA) | Không | Không | Không (dùng bitsandbytes) |
Bitsandbytes: quantization cho training (QLoRA)
Khác với ba chuẩn trên (chỉ inference), bitsandbytes hỗ trợ 8-bit/4-bit optimizer và quantization trong quá trình fine-tune — nền tảng của QLoRA. Cho phép train LoRA trên GPU 24 GB (RTX 3090/4090) với model 70B 4-bit, tiết kiệm VRAM ~3× so với FP16.

Hướng dẫn thực chiến: chạy model quantized ngay hôm nay
- CPU/Apple Silicon: Tải file
.gguftừ Hugging Face (tìm tagQ4_K_M), chạyllama-cli -m model.gguf -p "Xin chào". - NVIDIA GPU (inference): Dùng vLLM + model GPTQ/AWQ:
vllm serve TheBloke/Llama-3-8B-AWQ --quantization awq. - Fine-tune QLoRA:
bitsandbytes+peft+trl, cấu hìnhload_in_4bit=True, bnb_4bit_quant_type="nf4".
Mẹo chọn quant level
- Q4_K_M / Q4_K_S: Cân bằng tốt nhất, khuyến nghị mặc định.
- Q5_K_M: Chất lượng gần FP16, dung lượng +25% so với Q4.
- Q8_0: Gần như lossless, dùng khi cần độ chính xác tuyệt đối (code generation, reasoning phức tạp).
- Q2_K / Q3_K_M: Chỉ cho thiết bị cực hạn (Raspberry Pi, mobile), chấp nhận giảm chất lượng rõ rệt.
Kết luận: Quantization không còn là hand-crafted trick — nó đã thành công cụ tiêu chuẩn (commodity) trong stack LLM local. Hiểu rõ GGUF/GPTQ/AWQ/bitsandbytes giúp bạn chọn đúng công cụ, đúng phần cứng, và chạy model to nhất có thể trên máy đang có.
Nguồn tham khảo: llama.cpp GGUF docs, GPTQ paper, AWQ paper, bitsandbytes repo, Hugging Face quantization guide.
