VLAlert / training /Policy /train_danger_head_5seed.sh
AsianPlayer's picture
Add VLAlert code
1e05592 verified
Raw
History Blame Contribute Delete
1.5 kB
#!/bin/bash
# VLAlert-X v2 Phase 3 — 5-seed Danger Head training.
#
# Each seed: 50 epochs cosine LR + early-stop (patience 10) on val per_frame AUC.
# Expected per-seed wall time: ~1 GPU-hr (small head on cached features)
# 5 seeds total: ~5 GPU-hr.
set -euo pipefail
cd "$(dirname "$0")/../.."
OUT_ROOT="checkpoints/danger_v2"
mkdir -p logs "$OUT_ROOT"
for seed in 0 1 2 3 4; do
echo "================================================================"
echo "Danger Head seed=${seed}"
echo "================================================================"
python -m training.Policy.train_danger_head \
--out_dir "${OUT_ROOT}/seed${seed}" \
--epochs 50 \
--batch_size 128 \
--lr 3e-4 \
--weight_decay 1e-4 \
--hidden 512 \
--k_queries 4 \
--dropout 0.2 \
--w_clip 0.5 \
--patience 10 \
--seed "${seed}" 2>&1 | tee "logs/phase3_danger_seed${seed}.log"
done
echo ""
echo "==============================================================="
echo "5-seed summary (val per_frame AUC):"
for seed in 0 1 2 3 4; do
if [[ -f "${OUT_ROOT}/seed${seed}/best.pt" ]]; then
python -c "
import torch
d = torch.load('${OUT_ROOT}/seed${seed}/best.pt', weights_only=False, map_location='cpu')
m = d['val_metrics']
print(f\" seed${seed}: per_frame_auc={m.get('per_frame_auc',0):.4f} \" +
f\"clip_auc={m.get('clip_auc',0):.4f} ep={d['epoch']}\")
"
fi
done
echo "==============================================================="