resume_coarse_fusion_tuning_long.sh 2.22 KB
#!/bin/bash

set -euo pipefail

if [ "$#" -lt 1 ]; then
  echo "usage: $0 <run_dir_or_name> [extra tune_fusion args...]" >&2
  exit 1
fi

cd "$(dirname "$0")/../.."
source ./activate.sh

TARGET="$1"
shift

if [ -d "${TARGET}" ]; then
  RUN_DIR="${TARGET}"
  RUN_NAME="$(basename "${RUN_DIR}")"
else
  RUN_NAME="${TARGET}"
  RUN_DIR="artifacts/search_evaluation/tuning_runs/${RUN_NAME}"
fi

if [ ! -d "${RUN_DIR}" ]; then
  echo "run dir not found: ${RUN_DIR}" >&2
  exit 1
fi

DATASET_ID="${REPO_EVAL_DATASET_ID:-core_queries}"
case "${DATASET_ID}" in
  clothing_top771)
    DEFAULT_SEED_REPORT="artifacts/search_evaluation/datasets/clothing_top771/batch_reports/batch_20260422T014610Z_5426bba1a6/report.md"
    DEFAULT_MAX_EVALS="18"
    DEFAULT_BATCH_SIZE="2"
    DEFAULT_CANDIDATE_POOL_SIZE="160"
    ;;
  *)
    DEFAULT_SEED_REPORT="artifacts/search_evaluation/batch_reports/batch_20260415T150754Z_00b6a8aa3d.md"
    DEFAULT_MAX_EVALS="36"
    DEFAULT_BATCH_SIZE="3"
    DEFAULT_CANDIDATE_POOL_SIZE="512"
    ;;
esac

SEED_REPORT="${SEED_REPORT:-${DEFAULT_SEED_REPORT}}"
MAX_EVALS="${MAX_EVALS:-${DEFAULT_MAX_EVALS}}"
BATCH_SIZE="${BATCH_SIZE:-${DEFAULT_BATCH_SIZE}}"
CANDIDATE_POOL_SIZE="${CANDIDATE_POOL_SIZE:-${DEFAULT_CANDIDATE_POOL_SIZE}}"
BATCH_EVAL_TIMEOUT_SEC="${BATCH_EVAL_TIMEOUT_SEC:-0}"
RANDOM_SEED="${RANDOM_SEED:-20260422}"

LAUNCH_DIR="artifacts/search_evaluation/tuning_launches"
mkdir -p "${LAUNCH_DIR}"
LOG_PATH="${LAUNCH_DIR}/${RUN_NAME}.resume.log"
PID_PATH="${LAUNCH_DIR}/${RUN_NAME}.resume.pid"
CMD_PATH="${LAUNCH_DIR}/${RUN_NAME}.resume.cmd"

CMD=(
  bash
  scripts/evaluation/run_coarse_fusion_tuning_resilient.sh
  "${RUN_NAME}"
  "${DATASET_ID}"
  "${MAX_EVALS}"
  "${BATCH_SIZE}"
  "${CANDIDATE_POOL_SIZE}"
  "${RANDOM_SEED}"
  "${RUN_DIR}/search_space.yaml"
  "${SEED_REPORT}"
  "${RUN_DIR}"
)

if [ "$#" -gt 0 ]; then
  CMD+=("$@")
fi

export BATCH_EVAL_TIMEOUT_SEC

printf '%q ' "${CMD[@]}" > "${CMD_PATH}"
printf '\n' >> "${CMD_PATH}"

nohup "${CMD[@]}" > "${LOG_PATH}" 2>&1 &
PID=$!
echo "${PID}" > "${PID_PATH}"

echo "run_name=${RUN_NAME}"
echo "pid=${PID}"
echo "log=${LOG_PATH}"
echo "pid_file=${PID_PATH}"
echo "cmd_file=${CMD_PATH}"
echo "run_dir=${RUN_DIR}"
echo
echo "tail -f ${LOG_PATH}"
echo "cat ${RUN_DIR}/leaderboard.csv"