[AI Blog #32] Kỹ Thuật Tinh Chỉnh Mô Hình Ngôn Ngữ Lớn (LLM Fine-Tuning): PEFT, LoRA vs. QLoRA, Alignment Với RLHF vs. DPO & Tối Ưu Hóa VRAM
![[AI Blog #32] Kỹ Thuật Tinh Chỉnh Mô Hình Ngôn Ngữ Lớn (LLM Fine-Tuning): PEFT, LoRA vs. QLoRA, Alignment Với RLHF vs. DPO & Tối Ưu Hóa VRAM](/uploads/ai-images/cover-ky-thuat-tinh-chinh-llm.png)
1. Bối cảnh thực tế (Context & Problem Statement)
Các mô hình nền tảng (Foundation LLMs như LLaMA 3, Mistral, Qwen) được huấn luyện trước (Pre-trained) trên hàng nghìn tỷ tokens từ Internet. Dù sở hữu tri thức rộng lớn, mô hình gốc (Base Model) chỉ giỏi việc đoán từ tiếp theo và hoàn toàn chưa biết cách tuân thủ chỉ dẫn của con người (Instruction Following), trả lời sai định dạng JSON nghiệp vụ hoặc thiếu tri thức chuyên sâu của doanh nghiệp.
Để biến Base Model thành trợ lý đắc lực, ta bắt buộc phải thực hiện Fine-Tuning (Tinh chỉnh mô hình).
Tuy nhiên, Full Fine-Tuning (Huấn luyện lại toàn bộ trọng số) là điều bất khả thi về mặt chi phí:
- Để Full Fine-tune một mô hình 70B ở độ chính xác 16-bit, ta cần ít nhất (do phải lưu trữ đồng thời: Trọng số gốc + Gradients + Trạng thái Adam Optimizer + Activations).
- Chi phí thuê hàng chục cụm máy chủ 8x A100/H100 vượt quá ngân sách của hầu hết các doanh nghiệp.
Cuộc cách mạng PEFT (Parameter-Efficient Fine-Tuning) với đại diện tiêu biểu là LoRA và QLoRA đã thay đổi hoàn toàn cuộc chơi: Cho phép fine-tune các LLM hàng đầu với ít hơn VRAM mà vẫn đạt độ chính xác tương đương so với Full Fine-Tuning.
2. Các Khái Niệm & Cơ Chế Cốt Lõi
2.1. Bản Chất Toán Học Của LoRA (Low-Rank Adaptation)
Nghiên cứu của Microsoft (Hu et al., 2021) chỉ ra rằng: Mặc dù ma trận trọng số của LLM có số chiều khổng lồ, ma trận biến thiên trọng số trong quá trình học tác vụ mới có một "Hạng nội tại" (Intrinsic Rank) rất nhỏ.
- Cơ chế LoRA:
- Đóng băng hoàn toàn (Freeze) ma trận trọng số gốc .
- Phân rã ma trận biến thiên thành tích của 2 ma trận có hạng thấp (Low-Rank Matrices): (với , , và Hạng , thường chọn ).
- Luồng tính toán Forward Pass: (trong đó là hệ số tỷ lệ scaling factor cố định).
- Khởi tạo trọng số (Initialization):
- Ma trận được khởi tạo theo phân phối chuẩn Gauss ().
- Ma trận được khởi tạo toàn bộ bằng .
- Tại bước , , mô hình bắt đầu chính xác từ trạng thái ban đầu của mà không bị nhiễu!
- Zero Inference Latency (Không phát sinh độ trễ khi suy luận):
- Khi deploy lên Production, ta chỉ cần cộng gộp trực tiếp vào (). Mô hình không tốn thêm bất kỳ phép tính nào lúc phục vụ người dùng!
Input (x)
/ \
/ \
[Frozen W_0 (d x k)] [Matrix A (r x k) - Gaussian Init]
(Không học) |
| [Matrix B (d x r) - Zero Init]
| |
| [Scaling * (alpha / r)]
\ /
\ /
---> (+) Output (h) <---
2.2. QLoRA: Đột Phá Lượng Tử Hóa 4-bit (Dettmers et al., 2023)
QLoRA nâng cấp LoRA lên một tầm cao mới thông qua 3 kỹ thuật phần cứng cốt lõi:
- 4-bit NormalFloat (NF4): Kiểu dữ liệu lượng tử hóa 4-bit tối ưu về mặt lý thuyết thông tin cho các trọng số nơ-ron tuân theo phân phối chuẩn (Zero-mean Normal Distribution), bảo toàn chất lượng mô hình tốt hơn nhiều so với kiểu số nguyên INT4 thông thường.
- Double Quantization (DQ - Lượng tử hóa kép): Lượng tử hóa chính các hằng số lượng tử (Quantization Constants), giúp tiết kiệm thêm trên mỗi tham số (tiết kiệm khoảng VRAM cho mô hình 65B).
- Paged Optimizers: Tận dụng bộ nhớ thống nhất CUDA Unified Memory để tự động chuyển các trạng thái bộ nhớ Optimizer sang RAM của CPU khi GPU bị đỉnh điểm quá tải (VRAM Spikes), triệt tiêu hoàn toàn lỗi CUDA Out of Memory (OOM).
2.3. Căn Chỉnh Hành Vi (Model Alignment): RLHF vs. DPO
Sau khi Fine-tune theo chỉ dẫn (Supervised Fine-Tuning - SFT), mô hình cần được "căn chỉnh" để đảm bảo 3 tiêu chí: Hữu ích (Helpful), Trung thực (Honest) và Vô hại (Harmless).
- RLHF (Reinforcement Learning from Human Feedback - PPO):
- Bước 1: Con người chấm điểm các câu trả lời để huấn luyện một Mô hình Thưởng (Reward Model) riêng biệt.
- Bước 2: Dùng thuật toán học tăng cường PPO (Proximal Policy Optimization) để tối ưu hóa LLM sinh ra câu trả lời đạt điểm Reward cao nhất, kết hợp thành phần phạt KL-Divergence để tránh mô hình bị "lệch lạc" quá xa khỏi mô hình gốc.
- Nhược điểm: Cực kỳ phức tạp, không ổn định (Unstable training), đòi hỏi nạp đồng thời 4 mô hình vào VRAM (Actor, Critic, Reward Model, Reference Model).
- DPO (Direct Preference Optimization - Rafailov et al., 2023):
- Chứng minh bằng toán học rằng: Hàm mất mát của bài toán Alignment có thể được biểu diễn trực tiếp qua xác suất của chính LLM mà không cần huấn luyện riêng Reward Model hay dùng thuật toán PPO phức tạp!
- Hàm mất mát DPO Loss: (trong đó là câu trả lời được ưa thích hơn - Winner, là câu trả lời bị từ chối - Loser).
- Ưu điểm: Ổn định tuyệt đối, huấn luyện đơn giản như một bài toán phân loại Cross-Entropy thông thường, nhanh hơn gấp nhiều lần và trở thành chuẩn mực số 1 cho các LLM hiện đại.
3. Các Bảng Markdown So Sánh Chi Tiết
📊 Bảng 1: So Sánh Các Phương Pháp Fine-Tuning LLMs
| Tiêu chí | Full Fine-Tuning | LoRA (Low-Rank Adaptation) | QLoRA (Quantized LoRA) | Prompt Tuning / Prefix |
|---|---|---|---|---|
| Số tham số cần học | toàn bộ mô hình | (Chỉ học vector tiền tố) | ||
| Bộ nhớ VRAM yêu cầu (Model 7B) | (Cần GPU A100/H100) | (Vừa khít 1 GPU RTX 4090) | (Chạy tốt trên GPU Laptop / T4) | |
| Chất lượng mô hình | Tuyệt đối () | Gần như tương đương Full | so với LoRA 16-bit | Kém hơn, khó hội tụ trên tác vụ khó |
| Chi phí hạ tầng | Rất đắt đỏ | Tiết kiệm | Rẻ nhất | Rất rẻ |
| Độ trễ lúc Inference | Không tăng | Không tăng (Nhờ Merge weights) | Tăng nhẹ nếu giữ nguyên dạng 4-bit | Tốn thêm Context tokens |
| Khuyến nghị sử dụng | Khi xây dựng Foundation Model mới | Khi có GPU chuyên dụng ( VRAM) | Chuẩn mực tối ưu cho hầu hết mọi dự án thực tế | Ít dùng cho bài toán phức tạp |
📊 Bảng 2: So Sánh Các Phương Pháp Căn Chỉnh Hành Vi (Model Alignment)
| Tiêu chí | RLHF (với thuật toán PPO) | DPO (Direct Preference Optimization) | KTO (Kahneman-Tversky Optimization) |
|---|---|---|---|
| Cần Reward Model riêng? | Bắt buộc (Phải train Reward Model trước) | Không (Tận dụng trực tiếp Implicit Reward của LLM) | Không |
| Định dạng dữ liệu đầu vào | Cặp so sánh nhị phân: (Prompt, Chosen, Rejected) | Cặp so sánh nhị phân: (Prompt, Winner, Loser) | Dữ liệu đơn lẻ gắn nhãn Thích/Không thích (Prompt, Response, Thumbs Up/Down) |
| Độ ổn định khi huấn luyện | Kém (Rất nhạy cảm với Hyperparameters, dễ sụp đổ) | Cực kỳ ổn định (Hàm lồi, chuẩn xác) | Ổn định |
| Số lượng mô hình cần giữ trong RAM | models (Actor, Critic, Ref, Reward) | Chỉ 2 models (Policy và Reference ) | 2 models |
| Vị thế hiện nay | Từng là chuẩn của GPT-3.5/InstructGPT | Chuẩn mực thống trị hiện nay (Llama 3, Zephyr, Mixtral) | Tăng trưởng nhanh khi chỉ có dữ liệu gắn nhãn 1 chiều |
📊 Bảng 3: So Sánh Các Định Dạng Lượng Tử Hóa (Quantization Formats)
| Định dạng | Số bit / Trọng số | Bộ nhớ VRAM cho Model 7B | Mức độ suy giảm chất lượng (Perplexity Loss) | Mục đích sử dụng tối ưu |
|---|---|---|---|---|
| FP16 / BF16 | 16 bits () | (Baseline chuẩn) | Huấn luyện tiêu chuẩn, Full Training | |
| INT8 | 8 bits () | Rất thấp () | Suy luận (Inference) cân bằng | |
| 4-bit NF4 (QLoRA) | 4 bits () | Cực nhỏ () | Fine-Tuning mô hình lớn trên GPU phổ thông | |
| GPTQ / AWQ | 4 bits (Đã tối ưu hóa ma trận) | Rất thấp | Chuyên sâu phục vụ suy luận thời gian thực (Fast Serving) |
4. Best Practices & Kỹ Thuật Huấn Luyện Thực Chiến (Pro-Tips)
💡 Lựa chọn Target Modules tối ưu cho LoRA
- Trong bài báo gốc, LoRA chỉ áp dụng lên và .
- Kinh nghiệm thực chiến hiện đại: Để đạt chất lượng cao nhất tương đương Full Fine-Tuning, bắt buộc phải áp dụng LoRA lên tất cả các ma trận Linear của Transformer:
from peft import LoraConfig peft_config = LoraConfig( r=16, # Rank (8 đến 32 là lý tưởng) lora_alpha=32, # Thường chọn alpha = 2 * r lora_dropout=0.05, bias="none", task_type="CAUSAL_LM", # Áp dụng lên toàn bộ các tầng Attention và MLP: target_modules=[ "q_proj", "k_proj", "v_proj", "o_proj", # Attention Projection "gate_proj", "up_proj", "down_proj" # SwiGLU MLP Layers ] )
💡 Chuẩn hóa định dạng dữ liệu (Chat Template Standardization)
Luôn sử dụng đúng chuẩn ChatML / Tokenizer Template của mô hình gốc (ví dụ LLaMA 3 có cấu trúc <|start_header_id|>user<|end_header_id|>...) để tránh việc mô hình bị "loạn ngữ nghĩa" do sai lệch ký tự phân tách đặc biệt (Special Tokens).
5. Góc Ôn Luyện Phỏng Vấn (Interview Corner)
❓ Câu hỏi 1: Giải thích nguyên lý toán học của LoRA (Low-Rank Adaptation). Tại sao việc phân rã ma trận với rank lại có thể đạt hiệu năng tương đương so với Full Fine-Tuning trong khi giảm bộ nhớ GPU?
- Gợi ý trả lời:
- Bản chất toán học:
- Giả sử ma trận trọng số ban đầu là . Khi thích ứng với một tác vụ mới, thay vì học lại toàn bộ tham số của , LoRA giả định rằng thông tin biến đổi nằm trong một không gian con có số chiều thấp hơn nhiều (Low Intrinsic Dimension).
- Bằng cách đặt với và (trong đó ), số lượng tham số cần tối ưu hóa giảm từ xuống chỉ còn .
- Ví dụ cụ thể: Nếu và chọn :
- Số tham số gốc: tham số.
- Số tham số LoRA: tham số (Giảm !).
- Lý do tiết kiệm bộ nhớ khổng lồ:
- Bộ nhớ VRAM lớn nhất lúc train không nằm ở trọng số mà nằm ở Trạng thái bộ tối ưu hóa (Optimizer States của Adam) đòi hỏi cho mỗi tham số cần update.
- Giảm số lượng tham số có thể huấn luyện đồng nghĩa với việc loại bỏ gần như dung lượng VRAM dành cho Optimizer States và Gradients!
- Bản chất toán học:
❓ Câu hỏi 2: So sánh phương pháp căn chỉnh RLHF (sử dụng thuật toán PPO) và DPO (Direct Preference Optimization). Tại sao DPO lại đang dần thay thế hoàn toàn RLHF trong các dự án LLM mã nguồn mở hiện nay?
- Gợi ý trả lời:
- Hạn chế của RLHF (PPO):
- Quy trình 2 bước phức tạp: Phải huấn luyện riêng một Reward Model Nếu Reward Model bị sai lệch hoặc bị "hack điểm" (Reward Hacking), mô hình LLM sẽ sinh ra các câu trả lời rác nhưng điểm thưởng vẫn cao.
- Chi phí tài nguyên khổng lồ: Trong lúc chạy PPO, phải duy trì đồng thời 4 mô hình lớn trong VRAM (Actor, Critic, Reference Model, Reward Model).
- Không ổn định: Thuật toán học tăng cường PPO rất nhạy cảm với hyperparameters và rất dễ bị phân kỳ (Divergence).
- Sự đột phá của DPO:
- DPO chứng minh rằng ta có thể tìm ra nghiệm tối ưu của bài toán Maximum Likelihood trực tiếp từ dữ liệu sở thích thông qua mối quan hệ toán học giữa Policy Model và Reference Model .
- DPO loại bỏ hoàn toàn Reward Model và thuật toán PPO.
- Quá trình huấn luyện trở thành một bài toán Supervised Cross-Entropy ổn định, đơn giản, chỉ cần 2 mô hình trong VRAM, chạy nhanh hơn gấp và cho kết quả căn chỉnh vượt trội hơn hẳn.
- Hạn chế của RLHF (PPO):
❓ Câu hỏi 3: QLoRA đạt được khả năng Fine-tune mô hình 70B trên chỉ 2 chiếc GPU thông thường ( VRAM) nhờ những cải tiến kỹ thuật đột phá nào?
- Gợi ý trả lời (3 trụ cột kỹ thuật của QLoRA):
- Lượng tử hóa 4-bit NormalFloat (NF4):
- Trọng số của các mạng nơ-ron sâu sau khi pre-train luôn tuân theo phân phối chuẩn .
- NF4 chia không gian xác suất của phân phối chuẩn thành 16 khoảng có diện tích bằng nhau, đảm bảo mỗi trạng thái 4-bit lưu trữ lượng thông tin tối đa, giúp nén trọng số từ 16-bit xuống 4-bit mà hầu như không làm giảm độ chính xác.
- Double Quantization (Lượng tử hóa cấp 2):
- Mỗi block 64 trọng số cần 1 hằng số scale 32-bit ().
- QLoRA tiếp tục nén chính các hằng số scale này thành định dạng 8-bit FP8, giúp tiết kiệm thêm hàng Gigabytes VRAM trên các mô hình lớn.
- Paged Optimizers (Tận dụng CUDA Unified Memory):
- Khi xử lý các câu văn dài bất thường, bộ nhớ GPU có thể bị tăng đột biến (Memory Spikes). Thay vì bị lỗi
CUDA Out of Memory, Paged Optimizers tự động đẩy tạm các trạng thái của Adam Optimizer sang bộ nhớ RAM của CPU và kéo lại GPU khi cần, đảm bảo quá trình huấn luyện diễn ra liên tục không gián đoạn.
- Khi xử lý các câu văn dài bất thường, bộ nhớ GPU có thể bị tăng đột biến (Memory Spikes). Thay vì bị lỗi
- Lượng tử hóa 4-bit NormalFloat (NF4):
6. Tóm Tắt Ghi Nhớ Nhanh (Key Takeaways)
- LoRA nén ma trận biến thiên trọng số với , giảm bộ nhớ VRAM và đạt Zero Inference Latency.
- QLoRA kết hợp 4-bit NormalFloat (NF4) + Double Quantization + Paged Optimizers, cho phép fine-tune mô hình 70B trên phần cứng phổ thông.
- Luôn cấu hình LoRA lên toàn bộ các tầng Linear (
target_modules = all-linear) để đạt hiệu năng tối đa. - DPO (Direct Preference Optimization) là tiêu chuẩn căn chỉnh hành vi (Alignment) hiện đại, loại bỏ hoàn toàn sự phức tạp và bất ổn của RLHF (PPO).