gomoku-ai-code / train_mcts_15x15_5.sh
lcccluck's picture
Upload Gomoku training and MCTS code
63cdefe verified
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
CONDA_BIN="${CONDA_BIN:-$HOME/miniconda3/bin/conda}"
ENV_NAME="${ENV_NAME:-lerobot}"
INIT_CHECKPOINT="${INIT_CHECKPOINT:-$ROOT_DIR/gomoku_7x7_5.pt}"
OUTPUT_CHECKPOINT="${OUTPUT_CHECKPOINT:-$ROOT_DIR/gomoku_mcts_15x15_5.pt}"
BOARD_SIZE="${BOARD_SIZE:-15}"
WIN_LENGTH="${WIN_LENGTH:-5}"
CHANNELS="${CHANNELS:-64}"
ITERATIONS="${ITERATIONS:-3000}"
GAMES_PER_ITER="${GAMES_PER_ITER:-12}"
TRAIN_STEPS="${TRAIN_STEPS:-64}"
BATCH_SIZE="${BATCH_SIZE:-128}"
BUFFER_SIZE="${BUFFER_SIZE:-50000}"
MCTS_SIMS="${MCTS_SIMS:-64}"
EVAL_MCTS_SIMS="${EVAL_MCTS_SIMS:-160}"
EVAL_EVERY="${EVAL_EVERY:-10}"
EVAL_GAMES="${EVAL_GAMES:-20}"
SAVE_EVERY="${SAVE_EVERY:-10}"
LR="${LR:-5e-4}"
WEIGHT_DECAY="${WEIGHT_DECAY:-1e-4}"
VALUE_COEF="${VALUE_COEF:-1.0}"
CPUCT="${CPUCT:-1.5}"
TEMPERATURE="${TEMPERATURE:-1.0}"
TEMPERATURE_DROP_MOVES="${TEMPERATURE_DROP_MOVES:-10}"
DIRICHLET_ALPHA="${DIRICHLET_ALPHA:-0.3}"
NOISE_EPS="${NOISE_EPS:-0.25}"
SEED="${SEED:-42}"
DEVICE="${DEVICE:-auto}"
CMD=(
"$CONDA_BIN" run -n "$ENV_NAME" python "$ROOT_DIR/gomoku_mcts.py" train
--board-size "$BOARD_SIZE"
--win-length "$WIN_LENGTH"
--channels "$CHANNELS"
--iterations "$ITERATIONS"
--games-per-iter "$GAMES_PER_ITER"
--train-steps "$TRAIN_STEPS"
--batch-size "$BATCH_SIZE"
--buffer-size "$BUFFER_SIZE"
--mcts-sims "$MCTS_SIMS"
--eval-mcts-sims "$EVAL_MCTS_SIMS"
--eval-every "$EVAL_EVERY"
--eval-games "$EVAL_GAMES"
--save-every "$SAVE_EVERY"
--lr "$LR"
--weight-decay "$WEIGHT_DECAY"
--value-coef "$VALUE_COEF"
--c-puct "$CPUCT"
--temperature "$TEMPERATURE"
--temperature-drop-moves "$TEMPERATURE_DROP_MOVES"
--dirichlet-alpha "$DIRICHLET_ALPHA"
--noise-eps "$NOISE_EPS"
--seed "$SEED"
--device "$DEVICE"
--checkpoint "$OUTPUT_CHECKPOINT"
)
if [[ -f "$INIT_CHECKPOINT" ]]; then
CMD+=(--init-checkpoint "$INIT_CHECKPOINT")
else
echo "init checkpoint not found, training from scratch: $INIT_CHECKPOINT"
fi
printf 'Running command:\n%s\n' "${CMD[*]}"
exec "${CMD[@]}"