145 lines
2.9 KiB
Markdown
145 lines
2.9 KiB
Markdown
# NNUE Pipeline Quickstart
|
|
|
|
## Prerequisites
|
|
|
|
### Install Python Dependencies
|
|
|
|
```bash
|
|
cd modules/bot/python
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
### Install Stockfish
|
|
|
|
**macOS:**
|
|
```bash
|
|
brew install stockfish
|
|
```
|
|
|
|
**Linux (Debian/Ubuntu):**
|
|
```bash
|
|
apt-get install stockfish
|
|
```
|
|
|
|
**Windows:**
|
|
- Download from https://stockfishchess.org
|
|
- Or use Chocolatey: `choco install stockfish`
|
|
- Add to PATH or set `STOCKFISH_PATH` environment variable
|
|
|
|
## Run the Full Pipeline
|
|
|
|
### Easiest: Launcher Scripts (Recommended)
|
|
|
|
From `modules/bot/` directory:
|
|
|
|
**Windows (Command Prompt or PowerShell):**
|
|
```cmd
|
|
run_nnue_pipeline.bat
|
|
```
|
|
|
|
**Linux/macOS/Windows (Git Bash/WSL):**
|
|
```bash
|
|
chmod +x run_nnue_pipeline.sh
|
|
./run_nnue_pipeline.sh
|
|
```
|
|
|
|
### Alternative: Direct Scripts
|
|
|
|
From `modules/bot/python/` directory:
|
|
|
|
**Windows (Command Prompt):**
|
|
```cmd
|
|
cd python
|
|
set STOCKFISH_PATH=C:\path\to\stockfish.exe
|
|
run_pipeline.bat
|
|
```
|
|
|
|
**Bash (Linux, macOS, Git Bash, WSL):**
|
|
```bash
|
|
cd python
|
|
export STOCKFISH_PATH=/path/to/stockfish
|
|
chmod +x run_pipeline.sh
|
|
./run_pipeline.sh
|
|
```
|
|
|
|
**PowerShell (Windows):**
|
|
```powershell
|
|
cd python
|
|
$env:STOCKFISH_PATH = "C:\path\to\stockfish.exe"
|
|
bash ./run_pipeline.sh
|
|
```
|
|
|
|
The pipeline will:
|
|
1. Generate 500,000 random positions (~2-3 minutes)
|
|
2. Evaluate with Stockfish depth 12 (~24-36 hours on typical machine)
|
|
3. Train NNUE network (20 epochs, ~2-4 hours on GPU)
|
|
4. Export weights to Scala (~1 minute)
|
|
|
|
## For Quick Testing
|
|
|
|
Reduce the position count to test the pipeline quickly:
|
|
|
|
```python
|
|
# Edit generate_positions.py, change:
|
|
# for game_num in range(500000): # Change 500000 to 1000
|
|
# for game_num in range(1000):
|
|
```
|
|
|
|
Then run:
|
|
```bash
|
|
./run_pipeline.sh
|
|
```
|
|
|
|
This will complete in ~30-60 minutes total, allowing you to test the full pipeline.
|
|
|
|
## After Pipeline Completes
|
|
|
|
```bash
|
|
# Navigate to project root
|
|
cd ../..
|
|
|
|
# Recompile (loads the new NNUEWeights.scala)
|
|
./compile
|
|
|
|
# Run tests
|
|
./test
|
|
```
|
|
|
|
## Architecture Quick Reference
|
|
|
|
- **Input:** Board position (768 binary features)
|
|
- **Network:** Linear(768→256) → ReLU → Linear(256→32) → ReLU → Linear(32→1)
|
|
- **Output:** Centipawn evaluation (-20000 to +20000)
|
|
- **Training:** Stockfish evals → sigmoid(eval/400) targets → MSE loss
|
|
|
|
## Troubleshooting
|
|
|
|
**"Module not found: chess"**
|
|
```bash
|
|
pip install python-chess==1.10.0
|
|
```
|
|
|
|
**"CUDA out of memory"**
|
|
- Edit `train_nnue.py` line 91: change `batch_size=4096` to `batch_size=2048`
|
|
|
|
**"Stockfish not found"**
|
|
```bash
|
|
export STOCKFISH_PATH=$(which stockfish)
|
|
# or provide full path
|
|
export STOCKFISH_PATH=/usr/bin/stockfish
|
|
```
|
|
|
|
**"ModuleNotFoundError: No module named 'torch'"**
|
|
```bash
|
|
pip install torch==2.1.2
|
|
```
|
|
|
|
## Files Generated
|
|
|
|
- `positions.txt` — 500,000 FENs
|
|
- `training_data.jsonl` — FEN + Stockfish evaluation pairs
|
|
- `nnue_weights.pt` — PyTorch model
|
|
- `../src/main/scala/de/nowchess/bot/bots/nnue/NNUEWeights.scala` — Scala code
|
|
|
|
See `README_NNUE.md` for detailed documentation.
|