Instructions to use Tuannt1601/lab22-dpo-vn with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use Tuannt1601/lab22-dpo-vn with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("unsloth/Qwen2.5-3B-bnb-4bit") model = PeftModel.from_pretrained(base_model, "Tuannt1601/lab22-dpo-vn") - Transformers
How to use Tuannt1601/lab22-dpo-vn with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Tuannt1601/lab22-dpo-vn")# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("Tuannt1601/lab22-dpo-vn", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use Tuannt1601/lab22-dpo-vn with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Tuannt1601/lab22-dpo-vn" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Tuannt1601/lab22-dpo-vn", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/Tuannt1601/lab22-dpo-vn
- SGLang
How to use Tuannt1601/lab22-dpo-vn with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "Tuannt1601/lab22-dpo-vn" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Tuannt1601/lab22-dpo-vn", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "Tuannt1601/lab22-dpo-vn" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Tuannt1601/lab22-dpo-vn", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Unsloth Desktop
- Docker Model Runner
How to use Tuannt1601/lab22-dpo-vn with Docker Model Runner:
docker model run hf.co/Tuannt1601/lab22-dpo-vn
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.
- Repo bài lab: https://github.com/Tuannt04/K4-Track3-Day22-DPO-ORPO-Alignment-2A202601330-NguyenThuaTuan
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