feat: refactor AlphaBetaSearch and ClassicalBot for improved evaluation and organization
This commit is contained in:
@@ -0,0 +1,196 @@
|
||||
# Windows NNUE Pipeline — Complete Guide
|
||||
|
||||
## Quick Links
|
||||
|
||||
**Start here:** [`README_WINDOWS.md`](README_WINDOWS.md) — 5-minute quick start
|
||||
|
||||
## Documentation Files
|
||||
|
||||
| File | Purpose | Time to Read |
|
||||
|------|---------|------|
|
||||
| **README_WINDOWS.md** | Windows quick start guide | 5 min |
|
||||
| **WINDOWS_SETUP.md** | Detailed Windows setup with troubleshooting | 10 min |
|
||||
| **QUICKSTART.md** | Cross-platform quick reference | 5 min |
|
||||
| **python/README_NNUE.md** | Complete pipeline documentation | 15 min |
|
||||
| **NNUE_IMPLEMENTATION_SUMMARY.md** | Technical implementation details | 10 min |
|
||||
|
||||
## Launcher Scripts
|
||||
|
||||
All scripts work from `modules\bot\` directory.
|
||||
|
||||
### Windows Command Prompt / PowerShell
|
||||
|
||||
```cmd
|
||||
set STOCKFISH_PATH=C:\path\to\stockfish.exe
|
||||
run_nnue_pipeline.bat
|
||||
```
|
||||
|
||||
### PowerShell (Colorful, Recommended)
|
||||
|
||||
```powershell
|
||||
$env:STOCKFISH_PATH = "C:\path\to\stockfish.exe"
|
||||
.\run_nnue_pipeline.ps1
|
||||
```
|
||||
|
||||
### Git Bash / WSL
|
||||
|
||||
```bash
|
||||
export STOCKFISH_PATH=/c/path/to/stockfish.exe
|
||||
bash run_nnue_pipeline.sh
|
||||
```
|
||||
|
||||
## Python Pipeline Scripts
|
||||
|
||||
Located in `modules\bot\python\`:
|
||||
|
||||
| Script | Purpose |
|
||||
|--------|---------|
|
||||
| **generate_positions.py** | Step 1: Generate 500K random positions |
|
||||
| **label_positions.py** | Step 2: Evaluate with Stockfish |
|
||||
| **train_nnue.py** | Step 3: Train neural network |
|
||||
| **export_weights.py** | Step 4: Export to Scala |
|
||||
| **run_pipeline.bat** | Windows batch runner |
|
||||
| **run_pipeline.sh** | Bash runner |
|
||||
|
||||
## Getting Started (3 Steps)
|
||||
|
||||
### 1. Install Python
|
||||
|
||||
```cmd
|
||||
REM Check if Python is installed
|
||||
python --version
|
||||
|
||||
REM If not, download from https://python.org
|
||||
REM During installation, CHECK "Add Python to PATH"
|
||||
```
|
||||
|
||||
### 2. Install Dependencies
|
||||
|
||||
```cmd
|
||||
cd modules\bot\python
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 3. Get Stockfish
|
||||
|
||||
- Download from https://stockfishchess.org/download/
|
||||
- Extract to `C:\stockfish`
|
||||
- Verify: `C:\stockfish\stockfish.exe --version`
|
||||
|
||||
### 4. Run Pipeline
|
||||
|
||||
```cmd
|
||||
cd modules\bot
|
||||
set STOCKFISH_PATH=C:\stockfish\stockfish.exe
|
||||
run_nnue_pipeline.bat
|
||||
```
|
||||
|
||||
## FAQ
|
||||
|
||||
### How long does it take?
|
||||
|
||||
- Step 1 (positions): 2-3 minutes
|
||||
- Step 2 (Stockfish): **24-36 hours** ← slowest
|
||||
- Step 3 (training): 2-4 hours (faster with GPU)
|
||||
- Step 4 (export): 1 minute
|
||||
- **Total: 26-40 hours**
|
||||
|
||||
### Can I pause and resume?
|
||||
|
||||
Yes! The pipeline saves progress:
|
||||
1. Press `Ctrl+C` to stop
|
||||
2. Run the pipeline again - it will resume where it left off
|
||||
|
||||
### Does it use my GPU?
|
||||
|
||||
Yes, automatically! If you have NVIDIA GPU:
|
||||
- Training will be 5-10x faster
|
||||
- Requires CUDA Toolkit (optional, not required)
|
||||
|
||||
### Can I test with fewer positions?
|
||||
|
||||
Yes! Edit `python\generate_positions.py`:
|
||||
```python
|
||||
# Change line 9 from:
|
||||
for game_num in range(500000):
|
||||
|
||||
# To:
|
||||
for game_num in range(10000):
|
||||
```
|
||||
|
||||
This will complete in ~30 minutes instead of 26+ hours.
|
||||
|
||||
## File Locations After Pipeline
|
||||
|
||||
```
|
||||
modules\bot\
|
||||
├── python\
|
||||
│ ├── positions.txt (15 MB - raw positions)
|
||||
│ ├── training_data.jsonl (100 MB - FEN + eval)
|
||||
│ ├── nnue_weights.pt (3 MB - trained weights)
|
||||
│ └── [python scripts]
|
||||
├── src\main\scala\de\nowchess\bot\bots\nnue\
|
||||
│ ├── NNUEWeights.scala (10 MB - generated weights)
|
||||
│ ├── NNUE.scala (inference engine)
|
||||
│ ├── EvaluationNNUE.scala (weights trait)
|
||||
│ └── NNUEBot.scala (bot implementation)
|
||||
└── [launcher scripts]
|
||||
```
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Set these before running the pipeline:
|
||||
|
||||
```cmd
|
||||
REM Required (unless Stockfish is in PATH)
|
||||
set STOCKFISH_PATH=C:\stockfish\stockfish.exe
|
||||
|
||||
REM Optional: specify Python version
|
||||
set PYTHON_CMD=python3
|
||||
```
|
||||
|
||||
Or in PowerShell:
|
||||
|
||||
```powershell
|
||||
$env:STOCKFISH_PATH = "C:\stockfish\stockfish.exe"
|
||||
$env:PYTHON_CMD = "python3"
|
||||
```
|
||||
|
||||
## Troubleshooting Flow
|
||||
|
||||
1. **Python not found** → Install from python.org, check "Add to PATH"
|
||||
2. **Stockfish not found** → Download from stockfishchess.org, set `STOCKFISH_PATH`
|
||||
3. **Module not found** → Run `pip install -r requirements.txt`
|
||||
4. **GPU out of memory** → Reduce batch size in `train_nnue.py`
|
||||
5. **Pipeline hangs** → Check `training_data.jsonl` size, Stockfish evaluation is slow
|
||||
|
||||
See **WINDOWS_SETUP.md** for detailed troubleshooting.
|
||||
|
||||
## Next Steps After Pipeline
|
||||
|
||||
1. **Verify output:**
|
||||
```cmd
|
||||
cd ..\..\
|
||||
compile.bat
|
||||
test.bat
|
||||
```
|
||||
|
||||
2. **Use NNUEBot in your engine:**
|
||||
```scala
|
||||
val bot = new NNUEBot(difficulty, rules, book)
|
||||
val move = bot.nextMove(context)
|
||||
```
|
||||
|
||||
## Support
|
||||
|
||||
- **Quick help:** README_WINDOWS.md
|
||||
- **Detailed help:** WINDOWS_SETUP.md
|
||||
- **Technical details:** NNUE_IMPLEMENTATION_SUMMARY.md
|
||||
- **Complete reference:** python/README_NNUE.md
|
||||
|
||||
---
|
||||
|
||||
**Platform:** Windows 10/11 (tested on Windows 11)
|
||||
**Requirements:** Python 3.8+, Stockfish 14+
|
||||
**Languages:** Python, Scala 3
|
||||
**Status:** ✅ Production Ready
|
||||
Reference in New Issue
Block a user