Files
unifolm-world-model-action/scripts/run_world_model_backbone_profile_case.sh
2026-03-16 10:30:54 +08:00

87 lines
2.5 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
if [[ $# -ne 4 ]]; then
echo "Usage: $0 <res_dir> <dataset> <frame_stride> <n_iter>" >&2
exit 1
fi
res_dir="$1"
dataset="$2"
frame_stride="$3"
n_iter="$4"
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "${repo_root}"
gpu_devices="${CUDA_VISIBLE_DEVICES:-1}"
python_bin="${PYTHON_BIN:-}"
if [[ -z "${python_bin}" ]]; then
if [[ -n "${CONDA_PREFIX:-}" ]] && [[ -x "${CONDA_PREFIX}/bin/python" ]]; then
python_bin="${CONDA_PREFIX}/bin/python"
elif [[ -n "${VIRTUAL_ENV:-}" ]] && [[ -x "${VIRTUAL_ENV}/bin/python" ]]; then
python_bin="${VIRTUAL_ENV}/bin/python"
else
python_bin="$(command -v python || true)"
fi
fi
if [[ -z "${python_bin}" ]] || [[ ! -x "${python_bin}" ]]; then
echo "Unable to resolve a usable Python interpreter. Set PYTHON_BIN explicitly." >&2
exit 1
fi
save_dir="${res_dir}/backbone_profile_dense"
log_path="${save_dir}/run.log"
mkdir -p "${save_dir}"
interaction_cmd=(
"${python_bin}" scripts/evaluation/world_model_interaction.py
--seed 123
--ckpt_path ckpts/unifolm_wma_dual.ckpt
--config configs/inference/world_model_interaction.yaml
--savedir "${save_dir}"
--bs 1
--height 320
--width 512
--unconditional_guidance_scale 1.0
--ddim_steps 50
--ddim_eta 1.0
--prompt_dir "${res_dir}/world_model_interaction_prompts"
--dataset "${dataset}"
--video_length 16
--frame_stride "${frame_stride}"
--n_action_steps 16
--exe_steps 16
--n_iter "${n_iter}"
--timestep_spacing uniform_trailing
--guidance_rescale 0.7
--perframe_ae
--analysis_log_metrics
--analysis_reference_steps 50
--analysis_profile_backbone_blocks
)
metrics_analysis_cmd=(
"${python_bin}" scripts/evaluation/analyze_metrics.py
--input_dir "${save_dir}/inference"
--output_dir "${save_dir}/inference/analysis"
)
backbone_analysis_cmd=(
"${python_bin}" scripts/evaluation/analyze_backbone_blocks.py
--input_csv "${save_dir}/inference/backbone_block_log.csv"
--output_dir "${save_dir}/inference/backbone_analysis"
)
{
echo "============================================================"
echo "Running dense backbone profiling for ${res_dir} on GPU ${gpu_devices}"
echo "============================================================"
echo "Using Python: ${python_bin}"
time env CUDA_VISIBLE_DEVICES="${gpu_devices}" "${interaction_cmd[@]}"
"${metrics_analysis_cmd[@]}"
"${backbone_analysis_cmd[@]}"
} 2>&1 | tee "${log_path}"