File size: 3,001 Bytes
b4b2877 | 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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | #!/bin/bash
# Exp1 small model: hidden_dim=32, dropout=0.5, weight_decay=1e-3
# 3 modalities: mocap, emg, imu (exclude pressure & eyetrack)
# Output: results/exp1_small
PYTHON=python
SCRIPT=${PULSE_ROOT}/experiments/train_exp1.py
OUTDIR=${PULSE_ROOT}/results/exp1_small
LOGDIR=${OUTDIR}/slurm_logs
mkdir -p $LOGDIR
COMMON="--model transformer --epochs 100 --batch_size 16 --lr 1e-3 --weight_decay 1e-3 --hidden_dim 32 --downsample 5 --patience 15 --seed 42 --output_dir $OUTDIR"
# ============================================================
# Part 1: Single modality (early fusion = single backbone)
# ============================================================
for mod in mocap emg imu; do
job_name="s_${mod}"
sbatch \
-J "$job_name" \
-p gpuA800 \
--gres=gpu:1 \
-N 1 -n 1 \
--cpus-per-task=8 \
--mem=32G \
-t 1:00:00 \
-o "${LOGDIR}/${job_name}_%j.out" \
-e "${LOGDIR}/${job_name}_%j.err" \
--export=ALL \
--wrap="export PYTHONUNBUFFERED=1; cd ${PULSE_ROOT}; $PYTHON $SCRIPT --fusion early --modalities $mod $COMMON"
echo "Submitted: $job_name"
done
# ============================================================
# Part 2: Multi-modality early fusion (4 combos)
# ============================================================
EARLY_COMBOS=("mocap,emg" "mocap,imu" "emg,imu" "mocap,emg,imu")
for mods in "${EARLY_COMBOS[@]}"; do
mod_tag=$(echo $mods | tr ',' '-')
job_name="e_${mod_tag}"
sbatch \
-J "$job_name" \
-p gpuA800 \
--gres=gpu:1 \
-N 1 -n 1 \
--cpus-per-task=8 \
--mem=32G \
-t 1:00:00 \
-o "${LOGDIR}/${job_name}_%j.out" \
-e "${LOGDIR}/${job_name}_%j.err" \
--export=ALL \
--wrap="export PYTHONUNBUFFERED=1; cd ${PULSE_ROOT}; $PYTHON $SCRIPT --fusion early --modalities $mods $COMMON"
echo "Submitted: $job_name"
done
# ============================================================
# Part 3: Fusion methods x modality sets
# ============================================================
FUSIONS=(late attention weighted_late gated_late stacking product moe)
FUSION_MODS=("mocap,emg,imu" "mocap,imu")
for fusion in "${FUSIONS[@]}"; do
for mods in "${FUSION_MODS[@]}"; do
mod_tag=$(echo $mods | tr ',' '-')
job_name="f_${fusion}_${mod_tag}"
sbatch \
-J "$job_name" \
-p gpuA800 \
--gres=gpu:1 \
-N 1 -n 1 \
--cpus-per-task=8 \
--mem=32G \
-t 1:00:00 \
-o "${LOGDIR}/${job_name}_%j.out" \
-e "${LOGDIR}/${job_name}_%j.err" \
--export=ALL \
--wrap="export PYTHONUNBUFFERED=1; cd ${PULSE_ROOT}; $PYTHON $SCRIPT --fusion $fusion --modalities $mods $COMMON"
echo "Submitted: $job_name"
done
done
echo ""
echo "Total: 3 single + 4 early + 14 fusion = 21 jobs submitted!"
echo "Results will be saved to: $OUTDIR"
|