#!/bin/bash # Sensor-to-text with LoRA-tuned Qwen2.5-0.5B # LoRA on q_proj/v_proj + instruction prefix + max 20 tokens # Total: 9 jobs PYTHON=python BASEDIR=${PULSE_ROOT} TRAIN_SCRIPT=${BASEDIR}/experiments/tasks/train_pred.py OUTDIR=${BASEDIR}/results/pred_llm2 LOGDIR=${OUTDIR}/slurm_logs mkdir -p $LOGDIR LLM="${BASEDIR}/models/qwen2.5-0.5b" COMMON="--epochs 50 --batch_size 8 --lr 5e-4 --weight_decay 1e-4 --hidden_dim 64 --n_sensor_tokens 8 --downsample 5 --patience 15 --seed 42 --lora_r 8 --lora_alpha 16 --output_dir $OUTDIR --llm_name $LLM --window_sec 15.0" MODS=("imu" "emg" "mocap" "emg,imu" "mocap,imu" "mocap,emg,imu" "mocap,emg,eyetrack" "mocap,emg,eyetrack,imu" "mocap,emg,eyetrack,imu,pressure") for mods in "${MODS[@]}"; do mod_tag=$(echo $mods | tr ',' '-') sbatch \ -J "pllm2_${mod_tag}" \ -p gpuA800 \ --gres=gpu:1 \ -N 1 -n 1 \ --cpus-per-task=8 \ --mem=64G \ -t 4:00:00 \ -o "${LOGDIR}/${mod_tag}_%j.out" \ -e "${LOGDIR}/${mod_tag}_%j.err" \ --export=ALL \ --wrap="export PYTHONUNBUFFERED=1; export HF_HUB_OFFLINE=1; export TRANSFORMERS_OFFLINE=1; cd ${BASEDIR}; $PYTHON $TRAIN_SCRIPT --modalities $mods $COMMON" echo "Submitted: $mods" done echo "" echo "Total: 9 jobs" echo "LLM: $LLM (LoRA r=8 alpha=16)" echo "Results: $OUTDIR"