# 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.
