Fine-tuning & Model Customization
Trang chủ / Module 7
🎯 Module 7 / 14 · 1-2 tuần

Alignment nâng cao: RLHF, DPO, RLAIF

Sau SFT là Alignment — dạy model ưu tiên một phản hồi hơn phản hồi khác. RLHF cổ điển, DPO hiện đại, và RLAIF.

DPORLHFPreference
📌 Vì sao module này quan trọng

SFT dạy model "trả lời như thế này" nhưng không dạy được sắc thái "trả lời kiểu này tốt hơn kiểu kia" khi có nhiều cách trả lời đều hợp lý. Alignment (căn chỉnh theo sở thích) là bước bổ sung giúp model nhất quán hơn, an toàn hơn, và bám sát gu người dùng hơn — đây là kỹ thuật đứng sau các model "instruct/chat" bạn vẫn gọi qua API hàng ngày ở khoá AI Engineer.

🎯 Mục tiêu học tập

  • Hiểu vì sao SFT thuần không đủ để có một model chat chất lượng cao, cần thêm bước alignment
  • Giải thích quy trình RLHF cổ điển: reward model + reinforcement learning (PPO)
  • Hiểu DPO (Direct Preference Optimization) đơn giản hoá RLHF ra sao, vì sao nó trở thành lựa chọn phổ biến
  • Chuẩn bị dữ liệu preference (cặp chosen/rejected) đúng cách
  • Biết RLAIF là gì và khi nào nó thay thế được feedback từ con người

Vì sao cần Alignment sau SFT

SFT huấn luyện model để dự đoán đúng token tiếp theo giống hệt dữ liệu mẫu — nhưng không có cơ chế nào dạy "giữa 2 câu trả lời đều đúng ngữ pháp và đúng nội dung, câu nào con người thích hơn" (ngắn gọn hơn hay chi tiết hơn? Giọng văn thân thiện hay trang trọng?). Đây chính là khoảng trống mà các kỹ thuật alignment (RLHF, DPO) giải quyết: huấn luyện model dựa trên dữ liệu so sánh cặp (câu trả lời A tốt hơn câu trả lời B) thay vì chỉ dữ liệu "đúng/sai" đơn thuần của SFT.

RLHF cổ điển: Reward Model + PPO

Quy trình RLHF nguyên bản (được dùng để huấn luyện các model instruct thế hệ đầu) gồm 3 bước:

  1. Thu thập dữ liệu preference: với mỗi prompt, sinh nhiều câu trả lời, con người xếp hạng câu nào tốt hơn.
  2. Huấn luyện Reward Model: một model riêng học dự đoán "điểm số" mà con người sẽ chấm cho một câu trả lời, dựa trên dữ liệu xếp hạng ở bước 1.
  3. Tinh chỉnh model chính bằng Reinforcement Learning (thuật toán PPO): model chính sinh câu trả lời, Reward Model chấm điểm, thuật toán PPO điều chỉnh model chính để tối đa hoá điểm số kỳ vọng — đồng thời có một ràng buộc (KL penalty) giữ model không lệch quá xa so với model SFT ban đầu, tránh "đánh lừa" reward model bằng các output kỳ lạ.

RLHF cho kết quả tốt nhưng phức tạp để vận hành đúng: cần huấn luyện và duy trì tới 4 model cùng lúc (model chính, reference model, reward model, và value model của PPO), rất nhạy với siêu tham số, dễ mất ổn định huấn luyện — lý do phần lớn ứng dụng thực tế ngày nay chuyển sang DPO.

DPO — đơn giản hoá RLHF bằng một công thức toán học

Direct Preference Optimization (2023) chứng minh về mặt toán học rằng mục tiêu tối ưu của RLHF có thể được viết lại thành một loss function duy nhất, tối ưu trực tiếp trên dữ liệu preference (chosen/rejected) — không cần huấn luyện Reward Model riêng, không cần vòng lặp Reinforcement Learning. Về bản chất, DPO biến bài toán "RL phức tạp" thành một bài toán "supervised learning" quen thuộc, ổn định và dễ triển khai hơn nhiều:

from trl import DPOTrainer, DPOConfig

# Dữ liệu preference: mỗi mẫu có prompt + 2 phản hồi (chosen tốt hơn, rejected kém hơn)
# {"prompt": "...", "chosen": "câu trả lời tốt", "rejected": "câu trả lời kém hơn"}

dpo_config = DPOConfig(
    output_dir="./qwen-support-dpo",
    beta=0.1,           # kiểm soát mức độ model được phép lệch khỏi model SFT gốc
    learning_rate=5e-6,  # thường thấp hơn nhiều so với learning rate của SFT
    num_train_epochs=1,
)

trainer = DPOTrainer(
    model=sft_model,            # bắt đầu từ model đã qua SFT (Module 6), KHÔNG phải base model gốc
    ref_model=None,              # None = tự động dùng bản sao đóng băng của model ban đầu làm reference
    args=dpo_config,
    train_dataset=preference_dataset,
)
trainer.train()
⚠️ Thứ tự bắt buộc

DPO luôn chạy sau SFT, không thay thế SFT — model cần đã biết "trả lời đúng định dạng cơ bản" (từ SFT) trước khi học "trả lời theo cách nào được ưa thích hơn" (từ DPO). Bỏ qua SFT và chạy thẳng DPO trên base model thường cho kết quả kém ổn định.

RLAIF — dùng AI thay cho con người để tạo dữ liệu preference

Thu thập preference từ con người tốn kém và chậm. RLAIF (Reinforcement Learning from AI Feedback) dùng một LLM mạnh (đóng vai "giám khảo", kỹ thuật LLM-as-judge quen thuộc từ Module 11 khoá AI Engineer) để tự động xếp hạng các cặp câu trả lời thay cho con người — giảm chi phí và tăng tốc độ thu thập dữ liệu preference đáng kể. Đánh đổi: chất lượng phụ thuộc hoàn toàn vào chất lượng và độ thiên kiến của model giám khảo — nên luôn kiểm định bằng một mẫu nhỏ có con người xếp hạng song song để đo mức độ đồng thuận trước khi tin tưởng hoàn toàn vào RLAIF ở quy mô lớn.

🏋️ Bài tập thực hành

DPO trên model đã SFT

Từ model đã SFT ở Module 6, tạo 1 tập dữ liệu preference nhỏ (50-100 cặp) — với mỗi prompt, sinh 2 câu trả lời (ví dụ 1 từ model đã SFT, 1 từ model gốc chưa fine-tune), tự đánh giá (hoặc dùng LLM-as-judge) câu nào tốt hơn để gán nhãn chosen/rejected. Chạy DPOTrainer, so sánh output của model trước/sau DPO trên vài câu hỏi test — quan sát sự thay đổi về phong cách/chất lượng.

📚 Tài nguyên học tập

✅ Tự đánh giá hoàn thành

  • Giải thích được vì sao SFT thuần không đủ, cần thêm bước alignment
  • Mô tả được 3 bước của quy trình RLHF cổ điển
  • Giải thích được DPO đơn giản hoá RLHF ra sao, và vì sao nó ổn định hơn
  • Chuẩn bị đúng dữ liệu preference (chosen/rejected) và chạy được DPOTrainer