PULSE-code / experiments /slurm /run_exp1_small2.sh
velvet-pine-22's picture
Upload folder using huggingface_hub
b4b2877 verified
#!/bin/bash
# Exp1 small2: per-modality hidden_dim + missing emg+imu fusion experiments
# hidden_dim=32 base, scaled per modality: mocap(211)->48, imu(161)->48, emg(9)->16
# Output: results/exp1_small2
PYTHON=python
SCRIPT=${PULSE_ROOT}/experiments/train_exp1.py
OUTDIR=${PULSE_ROOT}/results/exp1_small2
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 baselines (3 jobs)
# ============================================================
for mod in mocap emg imu; do
job_name="s2_${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: Early fusion baselines (3 combos)
# ============================================================
EARLY_COMBOS=("emg,imu" "mocap,imu" "mocap,emg,imu")
for mods in "${EARLY_COMBOS[@]}"; do
mod_tag=$(echo $mods | tr ',' '-')
job_name="s2_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 combos (7 methods x 3 combos = 21 jobs)
# Key addition: emg,imu fusion (was missing in round 1)
# ============================================================
FUSIONS=(late attention weighted_late gated_late stacking product moe)
FUSION_MODS=("emg,imu" "mocap,imu" "mocap,emg,imu")
for fusion in "${FUSIONS[@]}"; do
for mods in "${FUSION_MODS[@]}"; do
mod_tag=$(echo $mods | tr ',' '-')
job_name="s2_${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 + 3 early + 21 fusion = 27 jobs submitted!"
echo "Results will be saved to: $OUTDIR"