Files
NowChessSystems/modules/bot/python/run_pipeline.sh
T

79 lines
2.2 KiB
Bash

#!/bin/bash
# NNUE Training Pipeline (bash version)
# Works on Linux, macOS, and Windows (with Git Bash or WSL)
set -e # Exit on error
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR"
# Use python or python3 (check which is available)
PYTHON_CMD="python3"
if ! command -v python3 &> /dev/null; then
PYTHON_CMD="python"
fi
echo "=== NNUE Training Pipeline ==="
echo ""
echo "Python command: $PYTHON_CMD"
echo "Working directory: $SCRIPT_DIR"
echo ""
# Step 1: Generate positions
echo "Step 1: Generating 500,000 random positions..."
$PYTHON_CMD generate_positions.py positions.txt
if [ ! -f positions.txt ]; then
echo "ERROR: positions.txt not created"
exit 1
fi
echo "✓ Positions generated"
echo ""
# Step 2: Label positions with Stockfish
echo "Step 2: Labeling positions with Stockfish (depth 12)..."
STOCKFISH_PATH="${STOCKFISH_PATH:-/usr/games/stockfish}"
echo "Using Stockfish: $STOCKFISH_PATH"
$PYTHON_CMD label_positions.py positions.txt training_data.jsonl "$STOCKFISH_PATH"
if [ ! -f training_data.jsonl ]; then
echo "ERROR: training_data.jsonl not created"
exit 1
fi
echo "✓ Positions labeled"
echo ""
# Step 3: Train NNUE model with versioning
echo "Step 3: Training NNUE model (20 epochs)..."
# Auto-detect latest version and increment
LATEST_VERSION=$(ls -1 nnue_weights_v*.pt 2>/dev/null | sed 's/nnue_weights_v//;s/.pt$//' | sort -n | tail -1)
NEW_VERSION=$((${LATEST_VERSION:-0} + 1))
WEIGHTS_FILE="nnue_weights_v${NEW_VERSION}.pt"
echo "Creating version v${NEW_VERSION}..."
$PYTHON_CMD train_nnue.py training_data.jsonl "$WEIGHTS_FILE"
if [ ! -f "$WEIGHTS_FILE" ]; then
echo "ERROR: $WEIGHTS_FILE not created"
exit 1
fi
echo "✓ Model trained: $WEIGHTS_FILE"
echo ""
# Step 4: Export weights to Scala
echo "Step 4: Exporting weights to Scala..."
SCALA_FILE="../src/main/scala/de/nowchess/bot/bots/nnue/NNUEWeights_v${NEW_VERSION}.scala"
$PYTHON_CMD export_weights.py "$WEIGHTS_FILE" "$SCALA_FILE"
if [ ! -f "$SCALA_FILE" ]; then
echo "ERROR: $SCALA_FILE not created"
exit 1
fi
echo "✓ Weights exported: $SCALA_FILE"
echo ""
echo "=== Pipeline Complete ==="
echo ""
echo "Next steps:"
echo "1. Navigate to project root: cd ../.."
echo "2. Compile: ./compile"
echo "3. Test: ./test"