Views
No views yet
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).adapters/sft-mini trong repo gốc) — quy trình: SFT trước để có baseline "đủ tốt", sau đó DPO để align theo preference data.unsloth/Qwen2.5-3B-bnb-4bit (Qwen2.5-3B, quantize 4-bit NF4)q_proj k_proj v_proj o_proj gate_proj up_proj down_projDPOTrainer, loss_type="sigmoid" (DPO chuẩn)| 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) |
| 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 |
| 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 |
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.1from unsloth import FastLanguageModel
2from peft import PeftModel
3
4model, tokenizer = FastLanguageModel.from_pretrained(
5 model_name="unsloth/Qwen2.5-3B-bnb-4bit",
6 max_seq_length=512,
7 load_in_4bit=True,
8)
9model = PeftModel.from_pretrained(model, "Tuannt1601/lab22-dpo-vn")
10FastLanguageModel.for_inference(model)