feat: refactor AlphaBetaSearch and ClassicalBot for improved evaluation and organization
This commit is contained in:
@@ -0,0 +1,261 @@
|
||||
# Windows Users: Start Here!
|
||||
|
||||
This guide gets you running the NNUE pipeline on Windows in 5 minutes.
|
||||
|
||||
## TL;DR — Quick Start
|
||||
|
||||
1. **Install prerequisites:**
|
||||
```cmd
|
||||
pip install -r python/requirements.txt
|
||||
```
|
||||
|
||||
2. **Download Stockfish** from https://stockfishchess.org/download/ and note the path
|
||||
|
||||
3. **Run the pipeline:**
|
||||
```cmd
|
||||
set STOCKFISH_PATH=C:\path\to\stockfish.exe
|
||||
run_nnue_pipeline.bat
|
||||
```
|
||||
|
||||
Done! The pipeline will:
|
||||
- Generate 500,000 chess positions (~2 min)
|
||||
- Evaluate with Stockfish (~24-36 hours)
|
||||
- Train neural network (~2-4 hours)
|
||||
- Generate Scala code (~1 min)
|
||||
|
||||
## Launcher Options
|
||||
|
||||
### 1. Command Prompt/PowerShell (Easiest)
|
||||
|
||||
```cmd
|
||||
cd modules\bot
|
||||
|
||||
REM Optional: set Stockfish path
|
||||
set STOCKFISH_PATH=C:\stockfish\stockfish.exe
|
||||
|
||||
REM Run the pipeline
|
||||
run_nnue_pipeline.bat
|
||||
```
|
||||
|
||||
### 2. PowerShell (Colorful Output)
|
||||
|
||||
```powershell
|
||||
cd modules\bot
|
||||
|
||||
# Optional: set Stockfish path
|
||||
$env:STOCKFISH_PATH = "C:\stockfish\stockfish.exe"
|
||||
|
||||
# Run the pipeline
|
||||
.\run_nnue_pipeline.ps1
|
||||
```
|
||||
|
||||
### 3. Git Bash (If You Have It)
|
||||
|
||||
```bash
|
||||
cd modules/bot
|
||||
export STOCKFISH_PATH=/c/stockfish/stockfish.exe
|
||||
bash run_nnue_pipeline.sh
|
||||
```
|
||||
|
||||
## Available Scripts
|
||||
|
||||
| Script | Location | Usage |
|
||||
|--------|----------|-------|
|
||||
| `run_nnue_pipeline.bat` | `modules/bot/` | Windows batch launcher (easiest) |
|
||||
| `run_nnue_pipeline.ps1` | `modules/bot/` | PowerShell launcher (colorful) |
|
||||
| `run_nnue_pipeline.sh` | `modules/bot/` | Bash launcher (for Git Bash/WSL) |
|
||||
| `run_pipeline.bat` | `modules/bot/python/` | Direct batch runner |
|
||||
| `run_pipeline.sh` | `modules/bot/python/` | Direct bash runner |
|
||||
|
||||
## Step-by-Step Setup
|
||||
|
||||
### Step 1: Check Python
|
||||
|
||||
```cmd
|
||||
python --version
|
||||
```
|
||||
|
||||
If Python is not installed:
|
||||
1. Download from https://python.org
|
||||
2. Run installer
|
||||
3. **IMPORTANT:** Check "Add Python to PATH"
|
||||
4. Verify: `python --version`
|
||||
|
||||
### Step 2: Install Dependencies
|
||||
|
||||
```cmd
|
||||
cd modules\bot\python
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
This installs:
|
||||
- `python-chess` — chess engine interface
|
||||
- `torch` — neural network training
|
||||
- `tqdm` — progress bars
|
||||
|
||||
### Step 3: Get Stockfish
|
||||
|
||||
Option A (Recommended): Download from https://stockfishchess.org/download/
|
||||
- Extract to `C:\stockfish`
|
||||
- Verify: `C:\stockfish\stockfish.exe --version`
|
||||
|
||||
Option B (If using Chocolatey):
|
||||
```cmd
|
||||
choco install stockfish
|
||||
```
|
||||
|
||||
### Step 4: Run Pipeline
|
||||
|
||||
From `modules\bot\`:
|
||||
|
||||
```cmd
|
||||
set STOCKFISH_PATH=C:\stockfish\stockfish.exe
|
||||
run_nnue_pipeline.bat
|
||||
```
|
||||
|
||||
## What Each Step Does
|
||||
|
||||
### Step 1: Generate Positions (2-3 minutes)
|
||||
```cmd
|
||||
python python\generate_positions.py python\positions.txt
|
||||
```
|
||||
Creates 500,000 random chess positions saved to `positions.txt`
|
||||
|
||||
### Step 2: Evaluate with Stockfish (24-36 hours)
|
||||
```cmd
|
||||
set STOCKFISH_PATH=C:\stockfish\stockfish.exe
|
||||
python python\label_positions.py python\positions.txt python\training_data.jsonl %STOCKFISH_PATH%
|
||||
```
|
||||
Evaluates each position at depth 12. This is the slowest step.
|
||||
|
||||
### Step 3: Train Network (2-4 hours)
|
||||
```cmd
|
||||
python python\train_nnue.py python\training_data.jsonl python\nnue_weights.pt
|
||||
```
|
||||
Trains a 768→256→32→1 neural network. Faster on GPU.
|
||||
|
||||
### Step 4: Export Weights (1 minute)
|
||||
```cmd
|
||||
python python\export_weights.py python\nnue_weights.pt src\main\scala\de\nowchess\bot\bots\nnue\NNUEWeights.scala
|
||||
```
|
||||
Exports PyTorch weights as Scala code.
|
||||
|
||||
## Monitoring Progress
|
||||
|
||||
### Check Step 2 (Stockfish) Progress
|
||||
|
||||
The Stockfish evaluation is slow but shows progress. Check the size of `training_data.jsonl`:
|
||||
|
||||
```cmd
|
||||
cd modules\bot\python
|
||||
dir training_data.jsonl
|
||||
```
|
||||
|
||||
The file grows as positions are evaluated. If it's increasing, the pipeline is working!
|
||||
|
||||
### If Pipeline Gets Interrupted
|
||||
|
||||
The pipeline saves progress and can resume:
|
||||
|
||||
```cmd
|
||||
REM Just run the pipeline again
|
||||
run_nnue_pipeline.bat
|
||||
|
||||
REM It will skip already-processed positions and continue
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "python is not recognized"
|
||||
|
||||
Python isn't in PATH. Fix:
|
||||
1. Reinstall Python from python.org
|
||||
2. **CHECK** "Add Python to PATH" during installation
|
||||
3. Restart Command Prompt
|
||||
|
||||
Or manually add to PATH:
|
||||
1. Press `Win+R`, type `systempropertiesadvanced.exe`
|
||||
2. Click "Environment Variables"
|
||||
3. Add `C:\Users\YourName\AppData\Local\Programs\Python\Python310` to `Path`
|
||||
|
||||
### "stockfish not found"
|
||||
|
||||
Set the full path:
|
||||
```cmd
|
||||
where stockfish
|
||||
REM Then use the full path:
|
||||
set STOCKFISH_PATH=C:\full\path\to\stockfish.exe
|
||||
```
|
||||
|
||||
### "ModuleNotFoundError: No module named 'torch'"
|
||||
|
||||
Reinstall PyTorch:
|
||||
```cmd
|
||||
pip install torch==2.1.2
|
||||
```
|
||||
|
||||
### "CUDA out of memory"
|
||||
|
||||
If using GPU and training fails, reduce batch size:
|
||||
|
||||
Edit `modules\bot\python\train_nnue.py`, line ~91:
|
||||
```python
|
||||
# Change from:
|
||||
train_loader = DataLoader(train_dataset, batch_size=4096, shuffle=True)
|
||||
|
||||
# To:
|
||||
train_loader = DataLoader(train_dataset, batch_size=2048, shuffle=True)
|
||||
```
|
||||
|
||||
## After Pipeline Completes
|
||||
|
||||
1. New file created: `modules\bot\src\main\scala\de\nowchess\bot\bots\nnue\NNUEWeights.scala`
|
||||
|
||||
2. Rebuild the project:
|
||||
```cmd
|
||||
cd ..\..\
|
||||
compile.bat
|
||||
test.bat
|
||||
```
|
||||
|
||||
## Expected Output
|
||||
|
||||
When running `run_nnue_pipeline.bat`, you should see:
|
||||
|
||||
```
|
||||
=== NNUE Training Pipeline ===
|
||||
|
||||
Step 1: Generating 500,000 random positions...
|
||||
[progress bar]
|
||||
[OK] Positions generated
|
||||
|
||||
Step 2: Labeling positions with Stockfish (depth 12)...
|
||||
[progress bar - this takes 24+ hours]
|
||||
[OK] Positions labeled
|
||||
|
||||
Step 3: Training NNUE model (20 epochs)...
|
||||
[progress bar showing epoch progress]
|
||||
[OK] Model trained
|
||||
|
||||
Step 4: Exporting weights to Scala...
|
||||
[progress bar]
|
||||
[OK] Weights exported
|
||||
|
||||
=== Pipeline Complete ===
|
||||
|
||||
Next steps:
|
||||
1. Navigate to project root: cd ..\..
|
||||
2. Compile: .\compile.bat
|
||||
3. Test: .\test.bat
|
||||
```
|
||||
|
||||
## Need More Info?
|
||||
|
||||
- **Quick reference:** See `QUICKSTART.md`
|
||||
- **Detailed setup:** See `WINDOWS_SETUP.md`
|
||||
- **Complete docs:** See `python/README_NNUE.md`
|
||||
- **Implementation details:** See `NNUE_IMPLEMENTATION_SUMMARY.md`
|
||||
|
||||
## Still Stuck?
|
||||
|
||||
Check `WINDOWS_SETUP.md` section "Troubleshooting" for more solutions, or see `python/README_NNUE.md` for common issues.
|
||||
Reference in New Issue
Block a user