PULSE-code / experiments /slurm /run_exp1_small.sh
velvet-pine-22's picture
Upload folder using huggingface_hub
b4b2877 verified
#!/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"