File size: 2,211 Bytes
ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe ae999f9 827e9fe | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | ---
license: mit
base_model: Qwen/Qwen2.5-1.5B-Instruct
tags:
- chess
- reasoning
- global-chess-challenge-2025
- lora
- constrained-ranking
library_name: transformers
---
# LLM Chess Agent - Global Chess Challenge 2025
This model is a fine-tuned chess agent for the [Global Chess Challenge 2025](https://www.aicrowd.com/challenges/global-chess-challenge-2025).
## ๐ฏ Architecture
- **Base Model**: Qwen/Qwen2.5-1.5B-Instruct
- **Method**: LoRA fine-tuning (rank 8, alpha 16)
- **Approach**: Constrained ranking via log-probability scoring
- **Guarantees**:
- โ
100% legal moves (by construction)
- โ
100% correct format
## ๐ฎ How It Works
The agent uses **constrained ranking** instead of free generation:
1. Environment provides: FEN + side + list of legal moves
2. Agent scores each candidate move via log-probability
3. Agent selects: `best_move = argmax(scores)`
4. Result: Always legal (move is always in the provided list)
## ๐ Performance
- **Legality**: 100% (guaranteed by constrained ranking)
- **Format**: 100% (hardcoded output)
- **Top-1 Accuracy**: ~70-80% (vs Stockfish depth 10)
- **ACPL**: ~100-150 centipawns
- **Playing Strength**: ~1500-1800 Elo
## ๐ Usage
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
# Load base model
base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-1.5B-Instruct")
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-1.5B-Instruct")
# Load LoRA adapter
model = PeftModel.from_pretrained(base_model, "SBellilty/llm-chess-agent-v1")
# Use with the official challenge environment
# See: https://github.com/AIcrowd/global-chess-challenge-2025-starter-kit
```
## ๐ Training
- **Dataset**: Lichess games + Stockfish labels
- **Positions**: 20k-50k
- **Training Steps**: 2000-5000
- **Hardware**: Mac MPS (Apple Silicon)
- **Time**: ~1-2h
## ๐ Challenge
Submitted to the Global Chess Challenge 2025:
- https://www.aicrowd.com/challenges/global-chess-challenge-2025
## ๐ License
MIT License
## ๐ Acknowledgments
- Challenge organizers: AIcrowd & AGI House
- Base model: Qwen team
- Chess engine: Stockfish
- Data source: Lichess Open Database
|