avewright's picture
exp189 maxelo policy: best+latest (step 2851), elo~1700, progress docs
1c0e1b7 verified
|
Raw
History Blame Contribute Delete
2.85 kB
metadata
license: mit
library_name: pytorch
tags:
  - chess
  - transformer
  - reinforcement-learning
  - stockfish
  - policy
language:
  - en
pipeline_tag: other

Chess Transformer 200M — MaxElo (policy-only)

Finetune of avewright/chess-transformer-200m-compact-soft for high Elo without MCTS: next-move prediction via legal-mask policy argmax.

Model card

Architecture ChessTransformer ~204M (fused board encoder, 16L × 1024d × 16H)
Vocab compact (MOVE_VOCAB_VERSION=compact)
Heads Spatial policy + 3-class WDL value
Inference Policy argmax only (no search)
Base chess-transformer-200m-compact-soft
Train run exp189 (soft MultiPV + deep soft mix + hard depth≥15)

Checkpoints in this repo

File Meaning
best_model.pt Best blended soft holdout top-1 during deep-mix resume
latest_model.pt Shutdown weights at step 2851
config.json Architecture + training metadata
PROGRESS.md Full session write-up
elo_eval.json Raw Elo ladder results

Lean checkpoints contain model_state_dict + metadata (no optimizer).

Training data mix

  1. Shallow soft — MultiPV soft targets from avewright/exp186-sf-multipv-2m
  2. Deep soft — phase-balanced SF18 MultiPV from avewright/exp190-phase-deep-soft (~40% of soft steps)
  3. Hard ballast — HF Stockfish-labeled stream, min_depth ≥ 15

Augmentation: horizontal flip on soft batches (hflip_p=0.5).

Elo (pure policy)

Evaluated with elo_eval_latest.py vs Stockfish 18 UCI_LimitStrength (50ms/move, opening book + Syzygy, 8 openings × both colors):

Opponent Elo Score W–D–L
1500 0.625 7–6–3
1800 0.438 4–6–6

Estimated Elo ≈ 1700 (bracket 1500–1800; small sample, noisy).

Quick load

import os, torch
os.environ["MOVE_VOCAB_VERSION"] = "compact"
from play import load_model  # or elo_eval_latest.load_eval_model

model = load_model("best_model.pt", device="cuda")
model.eval()

Or play in the local GUI:

export MOVE_VOCAB_VERSION=compact
python play_factory_gui.py --checkpoint best_model.pt

Known limits

  • Plateaued on the available soft mix; more deep phase-balanced data should help
  • Weaker as Black in the Elo sample
  • Castling indices use Chess960-style UCI in the vocab; GUI converts to standard UCI for chess.js

Citation / code

Training code: avewright/transformexperiments/exp189_200m_maxelo_policy.py, docs/PROGRESS_2026-07-10.md.