ChessResNet-30M

ChessResNet-30M is a lightweight neural chess engine distilled from Stockfish-labeled positions.

It is designed to be simple to run, easy to plug into lichess-bot, and useful as a compact baseline for search-free neural chess play.

Model:        30M-parameter policy/value CNN
Training:     Stockfish imitation learning
Dataset:      10M positions
Labels:       depth-10 Stockfish, MultiPV=5
Inference:    no search, no opening book, no tablebase
Interface:    UCI-compatible

Links


Model Tags

neural chess engine
Stockfish distillation
imitation learning
policy/value network
search-free chess engine
UCI engine
lichess-bot compatible
PyTorch

Performance

ChessResNet is evaluated as a pure neural engine:

No alpha-beta search
No MCTS
No opening book
No endgame tablebase
One neural forward pass per move

Offline test set

Metric Value
Test positions 500,000
Stockfish top-1 accuracy 47.12%
Stockfish top-3 accuracy 77.59%
Stockfish top-5 accuracy 87.78%
Value correlation 0.9401
Test loss 2.0580

Engine match diagnostics

These are preliminary diagnostics, not official Elo ratings.

Opponent Time Control Games Score
Stockfish UCI_Elo=1500 60+0.6 20 60.0%
Stockfish UCI_Elo=1500 10+0.1 100 70.0%
Stockfish UCI_Elo=1800 10+0.1 100 34.0%

Observed behavior:

Stronger at short time controls
Strong in direct attacks and mating patterns
Weaker in long forcing lines and endgame conversion

Quick Start

Install dependencies:

pip install torch numpy python-chess

Run the UCI engine:

python uci_engine.py --ckpt best_engine.pt --device cpu

Manual UCI test:

uci
isready
position startpos
go movetime 1000
quit

Use with lichess-bot

ChessResNet can be used directly as a custom UCI engine in lichess-bot.

Example layout:

lichess-bot/
  engines/
    ChessResNet/
      joey_engine.sh
      uci_engine.py
      model.py
      common_chess.py
      best_engine.pt

Example joey_engine.sh:

#!/usr/bin/env bash
cd "$(dirname "$0")"
export OMP_NUM_THREADS=1
export MKL_NUM_THREADS=1
export OPENBLAS_NUM_THREADS=1
export NUMEXPR_NUM_THREADS=1
export NUMEXPR_MAX_THREADS=1
exec /path/to/python -u uci_engine.py --ckpt best_engine.pt --device cpu

Example config.yml engine block:

engine:
  dir: "./engines/ChessResNet"
  name: "joey_engine.sh"
  debug: false
  working_dir: "./engines/ChessResNet"
  protocol: "uci"
  ponder: false
  uci_options: {}
  silence_stderr: false

For pure ChessResNet evaluation, disable external move sources:

online_moves:
  chessdb_book:
    enabled: false
  lichess_cloud_analysis:
    enabled: false
  lichess_opening_explorer:
    enabled: false
  online_egtb:
    enabled: false

lichess_bot_tbs:
  syzygy:
    enabled: false
  gaviota:
    enabled: false

Citation

@misc{ChessResNet30m2026,
  title        = {ChessResNet-30M: Stockfish Policy/Value Distillation for Search-Free Neural Chess Play},
  author       = {Joey},
  year         = {2026},
  howpublished = {https://huggingface.co/Joeyfully/chess-stockfish-il-10m-d10-mpv5}
}
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