File size: 1,787 Bytes
38a51ff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/usr/bin/env bash
# HY-WorldPlay evaluation: generation (2 shards) -> VBench -> aggregate -> Experiment.md
#   GPUS="5 6" hy_run_eval.sh <logdir>
set -u
C=/local/zoubin/cz/projects/comparison
PY=/local/zoubin/cz/envs/hy_worldplay_july20260720/bin/python
LOG="$1"; GPUS=(${GPUS:-5 6})
export SSL_CERT_FILE=/etc/pki/tls/certs/ca-bundle.crt HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1
export HF_HOME=/local/zoubin/cz/checkpoints/hy_worldplay/huggingface HF_HUB_CACHE=/local/zoubin/cz/checkpoints/hy_worldplay/huggingface/hub
export TRANSFORMERS_CACHE=/local/zoubin/cz/checkpoints/hy_worldplay/huggingface/hub TORCH_HOME=/local/zoubin/cz/.cache/torch XDG_CACHE_HOME=/local/zoubin/cz/.cache
cd "$C"; mkdir -p "$LOG"
echo "=== generation on GPUs ${GPUS[*]} ($(date +%H:%M:%S)) ==="
pids=()
for i in "${!GPUS[@]}"; do
  # A shard may already have been started by hand on an idle GPU; never run the
  # same shard twice -- both copies would generate the same videos.
  if pgrep -f "hy_generate_eval.py --shard $i " > /dev/null 2>&1; then
    echo "shard $i already running elsewhere, not starting a second copy"
    continue
  fi
  CUDA_VISIBLE_DEVICES=${GPUS[$i]} $PY hy_generate_eval.py --shard $i --num-shards ${#GPUS[@]} --out-root eval_out_hy > "$LOG/hy_gen_$i.log" 2>&1 &
  pids+=($!)
done
for p in "${pids[@]:-}"; do wait "$p" 2>/dev/null; done
# Also wait for any shard that was started outside this driver.
while pgrep -f "[h]y_generate_eval.py" > /dev/null 2>&1; do sleep 60; done
echo "=== generation done ($(date +%H:%M:%S)) ==="
GPUS="${GPUS[*]}" bash hy_vbench.sh "$LOG" 2>&1 | tee "$LOG/hy_vbench_driver.log"
echo "=== aggregating ($(date +%H:%M:%S)) ==="
python3 hy_aggregate.py 2>&1 | tee "$LOG/hy_aggregate.log"
python3 experiment_md.py
echo "ALL HY EVAL DONE $(date +%H:%M:%S)"