lab22-dpo-vn

LoRA adapter fine-tuned với DPO (Direct Preference Optimization) trên unsloth/Qwen2.5-3B-bnb-4bit, làm trong khuôn khổ Lab 22 — DPO/ORPO Alignment, Track 3, chương trình VinUni AICB (K4).

Adapter này được train chồng lên 1 SFT LoRA adapter khác (adapters/sft-mini trong repo gốc) — quy trình: SFT trước để có baseline "đủ tốt", sau đó DPO để align theo preference data.

Model Details

  • Base model: unsloth/Qwen2.5-3B-bnb-4bit (Qwen2.5-3B, quantize 4-bit NF4)
  • Adapter type: LoRA, r=16, alpha=32, dropout=0, target modules: q_proj k_proj v_proj o_proj gate_proj up_proj down_proj
  • Training method: TRL DPOTrainer, loss_type="sigmoid" (DPO chuẩn)
  • Framework: Unsloth + PEFT + TRL + bitsandbytes
  • Ngôn ngữ: chủ yếu tiếng Việt (dữ liệu SFT + preference đều tiếng Việt/song ngữ)

Training Data

Giai đoạn Dataset Số lượng Ghi chú
SFT (adapter nền) 5CD-AI/Vietnamese-alpaca-gpt4-gg-translated 1,000 dòng Format Alpaca dịch tiếng Việt (GPT-4 quality, Google-translate)
DPO (adapter này) argilla/ultrafeedback-binarized-preferences-cleaned 2,000 cặp prompt/chosen/rejected UltraFeedback tiếng Anh (chưa có preference data tiếng Việt native quy mô lớn)

Training Hyperparameters

Hyperparameter Giá trị
beta 0.1
learning_rate 5e-7
epochs 1
max_length / max_prompt_length 512 / 256
per_device_train_batch_size 1
gradient_accumulation_steps 8 (effective batch = 8)
lr_scheduler_type cosine, warmup_ratio 0.1
Precision fp16 (T4 — Turing, không hỗ trợ bf16)
Hardware 1× NVIDIA Tesla T4 16GB, free Google Colab

Evaluation Results

Metric Giá trị
Final DPO training loss 0.7346
Chosen reward (cuối training) -0.725
Rejected reward (cuối training) -1.043
Reward gap (chosen − rejected) +0.318

Reward gap dương và chosen reward tăng trong quá trình train → theo phân loại của lab đây là case "intended success" (không phải likelihood displacement).

Known Limitation

Khi generate độc lập bằng cách load unsloth/Qwen2.5-3B-bnb-4bit + chỉ adapter này (không kèm SFT adapter bên dưới), 5/8 prompt test trong lab cho output gần như giống hệt baseline SFT-only — nghi ngờ do cách 2 LoRA (SFT + DPO) được lưu/tải không giữ đúng cấu trúc chồng lớp ban đầu lúc train. Nếu dùng lại adapter này, khuyến nghị load cùng adapters/sft-mini (hoặc set_adapter(["sft", "dpo"]) nếu dùng multi-adapter PEFT) thay vì dùng adapter DPO một mình trên base gốc.

How to Use

from unsloth import FastLanguageModel
from peft import PeftModel

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="unsloth/Qwen2.5-3B-bnb-4bit",
    max_seq_length=512,
    load_in_4bit=True,
)
model = PeftModel.from_pretrained(model, "Tuannt1601/lab22-dpo-vn")
FastLanguageModel.for_inference(model)

Framework versions

  • PEFT 0.20.0
Downloads last month
10
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Tuannt1601/lab22-dpo-vn

Base model

Qwen/Qwen2.5-3B
Adapter
(99)
this model