---
license: apache-2.0
base_model: Qwen/Qwen3.5-0.8B
tags:
- chess
- rl
- dpo
- distillation
- qwen3.5
datasets:
- Chess-Nut-Engine/chess-sft-corpus-4x
---
# chess-qwen35-0.8b-rl-20260710 — RL campaign checkpoints
Four checkpoints from the RL phase (2026-07-09/10), all descending from the
v3 SFT curriculum (`...sft-v3-20260709`). Gameplay scores are vs
Stockfish limited to Elo 1320, 1,024 games, thinking mode unless noted.
| subfolder | what it is | game score |
| --- | --- | --- |
| `topup` | v3-C + prompt-unified seed-pack top-up (the RL seed) | 0.1160 think / 0.1201 gut |
| `dpo_r2` | + iterative DPO on 30.8k stratified self-play pairs | **0.1337** think |
| `r5e_english` | dpo_r2 + English-voice SFT top-up (verified 35B traces) — **reasons in natural English (399/400 game traces)**, best diversity | 0.1260 think (statistical tie w/ dpo_r2) |
| `dopd_r1` | r5e + 200 steps DOPD token-routed distillation (arXiv 2606.30626 adaptation, same-weights privileged teacher) | pilot — see repo docs |
Key findings encoded in these checkpoints: thinking-mode play only pays when
trained-for (+0.018 for dpo_r2, nothing for the seed); preference training
nudges move choice but cannot shift trace style; one SFT top-up flipped the
model to natural-English reasoning at zero strength cost. Full records:
`docs/experiments/2026-07-10_rl_campaign/` in the project repo.
## Usage
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
m = AutoModelForCausalLM.from_pretrained(
"Chess-Nut-Engine/chess-qwen35-0.8b-rl-20260710",
subfolder="r5e_english", trust_remote_code=True)
t = AutoTokenizer.from_pretrained(
"Chess-Nut-Engine/chess-qwen35-0.8b-rl-20260710",
subfolder="r5e_english")
```
Planning protocol: `...uci`; `` tags are
tokenizer special tokens. Thinking mode requires the chat template's
`enable_thinking=True`.