---
language:
- en
license: apache-2.0
tags:
- chess
- reinforcement-learning
- supervised-fine-tuning
- lora
- trl
- transformers
- qwen
pipeline_tag: text-generation
base_model: Qwen/Qwen3-0.6B
datasets:
- Lichess/chess-puzzles
---
# dopamineaddict/qwen3-0.6b-chess-sft-v1
This model is a LoRA fine-tuned variant of `Qwen/Qwen3-0.6B`, trained to output chess moves in UCI format wrapped in `...` along with a short `...` explanation.
It was created as a baseline submission model for the AIcrowd Global Chess Challenge 2025.
## Intended use
- Intended for chess move selection in settings where the input includes:
- A FEN position.
- The side to move.
- A list of legal moves in UCI.
- Intended output format:
- `{legal_uci_move}`
- `{one-sentence explanation}`
## How to use
Example (Transformers):
```
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch, re
MODEL_ID = "dopamineaddict/qwen3-0.6b-chess-sft-v1"
tok = AutoTokenizer.from_pretrained(MODEL_ID, use_fast=True)
model = AutoModelForCausalLM.from_pretrained(MODEL_ID, torch_dtype=torch.float16, device_map="auto")
model.eval()
prompt = """Position (FEN):
Side to move: White
Legal moves: e2e4, g1f3, ...
Return exactly:
...
...
"""
inputs = tok(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
out = model.generate(**inputs, max_new_tokens=64, do_sample=False, temperature=0.0)
text = tok.decode(out, skip_special_tokens=False)
m = re.search(r"\s*([^<\s]+)\s*", text)
print("model_output:", text)
print("uci_move:", m.group(1) if m else None)
```
## Training data
- Primary dataset: `Lichess/chess-puzzles`.
- Construction approach:
- The puzzle FEN was converted into a “player-to-move” position by applying the first UCI move from the puzzle move list.
- The supervised label was the next UCI move in the puzzle solution sequence.
- Additional fields stored during data prep (varies by run): legal moves list, puzzle metadata, and optional Stockfish annotations.
## Training procedure
- Method: supervised fine-tuning (SFT) with LoRA adapters.
- Trainer: TRL `SFTTrainer`.
- Objective: maximize format compliance and legality (always emit a legal UCI move wrapped in `` tags).
- Hardware: single NVIDIA T4 GPU (typical for initial iteration).
## Evaluation
This model was primarily validated via:
- Format compliance checks (presence of `` and parsable UCI).
- Legality checks (output move exists in the provided legal moves list for that position).
- Quick qualitative checks on held-out puzzle positions.
No Elo or engine-match benchmark is reported for this baseline version.
## Limitations and biases
- The model is trained mostly on *tactical* puzzle positions and may be weaker in quiet/opening positions.
- The `` field may be repetitive or generic in this version; it is not optimized for explanation quality.
- This is not a substitute for a full chess engine and can still choose suboptimal moves.
## License and attribution
- Base model: `Qwen/Qwen3-0.6B` (see upstream license and terms).
- Puzzle data: derived from the Lichess puzzles dataset.