#!/bin/bash set -euo pipefail if [ "$#" -lt 1 ]; then echo "usage: $0 [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}" 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 --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"