Training
Alignment Method: Direct Preference Optimization (DPO)
Frameworks: TRL, Unsloth, PEFT (LoRA)
LoRA Configuration
Applied modules: q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj
Configuration:
- LoRA Rank: 32
- LoRA Alpha: 64
- LoRA Dropout: 0
Evaluation
Compared to the SFT model, this DPO adapter brings improvement to the model while introducing a small trade-off in strict instruction-following performance.
Table with columns: Benchmark, SFT, DPO, Δ| Benchmark | SFT | DPO | Δ |
|---|
| MMLU-Pro | 37.91 | 39.86 | +1.95 |
| GSM8K | 71.27 | 72.48 | +1.21 |
| HellaSwag | 62.28 | 62.26 | -0.02 |
| TruthfulQA mc2 | 51.62 | 53.09 | +1.47 |
| ARC Challenge | 44.97 | 43.26 | -1.71 |
| IFEval strict prompt | 33.09 |
Blind A/B Evaluation tests with LLM-as-a-judge and Human-In-The-Loop calibration preferred the DPO model over the SFT model in majority of the runs.
Usage
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
base_model = AutoModelForCausalLM.from_pretrained(
"ayushshah/Qwen3-1.7B-UltraChat-SFT"
)
model = PeftModel.from_pretrained(
base_model,
"ayushshah/Qwen3-1.7B-Chat-LoRA"
)
tokenizer = AutoTokenizer.from_pretrained(
"ayushshah/Qwen3-1.7B-UltraChat-SFT"
)
Alternatively, you can also load the base_model using Unsloth.
For more details, check the model card of the merged model.