File size: 2,295 Bytes
de15dc5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/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