ViTViz / scripts /apuana_sweep_array.sh
lucasddmc's picture
feat(ui): descriΓ§Γ£o, crΓ©ditos e agradecimento de financiamento; corrige caixa de upload presa ao voltar para modelo default
b0e01a5
Raw
History Blame Contribute Delete
3.55 kB
#!/bin/bash
# ============================================================================
# ViTViz β€” SLURM array job: 30 tasks (6 models Γ— 5 seeds)
#
# Config is selected via VITVIZ_CONFIG env var:
#
# Run 1 (classical attacks, rollout, ~21h wall time on A100):
# VITVIZ_CONFIG=configs/experiments/exp_run1_classical_rollout.yaml \
# sbatch --array=0-29%2 scripts/apuana_sweep_array.sh
#
# Run 2 (TGR+SAGA, rollout, ~52h wall time on A100):
# VITVIZ_CONFIG=configs/experiments/exp_run2_vit_attacks_rollout.yaml \
# sbatch --array=0-29%2 scripts/apuana_sweep_array.sh
#
# Run 3 (all attacks, GMAR-L2, ~50h wall time on A100):
# VITVIZ_CONFIG=configs/experiments/exp_run3_all_gmar.yaml \
# sbatch --array=0-29%2 scripts/apuana_sweep_array.sh
#
# %2 = real GPU limit (QoS simple: 2 GPUs max per user simultaneously)
# A100 nodes forced via --nodelist; jobs queue if busy (acceptable).
# ============================================================================
#SBATCH --job-name=vitviz_sweep
#SBATCH --partition=long-simple
#SBATCH --qos=simple
#SBATCH --gres=gpu:1
#SBATCH --nodelist=cluster-node[6-10]
#SBATCH --cpus-per-task=8
#SBATCH --mem=32G
#SBATCH --time=1-06:00:00 # 30h β€” safe for A100; adjust if needed
#SBATCH --output=logs/sweep_%A_%a.out
#SBATCH --error=logs/sweep_%A_%a.err
# ── Config ───────────────────────────────────────────────────────────────────
CONFIG="${VITVIZ_CONFIG:-configs/experiments/exp_run3_all_gmar.yaml}"
# ── Model Γ— seed mapping ─────────────────────────────────────────────────────
MODELS=(
"ViT-S/32 Β· ImageNet-1k"
"ViT-S/16 Β· ImageNet-1k"
"ViT-B/32 Β· ImageNet-1k"
"ViT-B/16 Β· ImageNet-1k"
"ViT-L/32 Β· ImageNet-1k"
"ViT-L/16 Β· ImageNet-1k"
)
SEEDS=(42 123 456 789 2026)
MODEL_IDX=$(( SLURM_ARRAY_TASK_ID / 5 ))
SEED_IDX=$(( SLURM_ARRAY_TASK_ID % 5 ))
MODEL="${MODELS[$MODEL_IDX]}"
SEED="${SEEDS[$SEED_IDX]}"
echo "======================================================"
echo "Array job : $SLURM_ARRAY_JOB_ID[$SLURM_ARRAY_TASK_ID]"
echo "Config : $CONFIG"
echo "Model : $MODEL"
echo "Seed : $SEED"
echo "Node : $(hostname)"
echo "GPU : $(nvidia-smi --query-gpu=name --format=csv,noheader 2>/dev/null | head -1)"
echo "======================================================"
# ── Environment ──────────────────────────────────────────────────────────────
cd "$HOME/ViTViz" || { echo "ERROR: ~/ViTViz not found"; exit 1; }
source "$HOME/vitviz_venv/bin/activate" \
|| source ".venv/bin/activate" \
|| { echo "ERROR: venv not found"; exit 1; }
mkdir -p logs
# ── Run ──────────────────────────────────────────────────────────────────────
python experiments/run_attack_sweep.py \
--config "$CONFIG" \
--model-name "$MODEL" \
--seed "$SEED" \
--resume
EXIT_CODE=$?
echo "======================================================"
echo "Finished with exit code $EXIT_CODE"
echo "======================================================"
exit $EXIT_CODE