Fine-Tuning Mô Hình AI (Phần 3): QLoRA và Lượng Hóa 4-bit
Hướng dẫn thực hành fine-tune LLM với QLoRA, kết hợp lượng hóa NF4 (NormalFloat4) và Double Quantization để chạy trên GPU consumer.
QLoRA (Quantized Low-Rank Adaptation) mang khả năng tinh chỉnh các mô hình hàng chục tỷ tham số lên các GPU phổ thông dành cho người dùng cá nhân (như RTX 3090/4090).
Đột phá từ QLoRA#
QLoRA giới thiệu 3 cải tiến chính:
- NF4 (NormalFloat4): Kiểu dữ liệu lượng hóa 4-bit tối ưu cho các ma trận trọng số tuân theo phân phối chuẩn.
- Double Quantization: Lượng hóa chính các hằng số lượng hóa (quantization constants), tiết kiệm trung bình 0.37 bit mỗi tham số.
- Paged Optimizers: Tự động chuyển đổi memory state của GPU sang CPU RAM khi vRAM bị quá tải.
Thực hành fine-tune với BitsAndBytes#
qlora_setup.py
import torch
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
# [!code focus]
# Cấu hình lượng hóa 4-bit NF4
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True
)
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.2-3B",
quantization_config=bnb_config,
device_map="auto"
)pythonKết luận & Lời khuyên#
Fine-tuning không còn là đặc quyền của các tập đoàn công nghệ lớn. Kết hợp QLoRA, PEFT và BitsAndBytes, bạn hoàn toàn có thể tinh chỉnh mô hình phù hợp với bài toán của riêng mình ngay trên thiết bị cá nhân.