#!/bin/bash #SBATCH --job-name=dovla_12task_train #SBATCH --nodes=1 #SBATCH --ntasks=1 #SBATCH --cpus-per-task=8 #SBATCH --gres=gpu:1 #SBATCH --mem=64000M #SBATCH --time=96:00:00 #SBATCH --output=logs/phase_b_12task_train_%A_%a.out #SBATCH --error=logs/phase_b_12task_train_%A_%a.err #SBATCH --array=0-2 set -euo pipefail # Phase B: Train on 12-task collection (3 seeds) PROJECT_DIR="${PROJECT_DIR:-$PWD}" cd "$PROJECT_DIR" source .venv/bin/activate DATASET="/scratch/$USER/dovla/experiments/phase_b_12task_collection/merged_12tasks" OUT_DIR="/scratch/$USER/dovla/experiments/phase_b_12task_model" SEED=$SLURM_ARRAY_TASK_ID mkdir -p "$OUT_DIR/seed_$SEED" logs echo "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" echo "Phase B: Training on 12-Task Collection" echo "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" echo "" echo "Seed: $SEED" echo "Tasks: 12 (6 existing + 6 new)" echo "Groups: ~6,200" echo "Hidden dim: 1024 (larger for 12 tasks)" echo "" python scripts/train_dovla.py \ --dataset "$DATASET" \ --out "$OUT_DIR/seed_$SEED" \ --objective lattice_field \ --hidden-dim 1024 \ --action-horizon 4 \ --epochs 100 \ --batch-groups 16 \ --records-per-group 8 \ --lr 0.0003 \ --weight-decay 0.01 \ --dropout 0.1 \ --warmup-steps 1000 \ --device auto \ --seed $SEED \ --observation-mode state \ --loss-weight bc=1.0 \ --loss-weight field_effect=1.0 \ --loss-weight field_utility_regression=1.0 \ --loss-weight field_utility_margin=0.5 \ --loss-weight field_preference=0.5 \ --loss-weight effect_anchor=0.1 echo "" echo "✅ Phase B training complete (seed $SEED)" echo "" echo "Next: Evaluate on held-out tasks"