PULSE-code / experiments /slurm /run_new_exps.sh
velvet-pine-22's picture
Upload folder using huggingface_hub
b4b2877 verified
#!/bin/bash
# Submit all 3 new benchmark experiments (A: missing modality, B: grip force
# regression, C: T5 text retrieval) in parallel to the gpuA800 partition.
# Each single-GPU job is sbatched independently.
set -u
PYTHON=python
BASEDIR=${PULSE_ROOT}
OUTROOT=${BASEDIR}/results/exp_new
mkdir -p ${OUTROOT}/slurm_logs
SUBMIT() {
# args: job_name time_hrs cmd...
local jname=$1; shift
local hrs=$1; shift
sbatch \
-J "${jname}" \
-p gpuA800 \
--gres=gpu:1 \
-N 1 -n 1 \
--cpus-per-task=4 \
--mem=32G \
-t "${hrs}:00:00" \
-o "${OUTROOT}/slurm_logs/${jname}_%j.out" \
-e "${OUTROOT}/slurm_logs/${jname}_%j.err" \
--export=ALL \
--wrap="export PYTHONUNBUFFERED=1; cd ${BASEDIR}; $*"
}
# ---------------------------------------------------------------------------
# Experiment A: Missing-modality robustness
# Train late-fusion Transformer with random modality dropout at p=0.3
# 5 seeds, all 5 modalities
# ---------------------------------------------------------------------------
echo "=== Exp A: Missing-modality robustness (5 jobs) ==="
for seed in 42 123 456 789 2024; do
SUBMIT "expA_missing_seed${seed}" 2 \
"$PYTHON experiments/tasks/train_exp_missing.py \
--model transformer --fusion late \
--modalities mocap,emg,eyetrack,imu,pressure \
--mod_dropout_p 0.3 \
--epochs 100 --batch_size 16 --lr 1e-3 --hidden_dim 128 \
--patience 15 --augment \
--seed ${seed} \
--output_dir ${OUTROOT}/expA_missing \
--tag ''"
echo " Submitted: expA_missing_seed${seed}"
done
# Baseline (no dropout) for comparison, same seeds
for seed in 42 123 456; do
SUBMIT "expA_baseline_seed${seed}" 2 \
"$PYTHON experiments/tasks/train_exp_missing.py \
--model transformer --fusion late \
--modalities mocap,emg,eyetrack,imu,pressure \
--mod_dropout_p 0.0 \
--epochs 100 --batch_size 16 --lr 1e-3 --hidden_dim 128 \
--patience 15 --augment \
--seed ${seed} \
--output_dir ${OUTROOT}/expA_baseline \
--tag ''"
echo " Submitted: expA_baseline_seed${seed}"
done
# ---------------------------------------------------------------------------
# Experiment B: Grip force regression (T4')
# 3 backbones x 3 modality configs x 3 seeds
# ---------------------------------------------------------------------------
echo ""
echo "=== Exp B: Grip force regression ==="
BACKBONES=("transformer" "lstm")
MOD_CONFIGS=(
"emg"
"mocap"
"emg,imu"
"mocap,emg,imu,eyetrack"
)
for bb in "${BACKBONES[@]}"; do
for mods in "${MOD_CONFIGS[@]}"; do
for seed in 42 123 456; do
mod_tag=$(echo $mods | tr ',' '-')
SUBMIT "expB_grip_${bb}_${mod_tag}_s${seed}" 1 \
"$PYTHON experiments/tasks/train_exp_grip.py \
--backbone ${bb} --modalities ${mods} \
--epochs 60 --batch_size 8 --lr 1e-3 \
--hidden_dim 128 --patience 12 \
--seed ${seed} \
--output_dir ${OUTROOT}/expB_grip \
--tag ''"
echo " Submitted: expB_grip_${bb}_${mod_tag}_s${seed}"
done
done
done
# ---------------------------------------------------------------------------
# Experiment C: T5 text retrieval
# 2 modality configs x 3 seeds
# ---------------------------------------------------------------------------
echo ""
echo "=== Exp C: T5 text retrieval ==="
for mods in "mocap,emg,eyetrack,imu" "emg,imu" "mocap"; do
for seed in 42 123 456; do
mod_tag=$(echo $mods | tr ',' '-')
SUBMIT "expC_retrieval_${mod_tag}_s${seed}" 1 \
"$PYTHON experiments/tasks/train_exp_retrieval.py \
--modalities ${mods} \
--epochs 60 --batch_size 64 --lr 5e-4 \
--hidden_dim 128 --emb_dim 128 \
--seed ${seed} \
--output_dir ${OUTROOT}/expC_retrieval \
--tag ''"
echo " Submitted: expC_retrieval_${mod_tag}_s${seed}"
done
done
echo ""
echo "All jobs submitted. Monitor with: squeue -u \$USER"
echo "Results in: ${OUTROOT}/"