resume_coarse_fusion_tuning_long.sh 1.81 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

MAX_EVALS="${MAX_EVALS:-36}"
BATCH_SIZE="${BATCH_SIZE:-3}"
CANDIDATE_POOL_SIZE="${CANDIDATE_POOL_SIZE:-512}"
DATASET_ID="${REPO_EVAL_DATASET_ID:-core_queries}"

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=(
  python
  scripts/evaluation/tune_fusion.py
  --mode optimize
  --resume-run "${RUN_DIR}"
  --search-space "${RUN_DIR}/search_space.yaml"
  --seed-report artifacts/search_evaluation/batch_reports/batch_20260415T150754Z_00b6a8aa3d.md
  --tenant-id 163
  --dataset-id "${DATASET_ID}"
  --queries-file scripts/evaluation/queries/queries.txt
  --top-k 100
  --language en
  --search-base-url http://127.0.0.1:6002
  --eval-web-base-url http://127.0.0.1:6010
  --max-evals "${MAX_EVALS}"
  --batch-size "${BATCH_SIZE}"
  --candidate-pool-size "${CANDIDATE_POOL_SIZE}"
)

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

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"