chessard

Weights for chessard, a network that predicts the move a human of a given rating would play. It is built on a Leela Chess Zero BT4 transformer body with a Stockfish-aware policy head. The engine and inference code are at github.com/daniel-monroe/chessard; this repo holds only weights.

File What Elo (default)
chessard.pt base model (float16, ~400 MB) 2000–2900 (trained on 2000+ games)
loras/carlsen.pt LoRA adapter: Magnus Carlsen 2840
loras/nakamura.pt LoRA adapter: Hikaru Nakamura 2810
loras/sadler.pt LoRA adapter: Matthew Sadler 2692
loras/janik.pt LoRA adapter: Igor Janik 2504
loras/kaufman.pt LoRA adapter: Larry Kaufman 2188

loras/players.json maps each adapter to the player's name and rating; the engine plays a player at that rating unless told otherwise. The adapters are rank-1 LoRA finetunes (float16, ~450 KB each) on that player's games. They only work on top of chessard.pt.

Use

The engine's setup.sh downloads these automatically. To do it by hand, download the whole repo into one folder, then point the engine at it:

hf download danielgmonroe/chessard --local-dir ~/chessard-weights
./uci.py --weights-dir ~/chessard-weights --player carlsen   # plays at 2840

Instead of --weights-dir you can set CHESSARD_DIR=~/chessard-weights once. Every program that reads it will then share the same copy.

Format

  • chessard.pt: {"model_state_dict": {...}, "global_step": int}.
  • loras/<player>.pt: {"adapter_state_dict": {...}, "lora_rank", "lora_alpha", "lora_targets", ...}. To load one, load the base model, wrap each targeted nn.Linear (named by the *.lora_A / *.lora_B keys) as y = Wx + b + (alpha/rank) * B(Ax), then load the adapter state dict with strict=False.
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