Chess MoE (five 99M experts + router)

Jointly trained Switch MoE. Five 99M squares64 specialists plus a small MLP router on the incumbent global_hidden. Compact vocab 1968.

This file is latest.pt at step 550 (2026-09-14 20:15 UTC). Train loss ~2.4342. Val hard CE ~1.2483.

Elo

Search-free greedy policy (legal-masked argmax). No book, no Syzygy, no MCTS. Opponent: Stockfish 19 UCI_LimitStrength / UCI_Elo, movetime=0.05s, ply cap 160. This is not FIDE or Lichess Elo.

Estimate: 2028 UCI_Elo.

SF UCI_Elo Score W-D-L Ply-cap (counted as draw)
2050 0.469 (32g) 10-10-12 1

logistic from 32 games vs 2050 score=0.469

Experts

  • incumbent
  • puzzle
  • endgame
  • opening
  • middlegame

Router: LayerNorm β†’ 736β†’256β†’256β†’5 (~257,221 params). Hard argmax dispatch. Incumbent encode is reused if the gate picks it.

Files

  • latest.pt β€” full bundle (router + all five expert state dicts)
  • router.pt β€” router head only
  • experts/<name>.pt β€” each 99M specialist
  • router_config.json
  • train.log
  • elo_eval.json (if present)

Load with this repo and MOVE_VOCAB_VERSION=compact:

from chess_inference import load_checkpoint, get_model_move
model = load_checkpoint("latest.pt", device="cuda")

Not a drop-in replacement for the standalone incumbent / puzzle / endgame / opening / middlegame repos. Those stay as the pre-joint specialists.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support