xvla-vanilla-backup / submit_deploy_server.slurm
JackLiu0406's picture
Xuan vanilla X-VLA backup: full folder, intermediate ckpts thinned to every-20k + each run's final
eb23c20 verified
Raw
History Blame Contribute Delete
2.97 kB
#!/bin/bash
#SBATCH --job-name=xvla-deploy
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --gres=gpu:1
#SBATCH --cpus-per-task=8
#SBATCH --mem=64G
#SBATCH --time=365-24:00:00
#SBATCH --partition=h100-private
#SBATCH --qos=high
#SBATCH --output=/tmp/slurm-%x-%j.out
#SBATCH --error=/tmp/slurm-%x-%j.err
set -euo pipefail
REPO_ROOT="/shared_work/xuan/project/x-vla-backup"
MODEL_PATH="${MODEL_PATH:-$REPO_ROOT/runnings/roboreal_all_20260428_g8_bs32.ckpt-100000}"
HOST="${HOST:-127.0.0.1}"
PORT="${PORT:-8010}"
OUTPUT_DIR="${OUTPUT_DIR:-$REPO_ROOT/runnings/deploy_${SLURM_JOB_ID}}"
DEVICE="${DEVICE:-cuda}"
PROCESSOR_PATH="${PROCESSOR_PATH:-}"
LORA_PATH="${LORA_PATH:-}"
resolve_model_path() {
local raw_path="$1"
local candidate=""
if [[ -e "$raw_path" ]]; then
printf '%s\n' "$raw_path"
return 0
fi
# Accept the common shorthand "...run_name.ckpt-100000" by rewriting it to
# the actual checkpoint directory layout "...run_name/ckpt-100000".
if [[ "$raw_path" =~ ^(.+)\.ckpt-([0-9]+)$ ]]; then
candidate="${BASH_REMATCH[1]}/ckpt-${BASH_REMATCH[2]}"
if [[ -e "$candidate" ]]; then
printf '%s\n' "$candidate"
return 0
fi
fi
return 1
}
choose_output_dir() {
local requested_dir="$1"
local candidate="$requested_dir"
local suffix=""
while [[ -f "$candidate/info.json" ]]; do
suffix="$(date -u +%Y%m%dT%H%M%SZ)"
if [[ -n "${SLURM_JOB_ID:-}" ]]; then
suffix="${suffix}_job${SLURM_JOB_ID}"
fi
candidate="${requested_dir}_${suffix}"
sleep 1
done
printf '%s\n' "$candidate"
}
cd "$REPO_ROOT"
export SHARED_ROOT="/shared_work/xuan"
export CONDA_BASE_PREFIX="$SHARED_ROOT/miniforge3"
export ENV_PREFIX="$SHARED_ROOT/conda-envs/xvla-stable"
source "$REPO_ROOT/scripts/activate_shared_env.sh"
if ! RESOLVED_MODEL_PATH="$(resolve_model_path "$MODEL_PATH")"; then
echo "Model path not found: $MODEL_PATH" >&2
if [[ "$MODEL_PATH" =~ \.ckpt-[0-9]+$ ]]; then
echo "Hint: this script expects a checkpoint directory such as .../run_name/ckpt-100000." >&2
fi
exit 1
fi
MODEL_PATH="$RESOLVED_MODEL_PATH"
OUTPUT_DIR="$(choose_output_dir "$OUTPUT_DIR")"
mkdir -p "$OUTPUT_DIR"
export PYTHONUNBUFFERED=1
echo "Launching X-VLA deploy server"
echo " MODEL_PATH=$MODEL_PATH"
echo " HOST=$HOST"
echo " PORT=$PORT"
echo " OUTPUT_DIR=$OUTPUT_DIR"
echo " DEVICE=$DEVICE"
echo " CUDA_VISIBLE_DEVICES=${CUDA_VISIBLE_DEVICES:-unset}"
echo " SLURM_JOB_ID=${SLURM_JOB_ID:-unset}"
echo " SLURM_JOB_NODELIST=${SLURM_JOB_NODELIST:-unset}"
CMD=(
python -m deploy
--model_path "$MODEL_PATH"
--host "$HOST"
--port "$PORT"
--output_dir "$OUTPUT_DIR"
--device "$DEVICE"
--disable_slurm
)
if [[ -n "$PROCESSOR_PATH" ]]; then
CMD+=(--processor_path "$PROCESSOR_PATH")
fi
if [[ -n "$LORA_PATH" ]]; then
CMD+=(--LoRA_path "$LORA_PATH")
fi
exec "${CMD[@]}"