Downloads · 30 days
33
1% of all-time downloads
Makaco/lmps-challenge-qwen3.5-9b-dpo
lmps-challenge-qwen3.5-9b-dpo is a text generation model from Makaco. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as apache-2.0.
A Qwen/Qwen3.5-9B model fine-tuned via supervised fine-tuning on the success-filtered split of colab-potsdam/playpen-data, followed by an on-policy Direct Preference Optimization pass. DPO preference pairs were constr…
Downloads · 30 days
33
1% of all-time downloads
All-time downloads
2.6K
Public
Parameters
9B
17.9 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors17.9 GB · 100%
From the Hugging Face model README
A Qwen/Qwen3.5-9B model fine-tuned via supervised fine-tuning on the success-filtered split of colab-potsdam/playpen-data, followed by an on-policy Direct Preference Optimization pass. DPO preference pairs were constructed on-policy from the SFT model's own successful game rollouts. The model's original response served as the chosen completion, and an artificially corrupted version - padded with verbose filler continuations - served as the rejected one, targeting the common tendency of LLMs to ramble and loop, which can easily downgrade performance in dialogue-based settings. This recipe takes the model from 58.82 (SFT) to 70.21 clemscore. This model was developed as part of a broader investigation into whether DPO can induce novel strategic and rule-following skills in dialogue-game agents, or whether it is better suited to sharpen behaviors already established via SFT. Of the DPO conditions tested, targeting verbosity/looping produced the largest gains, and this checkpoint reflects that setup. See the project's GitHub repo for further information on the training ablations conducted. Furthermore, a technical report will follow, and will be linked to this model card as soon as it is available. Submitted to the LM Playschool Challenge.
Starting from Qwen/Qwen3.5-9B, the model was supervised-fine-tuned using LoRA on exclusively the successful game rounds present in the interactions subset (train split) of the colab-potsdam/playpen-data. Subsequently, the supervised-fine-tuned model was preference-optimised via DPO on on-policy content-controlled preference pairs, in order to reinforce the model's own successful moves while suppressing verbose and potentially format-breaking prose. The dataset containing the DPO pairs is available here.
Qwen/Qwen3.5-9B → SFT (LoRA, all linear) → merge adapter into base model → on-policy DPO (LoRA, all linear) → merge adapter into supervised-fine-tuned model. The checkpoint presented in this model card is the final merged model, standalone and directly available for loading.
chosen) were paired with the same move plus appended extra prose (rejected). In order to avoid leakage, the clembench game rounds which are part of the playpen eval set were excluded from the pairs creation.The table below presents the results obtained by the model described here in the colab-potsdam/playpen-data' evaluation suite, comprising 68 clembench benchmark-2.0 game instances across 14 games, as well as 430 instances of static benchmarks obtained from 5 different benchmarks (bbh, mmlu_pro, cladder, ifeval, eqbench). The clemscore metric quantifies model performance on the clembench game instances, while statscore quantifies that on the static benchmarks. For comparison, results for Qwen/Qwen3.5-9B and the supervised-fine-tuned only version are provided too, along with incremental score differences across training stages (Δ = change relative to the previous row).
| Model | Clemscore | Statscore | Δ clemscore | Δ statscore |
|---|---|---|---|---|
| Qwen/Qwen3.5-9B | 41.92 | 54.16 | / | / |
| SFT baseline | 58.82 | 61.09 | +16.90 | +6.93 |
| This model | 70.21 | 58.73 | +11.39 | -2.36 |
Please refer to the project GitHub repo's README for instructions on how to replicate this model's training.
Hyperparameters, training and compute details for the SFT component:
| Hyperparameter | Value |
|---|---|
| Training method | LoRA SFT, assistant-only language-modeling loss |
| Precision | bfloat16 |
| Epochs | 1 |
| Max sequence length | 1024 |
| Hyperparameter | Value |
|---|---|
| Optimizer | AdamW (TRL SFTTrainer default) |
| Learning rate | 2e-4 |
| LR schedule | linear |
| Warmup ratio | 0.05 |
| Batch size (per-device × world size × grad acc steps) | 4 × 1 × 4 = 16 (effective) |
| Gradient clipping | max-norm 1.0 (default) |
| Total training steps | 1137 |
| Hyperparameter | Value |
|---|---|
| LoRA rank (r) | 16 |
| LoRA alpha | r × 2 = 32 |
| LoRA dropout | 0.05 |
| Target modules | all linear layers |
| Item | Value |
|---|---|
| Dataset size | 20,202 |
| Train/val split | 90/10 |
| Resource | Value |
|---|---|
| Hardware | 1 × NVIDIA H100 (94GB) |
| Wall-clock training | 3h 50m |
| Metric | Values |
|---|---|
| Final training loss | 0.2195 |
| Mean token accuracy | 0.962 |
| Val loss | 0.133 |
Hyperparameters, training and compute details for the DPO component:
| Hyperparameter | Value |
|---|---|
| Training method | LoRA DPO |
| Precision | bfloat16 |
| Epochs | 1 |
| Max sequence length | 2048 |
| Hyperparameter | Value |
|---|---|
| Optimizer | AdamW (TRL DPOTrainer default) |
| Learning rate | 5e-5 |
| LR schedule | linear |
| Warmup ratio | 0.05 |
| DPO beta | 0.3 |
| Batch size (per-device × world size × grad acc steps) | 2 × 1 × 4 = 8 (effective) |
| Gradient clipping | max-norm 1.0 (default) |
| Total training steps | 112 |
| Hyperparameter | Value |
|---|---|
| LoRA rank (r) | 16 |
| LoRA alpha | r × 2 = 32 |
| LoRA dropout | 0.05 |
| Target modules | all linear layers |
| Item | Value |
|---|---|
| Dataset size | 995 |
| Train/val split | 90/10 |
| Resource | Value |
|---|---|
| Hardware | 1 × NVIDIA H100 (94GB) |
| Wall-clock training | 0h 25m |
| Metric | Values |
|---|---|
| Final training loss | ~0.033 |
| Ranking accuracy | 1.0 |
| Mean token accuracy | 0.898 |
| Val loss | ~0.000 |
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_name = "Makaco/lmps-challenge-qwen3.5-9b-dpo"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.bfloat16,
device_map="auto"
)
# The model is specialised for clembench/playpen dialogue games, so it is recommended to use game-oriented prompts
messages = [
{"role": "user", "content": "You are playing a game of Taboo. The word you have to describe is ocean. "
"The taboo words are: sea, water, blue, wave. Reply with 'CLUE: <your clue>'."}
]
inputs = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, return_tensors="pt"
).to(model.device)
outputs = model.generate(inputs, max_new_tokens=300, do_sample=False)
response = tokenizer.decode(outputs[0][inputs.shape[-1]:], skip_special_tokens=True)
print(response)
Intended for playing text-based dialogue games in the clembench/playpen framework or in similar simulated environments, and for research on interactive dialogue agents and DPO for interaction and game-playing.