ChessBot Chess Model

This is a ChessBot model for chess move prediction and position evaluation. This model is way worse than stockfish. It is better than most humans however. For stronger play, reducing temperature T (lower is stronger) is suggested.

Model Description

The ChessBot model is a transformer-based architecture designed for chess gameplay. It can:

  • Predict the next best move given a chess position (FEN)
  • Evaluate chess positions
  • Generate move probabilities

Please Like if this model is useful to you :)

A like goes a long way !

Usage

import torch
from transformers import AutoModel

model = AutoModel.from_pretrained("Maxlegrec/ChessBot", trust_remote_code=True)
device = "cuda" if torch.cuda.is_available() else "cpu"
model = model.to(device)

# Example usage
fen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"

# Sample move from policy
move = model.get_move_from_fen_no_thinking(fen, T=0.1, device=device)
print(f"Policy-based move: {move}")
#e2e4

# Get the best move using value analysis
value_move = model.get_best_move_value(fen, T=0, device=device)
print(f"Value-based move: {value_move}")
#e2e4

# Get position evaluation
position_value = model.get_position_value(fen, device=device)
print(f"Position value [black_win, draw, white_win]: {position_value}")
#[0.2318, 0.4618, 0.3064]

# Get move probabilities
probs = model.get_move_from_fen_no_thinking(fen, T=1, device=device, return_probs=True)
top_moves = sorted(probs.items(), key=lambda x: x[1], reverse=True)[:5]
print("Top 5 moves:")
for move, prob in top_moves:
    print(f"  {move}: {prob:.4f}")
#Top 5 moves:
#  e2e4: 0.9285
#  d2d4: 0.0712
#  g1f3: 0.0001
#  e2e3: 0.0000
#  c2c3: 0.0000

Requirements

python-version <=3.11 cuda-version < 13.0

  • torch>=2.0.0
  • transformers>=4.48.1
  • python-chess>=1.10.0
  • numpy>=1.21.0

Model Architecture

The architecture is strongly inspired from the LCzero project. Although written in pytorch.

  • Transformer layers: 10
  • Hidden size: 512
  • Feed-forward size: 736
  • Attention heads: 8
  • Vocabulary size: 1929 (chess moves)

Training Data

This model was trained on training data from the LCzero project. It consists of around 750M chess positions. I will publish the training dataset very soon.

Limitations

  • The model works best with standard chess positions
  • Performance may vary with unusual or rare positions
  • Requires GPU for optimal inference speed
Downloads last month
82
Safetensors
Model size
34.7M params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Dataset used to train Maxlegrec/ChessBot

Space using Maxlegrec/ChessBot 1