blob: 0e03d825c0120911a336e001f08b62aa695a3826 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#!/bin/bash
#SBATCH --job-name=snn_depth_exp
#SBATCH --account=bfqt-delta-gpu
#SBATCH --partition=gpuA40x4
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=4
#SBATCH --gpus-per-node=1
#SBATCH --mem=32G
#SBATCH --time=02:00:00
#SBATCH --output=runs/slurm_logs/%j_depth_exp.out
#SBATCH --error=runs/slurm_logs/%j_depth_exp.err
# ============================================================
# Depth Comparison Experiment: Vanilla vs Lyapunov SNN
# ============================================================
# Compares training stability across network depths (1-8 layers)
# Hypothesis: Lyapunov regularization enables training of deeper networks
#
# Usage:
# sbatch scripts/run_depth_experiment.sbatch
#
# Or with custom parameters:
# sbatch --export=EPOCHS=50,DEPTHS="1 2 4 6 8" scripts/run_depth_experiment.sbatch
# ============================================================
set -e
# Default parameters (can be overridden via --export)
EPOCHS=${EPOCHS:-30}
DEPTHS=${DEPTHS:-"1 2 3 4 6"}
HIDDEN_DIM=${HIDDEN_DIM:-128}
LAMBDA_REG=${LAMBDA_REG:-0.1}
LR=${LR:-0.001}
SEED=${SEED:-42}
USE_SYNTHETIC=${USE_SYNTHETIC:-true}
# Project directory
PROJECT_DIR="/projects/bfqt/users/yurenh2/ml-projects/snn-training"
cd "$PROJECT_DIR"
# Create log directory
mkdir -p runs/slurm_logs
# Print job info
echo "============================================================"
echo "Job ID: $SLURM_JOB_ID"
echo "Node: $SLURM_NODELIST"
echo "Start time: $(date)"
echo "============================================================"
echo "Configuration:"
echo " EPOCHS: $EPOCHS"
echo " DEPTHS: $DEPTHS"
echo " HIDDEN_DIM: $HIDDEN_DIM"
echo " LAMBDA_REG: $LAMBDA_REG"
echo " LR: $LR"
echo " USE_SYNTHETIC: $USE_SYNTHETIC"
echo "============================================================"
# Check GPU
nvidia-smi --query-gpu=name,memory.total --format=csv,noheader
echo "============================================================"
# Build command
CMD="python files/experiments/depth_comparison.py"
CMD="$CMD --epochs $EPOCHS"
CMD="$CMD --depths $DEPTHS"
CMD="$CMD --hidden_dim $HIDDEN_DIM"
CMD="$CMD --lambda_reg $LAMBDA_REG"
CMD="$CMD --lr $LR"
CMD="$CMD --seed $SEED"
CMD="$CMD --out_dir runs/depth_comparison"
CMD="$CMD --device cuda"
if [ "$USE_SYNTHETIC" = true ]; then
CMD="$CMD --synthetic"
fi
echo "Running: $CMD"
echo "============================================================"
# Run experiment
$CMD
# Generate plots if results exist
LATEST_RUN=$(ls -td runs/depth_comparison/*/ 2>/dev/null | head -1)
if [ -n "$LATEST_RUN" ]; then
echo "============================================================"
echo "Generating plots for: $LATEST_RUN"
python files/experiments/plot_depth_comparison.py --results_dir "$LATEST_RUN"
fi
echo "============================================================"
echo "Job finished: $(date)"
echo "============================================================"
|