summaryrefslogtreecommitdiff
path: root/reproduce/run_all.sh
blob: 35c3587baf3bcff8f473a9102f6a1ef9e2c6b1ae (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
#!/bin/bash
# Full reproduction of all paper results.
# Usage: bash reproduce/run_all.sh --gpu 0
# Estimated time: ~12 hours on a single A100/A6000.

GPU=${1:-0}
export CUDA_VISIBLE_DEVICES=$GPU

echo "============================================================"
echo "FA Evaluation Protocol — Full Reproduction"
echo "GPU: $GPU"
echo "Start: $(date)"
echo "============================================================"

cd "$(dirname "$0")/.."

# ─── Section 2: Primary audit (ResMLP d=256 L=4, 100ep) ─────────────────

echo ""
echo "=== Section 2: Primary audit (BP/FA/DFA, 3 seeds, 100ep) ==="
python reproduce/train_methods.py --arch resmlp --methods bp fa dfa \
    --seeds 42 123 456 --epochs 100 --gpu 0 --output_dir results/sec2_primary_audit

echo ""
echo "=== Section 2: Frozen baseline ==="
python reproduce/frozen_baseline.py --arch resmlp --seeds 42 123 456 \
    --epochs 100 --gpu 0 --output_dir results/sec2_frozen

# ─── Section 4.1: Cross-architecture (ViT, ResNet) ───────────────────────

echo ""
echo "=== Section 4.1: ViT-Mini (BP/FA/DFA, 3 seeds, 60ep) ==="
python reproduce/train_methods.py --arch vit --methods bp fa dfa \
    --seeds 42 123 456 --epochs 60 --gpu 0 --output_dir results/sec4_vit

echo ""
echo "=== Section 4.1: ViT-Mini frozen baseline ==="
python reproduce/frozen_baseline.py --arch vit --seeds 42 123 456 \
    --epochs 60 --gpu 0 --output_dir results/sec4_vit_frozen

echo ""
echo "=== Section 4.1: SmallResNet (BP/FA/DFA, 3 seeds, 100ep) ==="
python reproduce/train_methods.py --arch resnet --methods bp fa dfa \
    --seeds 42 123 456 --epochs 100 --gpu 0 --output_dir results/sec4_resnet

echo ""
echo "=== Section 4.1: SmallResNet frozen baseline ==="
python reproduce/frozen_baseline.py --arch resnet --seeds 42 123 456 \
    --epochs 100 --gpu 0 --output_dir results/sec4_resnet_frozen

# ─── Section 4.2: Penalty intervention ───────────────────────────────────

echo ""
echo "=== Section 4.2: DFA penalty sweep (lambda=0, 1e-4, 1e-2, 30ep) ==="
python reproduce/penalty_sweep.py --seeds 42 123 456 --epochs 30 --gpu 0 \
    --output_dir results/sec4_penalty

# ─── Section 5.2: Representative setting (d=512 L=2) ────────────────────

echo ""
echo "=== Section 5.2: d=512 L=2 (BP/FA/DFA, 3 seeds, 100ep) ==="
python reproduce/train_methods.py --arch resmlp_d512_L2 --methods bp fa dfa \
    --seeds 1 2 5 --epochs 100 --gpu 0 --output_dir results/sec5_d512_L2

echo ""
echo "=== Section 5.2: d=512 L=2 frozen baseline ==="
python reproduce/frozen_baseline.py --arch resmlp_d512_L2 --seeds 1 2 5 \
    --epochs 100 --gpu 0 --output_dir results/sec5_d512_L2_frozen

# ─── Appendix: CIFAR-100 ────────────────────────────────────────────────

echo ""
echo "=== Appendix: CIFAR-100 (BP/FA/DFA, 3 seeds, 100ep) ==="
python reproduce/train_methods.py --arch resmlp --dataset cifar100 --methods bp fa dfa \
    --seeds 42 123 456 --epochs 100 --gpu 0 --output_dir results/app_cifar100

echo ""
echo "=== Appendix: CIFAR-100 frozen baseline ==="
python reproduce/frozen_baseline.py --arch resmlp --dataset cifar100 --seeds 42 123 456 \
    --epochs 100 --gpu 0 --output_dir results/app_cifar100_frozen

echo ""
echo "============================================================"
echo "Full reproduction done: $(date)"
echo "============================================================"