Use and limits
The model is for research and prototype work on spoken chess-move normalization. It expects the caller to supply an exhaustive legal-move list for the current position. It is not a chess engine and should not be used to execute moves without confirmation.
The held-out owned test found 7 invalid utterances incorrectly accepted as legal moves out of 39 invalid cases. A legal-move validator alone does not catch that failure: the returned move can be legal for the position but unrelated to what the speaker said.
Loading the adapter
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
base_id = "Qwen/Qwen3-4B"
adapter_id = "rrodolfo0/spoken-move-qwen3-4b-lora"
tokenizer = AutoTokenizer.from_pretrained(base_id)
base = AutoModelForCausalLM.from_pretrained(base_id)
model = PeftModel.from_pretrained(base, adapter_id)
Use the Qwen chat template with thinking disabled, then prompt the model with the same four input fields used in training: fen, legal_moves_uci, recent_san, and utterance. Greedy decoding and a 64-token output limit were used for the reported evaluation.
Training
The adapter was trained with QLoRA on 2,048 examples from rrodolfo0/spoken-move-v2-train.
- Base model:
Qwen/Qwen3-4B@1cfa9a7208912126459214e8b04321603b3df60c
- LoRA: rank 16, alpha 32, dropout 0.05
- Quantization: NF4 with float16 compute
- Training: 3 epochs, 768 optimizer updates, learning rate 2e-4
- Hardware: one Tesla T4
- Adapter weights SHA-256:
c35221505860ca3d1cc9141684fc008704ed04f5e0c7c7b212a064f4cbb587d9
- Training data SHA-256:
3cbc92e23ecb312be4475cd5641d5b65bcce016ab154dad945e6d566af86fa87
Evaluation
Strict exact accuracy requires bare JSON with exactly the keys status and san, the correct status, and the canonical SAN or null. Scoring is deterministic.
Table with columns: Panel, Adapter, Claude Haiku 4.5, best few-shot prompt| Panel | Adapter | Claude Haiku 4.5, best few-shot prompt |
|---|
| Held-out owned test | 247/256 (96.48%) | 199/256 (77.73%) |
| Frontier | 23/30 (76.67%) | 21/30 (70.00%) |
| Training diagnostic | 30/32 (93.75%) | 25/32 (78.12%) |
The held-out owned test is the main result. The training diagnostic was used during adapter development, so it is diagnostic evidence rather than an independent generalization result. Haiku used its strongest few-shot prompt while this adapter used a fixed structured prompt, making these prompt-ceiling comparisons rather than a controlled model-only comparison.
Citation
@misc{spoken_move_qwen3_4b_lora_2026,
title = {Spoken Move Qwen3-4B LoRA},
author = {rrodolfo0},
year = {2026},
publisher = {Hugging Face}
}