Home
Host an open‑source ML chess tournament for model competition
Chess
Welcome to OMLCheT, the community-driven, lightweight AI chess championship hosted entirely on Hugging Face!
Unlike traditional tournaments dominated by massive compute-heavy engines, OMLCheT is designed to showcase open-source creativity, architectural innovation, and training efficiency. We pit lightweight Language Models (LMs) and Reinforcement Learning (RL) agents against each other in a battle of pure strategy.
⚠️ Note: This tournament is held completely for fun and bragging rights! There are no cash prizes or material rewards—just a cool space for the community to experiment, test small architectures, and see whose lightweight model reigns supreme.
To keep the playing field level and ensure models can be easily evaluated on open hardware (Kaggle/Colab), all submissions must adhere to the following division rules:
| Constraint | 🧠 Language Model (LM) Bracket | 🤖 Reinforcement Learning (RL) Bracket |
|---|---|---|
| Max Size | 1.5B parameters (allows 1.2B/1.3B variants) | 100M parameters (to save training time) |
| Required Format | Weights as *.safetensors + Python script |
Weights as *.safetensors + Python script |
| Input Type | SAN (Standard Algebraic Notation) | SAN, FEN, or Bitboards (handled via wrapper) |
| Architectures | Transformers, Mamba, RWKV, LSTM, RNN, Hybrids | Deep Q-Networks, Actor-Critic, Policy Gradients, etc. |
| Precision | Any (FP32, FP16, INT8, INT4, Trinary/Binary, etc.) | Any |
To enter the tournament, you must host your model on Hugging Face and submit your repository link. To guarantee security and compatibility with our automated tournament runner, your repository must contain these three components:
model.safetensors: The model weights. Standard pickled files (.pth, .bin) are explicitly not allowed for security and rule enforcement.config.json: To verify architecture settings and parameter counts.chess_agent.py: Your inference logic. It must implement the standard template below.Depending on what kind of model you are submitting, please ensure your repository is packaged according to these rules so the evaluation engine can run it smoothly:
transformers library (e.g., gpt2, llama, qwen, opt), you do not need to upload any custom model architecture code. Simply uploading your configuration files and *.safetensors weights is enough; our evaluator will hook into them automatically.model_type in your config.json, you must supply the underlying architecture definitions (modeling_*.py) inside your repository and properly hook them up using the auto_map property in your config so it can be safely initialized via trust_remote_code=True.chess_agent.py script so the weights can be loaded.chess_agent.py)Your repository must include this exact class structure so our evaluation script can play games automatically:
import chess
class ChessAgent:
def __init__(self, model_dir="./"):
"""
Initialize your model, tokenizer, or custom neural network here.
model_dir points to the root of your Hugging Face repository download.
"""
# Pass and load your safetensors weights here
pass
def select_move(self, board_history_san: str, legal_moves_san: list[str]) -> str:
"""
Inputs:
- board_history_san: Space-separated string of the game so far
(e.g., "e4 e5 Nf3 Nc6")
- legal_moves_san: A list of completely legal SAN moves available
(e.g., ["d4", "Bc4", "Nxe5"])
Output:
- A string containing exactly one chosen move from legal_moves_san.
"""
# Your inference logic here
# Tip: Use legal_moves_san to filter or mask your model outputs!
chosen_move = legal_moves_san[0] # Default fallback example
return chosen_move
python-chess framework.Would you like to join the Discord server? Or would you like to join the tournament?