CoolFace
Modelpublic

Chess-Nut-Engine/chess-qwen35-0.8b-sft-v2-20260709

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
0likes
Model Card

chess-qwen35-0.8b-sft-v2-20260709

Qwen3.5-0.8B (Gated-DeltaNet hybrid) — v2 curriculum run on the data-v2 revision of chess-sft-corpus-4x: in-check oversampling (~30%), checkevasion + candidate-compare-trace tasks, label-quality caps, and a ~9%/phase general-instruction mix (smoltalk2) for reasoning preservation. 2M examples/phase A->B->C on 2x H100 (16x2048 + gradient checkpointing). `phasec is the final model. v1 baseline: Chess-Nut-Engine/chess-qwen35-0.8b-sft-abc-20260708`.

Headline results (vs the v1 baseline's phase C)

KPIv1-Cv2-C
GSM8K (general reasoning, greedy)0.5%41.0% (base model: 53%)
rollout diversity (distinct moves/8 @ T0.8)0.6250.687
legal_moves on in-check positions27.2%49.8%
legality_check (gate)94.8%96.8%
legal_moves overall87.0%83.3%
WPD (lower better)0.4350.469

v2 trades a few points of aggregate chess accuracy for a dramatic recovery of general reasoning (the v1 model answered every input with chess-task grammar) plus durable fixes to in-check legality — making this the preferred seed for the RL (GRPO/SDPO) phase. Full analysis in the repo's docs/experiments/2026-07-09_v2_run/README.md.

Usage

python
from transformers import AutoModelForCausalLM, AutoTokenizer
m = AutoModelForCausalLM.from_pretrained(
    "Chess-Nut-Engine/chess-qwen35-0.8b-sft-v2-20260709",
    subfolder="phase_c", trust_remote_code=True)
t = AutoTokenizer.from_pretrained(
    "Chess-Nut-Engine/chess-qwen35-0.8b-sft-v2-20260709",
    subfolder="phase_c")

<move>/</move> are tokenizer special tokens. Planning prompts use the <think>...</think><move>uci</move> protocol.