#!/usr/bin/env bash
# Start LLaMA-Factory WebUI for SFT/DPO training (port 7860)

set -euo pipefail

LLM_SERVICE_DIR="/lsinfo/ai/hellotax_ai/llm_service"
INSTALL_DIR="${LLM_SERVICE_DIR}/LLaMA-Factory"
LOG_DIR="${LLM_SERVICE_DIR}/logs"
MODEL_DIR="${LLM_SERVICE_DIR}/base_models"
OUTPUT_DIR="${LLM_SERVICE_DIR}/trained_models"
PORT=7860

mkdir -p "${LOG_DIR}" "${OUTPUT_DIR}"

if [[ ! -d "${INSTALL_DIR}" ]]; then
  echo "ERROR: LLaMA-Factory not found at ${INSTALL_DIR}"
  echo "Please run install_llamafactory.sh first."
  exit 1
fi

# Check if already running
if [[ -f "${LOG_DIR}/llamafactory-${PORT}.pid" ]]; then
  PID=$(cat "${LOG_DIR}/llamafactory-${PORT}.pid")
  if kill -0 "$PID" 2>/dev/null; then
    echo "LLaMA-Factory WebUI is already running (PID $PID) on port ${PORT}"
    exit 0
  fi
  rm -f "${LOG_DIR}/llamafactory-${PORT}.pid"
fi

echo "=========================================="
echo "Starting LLaMA-Factory WebUI on port ${PORT}..."
echo "=========================================="

cd "${INSTALL_DIR}"

nohup python src/webui.py \
  --model_name_or_path "${MODEL_DIR}/Qwen3.5-27B" \
  --host 0.0.0.0 \
  --port "${PORT}" \
  > "${LOG_DIR}/llamafactory-${PORT}.log" 2>&1 &

echo $! > "${LOG_DIR}/llamafactory-${PORT}.pid"

echo "LLaMA-Factory WebUI started (PID $(cat ${LOG_DIR}/llamafactory-${PORT}.pid))"
echo ""
echo "  URL:  http://localhost:${PORT}"
echo "  Log:  ${LOG_DIR}/llamafactory-${PORT}.log"
echo ""
echo "Supported training methods: SFT, DPO, PPO, ORPO, SimPO, RM"
echo "Model path: ${MODEL_DIR}/Qwen3.5-27B"
echo "Output dir: ${OUTPUT_DIR}"
echo ""
