Views
No views yet
1TRAIN_LAYERS=(7 15 23)
2TEST_GRID_SIZES=(7 9 11 13 15)
3PROBING_LOCATION_NAMES=("suffix" "output") # Pre- and post-reasoning
4
5ACTIVATIONS_TRAIN_PATH="interp/activations_train_single_step"
6TRAJECTORIES_TRAIN_PATH="reveng/trajectories_train_single_step"
7ACTIVATION_TEST_PATH="interp/activations_test_full"
8TRAJECTORIES_TEST_PATH="reveng/trajectories_test_full"
9TRAJECTORIES_OUTPUT_PATH="reveng/trajectories_test_full_with_probes"
10PROBES_PATH="interp/probes_train_single_step"
11
12PROBE_TYPES=("mlp" "lr")
13MLP_PROBE_HIDDEN_DIMS=1024
14PROBE_LEARNING_RATE=3e-4
15PROBE_WEIGHT_DECAY=0.001
16PROBE_NUM_EPOCHS=50
17PROBE_BATCH_SIZE=2048
18PROBE_DROPOUT=0.0
19PROBE_EVAL_SPLIT=0.005
20PROBE_PER_CLASS_MAX_COUNT=357000 # ~10x minority classes for general probes (36k train grids)
21
22for layer in "${TRAIN_LAYERS[@]}"; do
23
24 echo "=== Training and evaluating probes on layer ${layer} activations ==="
25
26 for location_name in "${PROBING_LOCATION_NAMES[@]}"; do
27
28 if [ "$location_name" == "suffix" ]; then
29 location="pre_reasoning"
30
31 echo "- Preparing padded activations for general probes (${location})"
32
33 interp-cli prepare_activations_for_probing \
34 --trajectories-dir $TRAJECTORIES_TRAIN_PATH \
35 --activations-dir $ACTIVATIONS_TRAIN_PATH \
36 --probe-type grid_tile \
37 --layers $layer \
38 --prompt_suffix_indices all
39
40 for size in "${TEST_GRID_SIZES[@]}"; do
41 echo "- Preparing activations for size-specific probes (${location}, grid size ${size}x${size})"
42
43 interp-cli prepare_activations_for_probing \
44 --trajectories-dir $TRAJECTORIES_TRAIN_PATH/size${size} \
45 --activations-dir $ACTIVATIONS_TRAIN_PATH/size${size} \
46 --probe-type grid_tile \
47 --layers ${layer} \
48 --prompt_suffix_indices all
49 done
50 elif [ "$location_name" == "output" ]; then
51 location="post_reasoning"
52
53 echo "- Preparing padded activations for general probes (${location})"
54
55 interp-cli prepare_activations_for_probing \
56 --trajectories-dir $TRAJECTORIES_TRAIN_PATH \
57 --activations-dir $ACTIVATIONS_TRAIN_PATH \
58 --probe-type grid_tile \
59 --layers $layer \
60 --output_indices all
61
62 for size in "${TEST_GRID_SIZES[@]}"; do
63 echo "- Preparing activations for size-specific probes (${location}, grid size ${size}x${size})"
64
65 interp-cli prepare_activations_for_probing \
66 --trajectories-dir $TRAJECTORIES_TRAIN_PATH/size${size} \
67 --activations-dir $ACTIVATIONS_TRAIN_PATH/size${size} \
68 --probe-type grid_tile \
69 --layers ${layer} \
70 --output_indices all
71 done
72 fi
73
74 echo ""
75 echo "Activation preparation completed!"
76 echo ""
77
78 for probe_type in "${PROBE_TYPES[@]}"; do
79
80 echo "- Training general ${probe_type} probe on all ${location} activations"
81
82 CURRENT_PROBE_PATH="${PROBES_PATH}/cognitive_map_probe_layer${layer}_${probe_type}_${location}_all_general.pt"
83
84 interp-cli train_cognitive_map_probe \
85 --train-data-path ${ACTIVATIONS_TRAIN_PATH}/cognitive_map_activations_l${layer}_s0_${location_name}_all_grid_tile_pad15_merged.pt \
86 --output-path $CURRENT_PROBE_PATH \
87 --model-type ${probe_type} \
88 --hidden-dims $MLP_PROBE_HIDDEN_DIMS \
89 --learning-rate $PROBE_LEARNING_RATE \
90 --weight-decay $PROBE_WEIGHT_DECAY \
91 --dropout $PROBE_DROPOUT \
92 --num-epochs $PROBE_NUM_EPOCHS \
93 --batch-size $PROBE_BATCH_SIZE \
94 --eval-split $PROBE_EVAL_SPLIT \
95 --per-class-max-count $PROBE_PER_CLASS_MAX_COUNT \
96 --device cuda \
97 --verbose \
98 --normalize \
99 --subset 1.0 \
100 --balance-classes
101
102 echo "- Evaluating general ${probe_type} probe on all ${location} activations"
103
104 EVAL_OUTPUT_DIR="${TRAJECTORIES_OUTPUT_PATH}/layer${layer}/${probe_type}_general/${location}"
105 EVAL_OUTPUT_BASE="eval_cognitive_map_probe_layer${layer}_${probe_type}_${location}_all_general"
106 mkdir -p "${EVAL_OUTPUT_DIR}"
107
108 interp-cli eval_cognitive_map_probe \
109 --trajectories-dir $TRAJECTORIES_TEST_PATH \
110 --activations-dir $ACTIVATION_TEST_PATH \
111 --probe-path $CURRENT_PROBE_PATH \
112 --layers $layer \
113 --steps all \
114 --output-indices all \
115 --pad-to-size 15 \
116 --output_path "${EVAL_OUTPUT_DIR}/${EVAL_OUTPUT_BASE}.json" \
117 --verbose \
118 | tee "${EVAL_OUTPUT_DIR}/${EVAL_OUTPUT_BASE}.txt"
119
120 echo "- Generating predictions for test trajectories for general ${probe_type} probe on all ${location} activations"
121
122 for size in "${TEST_GRID_SIZES[@]}"; do
123 interp-cli apply_cognitive_map_probe \
124 --trajectories-dir $TRAJECTORIES_TEST_PATH/size${size} \
125 --activations-dir $ACTIVATION_TEST_PATH/size${size} \
126 --probe-path $CURRENT_PROBE_PATH \
127 --output-dir ${TRAJECTORIES_OUTPUT_PATH}/layer${layer}/${probe_type}_general/${location}/size${size} \
128 --layers $layer \
129 --steps all \
130 --output-indices all
131 done
132
133 for size in "${TEST_GRID_SIZES[@]}"; do
134
135 CURRENT_PROBE_PATH="${PROBES_PATH}/cognitive_map_probe_layer${layer}_${probe_type}_${location}_all_size${size}.pt"
136
137 echo "- Training ${size}x${size} ${probe_type} probe on all ${location} activations"
138
139 interp-cli train_cognitive_map_probe \
140 --train-data-path ${ACTIVATIONS_TRAIN_PATH}/cognitive_map_activations_l${layer}_s0_${location_name}_all_grid_tile_grid${size}.pt \
141 --output-path $CURRENT_PROBE_PATH \
142 --model-type ${probe_type} \
143 --hidden-dims $MLP_PROBE_HIDDEN_DIMS \
144 --learning-rate $PROBE_LEARNING_RATE \
145 --weight-decay $PROBE_WEIGHT_DECAY \
146 --dropout $PROBE_DROPOUT \
147 --num-epochs $PROBE_NUM_EPOCHS \
148 --batch-size $PROBE_BATCH_SIZE \
149 --eval-split $PROBE_EVAL_SPLIT \
150 --per-class-max-count $PROBE_PER_CLASS_MAX_COUNT \
151 --device cuda \
152 --verbose \
153 --normalize \
154 --subset 1.0 \
155 --balance-classes
156
157 echo "- Evaluating ${size}x${size} ${probe_type} probe on all ${location} activations"
158
159 EVAL_OUTPUT_DIR="${TRAJECTORIES_OUTPUT_PATH}/layer${layer}/${probe_type}/${location}/size${size}"
160 EVAL_OUTPUT_BASE="eval_cognitive_map_probe_layer${layer}_${probe_type}_${location}_all_size${size}"
161 mkdir -p "${EVAL_OUTPUT_DIR}"
162
163 interp-cli eval_cognitive_map_probe \
164 --trajectories-dir $TRAJECTORIES_TEST_PATH/size${size} \
165 --activations-dir $ACTIVATION_TEST_PATH/size${size} \
166 --probe-path $CURRENT_PROBE_PATH \
167 --layers $layer \
168 --steps all \
169 --output-indices all \
170 --pad-to-size $size \
171 --output_path "${EVAL_OUTPUT_DIR}/${EVAL_OUTPUT_BASE}.json" \
172 --verbose \
173 | tee "${EVAL_OUTPUT_DIR}/${EVAL_OUTPUT_BASE}.txt"
174
175 echo "- Generating predictions for test trajectories for ${size}x${size} ${probe_type} probe on all ${location} activations"
176
177 interp-cli apply_cognitive_map_probe \
178 --trajectories-dir $TRAJECTORIES_TEST_PATH/size${size} \
179 --activations-dir $ACTIVATION_TEST_PATH/size${size} \
180 --probe-path $CURRENT_PROBE_PATH \
181 --output-dir ${TRAJECTORIES_OUTPUT_PATH}/layer${layer}/${probe_type}/${location}/size${size} \
182 --layers $layer \
183 --steps all \
184 --output-indices all
185
186 done
187 done
188 done
189done