LLM quantization GGUF GPTQ AWQ: nén mô hình chạy local hiệu quả

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.

Biểu đồ so sánh pipeline quantization LLM từ FP16 xuống INT4/INT8 với các tool llama.cpp, GPTQ, AWQ

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.

Pipeline kết quả quantization: GGUF Q4_K_M giảm 3.5GB RAM, tốc độ inference tăng trên CPU/Mac M

Hướng dẫn thực chiến: chạy model quantized ngay hôm nay

  1. CPU/Apple Silicon: Tải file .gguf từ Hugging Face (tìm tag Q4_K_M), chạy llama-cli -m model.gguf -p "Xin chào".
  2. NVIDIA GPU (inference): Dùng vLLM + model GPTQ/AWQ: vllm serve TheBloke/Llama-3-8B-AWQ --quantization awq.
  3. Fine-tune QLoRA: bitsandbytes + peft + trl, cấu hình load_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.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Biểu đồ biến thiên phương sai nhiễu theo từng bước trong bộ lập lịch nhiễu tuyến tính, trục hoành là số bước từ 0 tới 1000

Mô hình khuếch tán là gì? Cách AI tạo ảnh chất lượng cao từ nhiễu

Mô hình khuếch tán là gì? Cách AI tạo ảnh chất lượng cao từ nhiễu Mô hình khuếch tán (diffusion model) là một lớp mô hình sinh tạo dữ liệu…

Xem thêm

Knowledge distillation là gì? Nén mô hình AI nhỏ gọn hơn

Knowledge distillation (KD) là một kỹ thuật nén mô hình trí tuệ nhân tạo cho phép chuyển giao kiến thức từ một mô hình lớn, phức tạp (gọi là teacher…

Xem thêm
Sơ đồ Medusa: nhiều decoding head gắn trên hidden state cuối của LLM để dự đoán song song nhiều token

Speculative decoding: kỹ thuật tăng tốc sinh văn bản LLM

Speculative decoding (giải mã suy đoán) là kỹ thuật tăng tốc sinh văn bản cho Large Language Model (LLM) mà không làm thay đổi phân phối đầu ra. Ý tưởng…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất