test / eval.sh
jaewooo's picture
Initial upload
de15dc5 verified
#!/bin/bash
set -euo pipefail
# Simple evaluation script for CLIP4Clip MSRVTT retrieval
# - Inherits dataset/configs from train.sh
# - Auto-picks the latest checkpoint in OUTPUT_DIR unless a path is passed as arg1
# Paths (override via env if needed)
DATA_PATH=${DATA_PATH:-/disk/gjw/msr-vtt}
OUTPUT_DIR=${OUTPUT_DIR:-ckpts/ckpt_hash_msrvtt_retrieval_looseType_1e-7}
# Runtime settings
NPROC=${NPROC:-1}
MASTER_PORT=${MASTER_PORT:-29519}
NUM_THREADS=${NUM_THREADS:-8}
BATCH_VAL=${BATCH_VAL:-16}
MAX_WORDS=${MAX_WORDS:-32}
MAX_FRAMES=${MAX_FRAMES:-12}
PROJ=${PROJ:-3008}
BINARY_EVAL=${BINARY_EVAL:-1} # 1/true to enable --binary_eval
mkdir -p "${OUTPUT_DIR}"
# Resolve checkpoint
if [[ $# -gt 0 ]]; then
INIT_MODEL="$1"
else
# pick the numerically largest suffix: pytorch_model.bin.<N>
INIT_MODEL=$(ls -1 "${OUTPUT_DIR}"/pytorch_model.bin.* 2>/dev/null | awk -F. '{print $NF" "$0}' | sort -n | tail -1 | cut -d' ' -f2)
if [[ -z "${INIT_MODEL:-}" ]]; then
INIT_MODEL="${OUTPUT_DIR}/pytorch_model.bin.0"
fi
fi
echo "[eval] Using INIT_MODEL=${INIT_MODEL}"
# Optional flags
BINARY_FLAG=""
if [[ "${BINARY_EVAL}" == "1" || "${BINARY_EVAL}" == "true" ]]; then
BINARY_FLAG="--binary_eval"
fi
CUDA_VISIBLE_DEVICES=0 python -m torch.distributed.launch --nproc_per_node="${NPROC}" --master_port="${MASTER_PORT}" \
cache_main_task_retrieval.py --do_eval --num_thread_reader="${NUM_THREADS}" \
--batch_size=128 --n_display=50 \
--train_csv "${DATA_PATH}/MSRVTT_train.9k.csv" \
--val_csv "${DATA_PATH}/MSRVTT_JSFUSION_test.csv" \
--data_path "${DATA_PATH}/MSRVTT_data.json" \
--features_path "${DATA_PATH}/compressed_videos" \
--output_dir "${OUTPUT_DIR}" \
--lr 1e-4 --max_words "${MAX_WORDS}" --max_frames "${MAX_FRAMES}" --batch_size_val "${BATCH_VAL}" \
--datatype msrvtt --expand_msrvtt_sentences \
--feature_framerate 1 --coef_lr 1e-3 \
--freeze_layer_num 0 --slice_framepos 2 \
--loose_type --linear_patch 2d --sim_header meanP \
--pretrained_clip_name ViT-B/32 \
--proj "${PROJ}" ${BINARY_FLAG} \
--init_model "${INIT_MODEL}"
# Usage examples:
# bash eval.sh # auto-pick latest ckpt in OUTPUT_DIR
# BATCH_VAL=32 bash eval.sh # override eval batch size
# bash eval.sh /path/to/pytorch_model.bin.2