| #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" | |