ChessResNet-30M / README.md
Joeyfully's picture
Update README.md
33324e3 verified
|
Raw History Blame Contribute Delete
3.72 kB
---
license: mit
library_name: pytorch
tags:
- chess
- chess-engine
- stockfish
- imitation-learning
- policy-distillation
- value-network
- uci
- lichess-bot
---
# 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**.
```text
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:** https://huggingface.co/Joeyfully/chess-stockfish-il-10m-d10-mpv5
- **Dataset:** https://huggingface.co/datasets/Joeyfully/chess-stockfish-il-10m-d10-mpv5
- **Lichess bot:** https://lichess.org/@/Joey_ChessEngine
---
## Model Tags
```text
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**:
```text
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:
```text
Stronger at short time controls
Strong in direct attacks and mating patterns
Weaker in long forcing lines and endgame conversion
```
---
## Quick Start
Install dependencies:
```bash
pip install torch numpy python-chess
```
Run the UCI engine:
```bash
python uci_engine.py --ckpt best_engine.pt --device cpu
```
Manual UCI test:
```text
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:
```text
lichess-bot/
engines/
ChessResNet/
joey_engine.sh
uci_engine.py
model.py
common_chess.py
best_engine.pt
```
Example `joey_engine.sh`:
```bash
#!/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:
```yaml
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:
```yaml
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
```bibtex
@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}
}
```