This view is limited to 50 files because it contains too many changes. See the raw diff here.
Files changed (50) hide show
  1. .gitattributes +0 -1
  2. .gitignore +2 -15
  3. .python-version +0 -1
  4. AGENTS.md +0 -52
  5. LICENSE +21 -0
  6. Pretrained_GNN/multiclass_pretrained_model_12/config.yaml +0 -319
  7. Pretrained_GNN/multiclass_pretrained_model_12/model_epoch_71.pt +0 -3
  8. Pretrained_GNN/multiclass_pretrained_model_12/training.log +0 -74
  9. Pretrained_GNN/multilabel_pretrained_model_41/config.yaml +0 -569
  10. Pretrained_GNN/multilabel_pretrained_model_41/model_epoch_44.pt +0 -3
  11. Pretrained_GNN/multilabel_pretrained_model_41/training.log +0 -91
  12. README.md +0 -0
  13. configs/delphes_contrastive.yaml +0 -81
  14. configs/delphes_jepa.yaml +0 -77
  15. configs/delphes_jepa_edge.yaml +0 -82
  16. configs/delphes_masked.yaml +0 -78
  17. configs/delphes_pfn.yaml +0 -86
  18. configs/delphes_pretraining.yaml +0 -61
  19. configs/delphes_tabicl.yaml +0 -89
  20. configs/delphes_tabpfn.yaml +0 -89
  21. configs/gamgam.yaml +0 -97
  22. configs/gamgam_deep_sets.yaml +0 -88
  23. configs/gamgam_finetune.yaml +0 -97
  24. configs/gamgam_jepa_finetune.yaml +0 -95
  25. configs/gamgam_pfn.yaml +0 -90
  26. configs/gamgam_tabdpt.yaml +0 -91
  27. configs/gamgam_tabicl.yaml +0 -95
  28. configs/gamgam_tabpfn.yaml +0 -96
  29. configs/gamgam_transformer.yaml +0 -92
  30. configs/tth_cp_even_odd.yaml +0 -49
  31. docs/design.md +0 -392
  32. docs/usage.md +0 -255
  33. plots/cka_layerwise.svg +0 -0
  34. plots/hyperparameter_optimization.svg +0 -0
  35. plots/trainingtime.svg +0 -0
  36. pyproject.toml +0 -80
  37. root_gnn_dgl/README.md +137 -0
  38. root_gnn_dgl/configs/attention/ttH_CP_even_vs_odd.yaml +58 -0
  39. root_gnn_dgl/configs/stats_100K/finetuning_ttH_CP_even_vs_odd.yaml +67 -0
  40. root_gnn_dgl/configs/stats_100K/pretraining_multiclass.yaml +134 -0
  41. root_gnn_dgl/configs/stats_100K/ttH_CP_even_vs_odd.yaml +57 -0
  42. root_gnn_dgl/configs/stats_all/finetuning_ttH_CP_even_vs_odd.yaml +62 -0
  43. root_gnn_dgl/configs/stats_all/pretraining_multiclass.yaml +134 -0
  44. root_gnn_dgl/configs/stats_all/ttH_CP_even_vs_odd.yaml +57 -0
  45. root_gnn_dgl/jobs/cpu.sh +1 -0
  46. root_gnn_dgl/jobs/inference/run_inference.py +214 -0
  47. root_gnn_dgl/jobs/interactive.sh +1 -0
  48. root_gnn_dgl/jobs/prep_data/prep_data.sh +20 -0
  49. root_gnn_dgl/jobs/prep_data/run_processing.py +103 -0
  50. root_gnn_dgl/jobs/salloc.sh +1 -0
.gitattributes CHANGED
@@ -33,4 +33,3 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
- training_time.png filter=lfs diff=lfs merge=lfs -text
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
.gitignore CHANGED
@@ -1,16 +1,3 @@
1
- # Python tooling
2
  __pycache__/
3
- *.py[cod]
4
- *.egg-info/
5
- .venv/
6
- .pytest_cache/
7
- .ruff_cache/
8
- .coverage
9
- dist/
10
- build/
11
-
12
- # Local data and generated outputs
13
- data/
14
- outputs/
15
- logs/
16
- *.onnx
 
 
1
  __pycache__/
2
+ trainings/
3
+ scores/
 
 
 
 
 
 
 
 
 
 
 
 
.python-version DELETED
@@ -1 +0,0 @@
1
- 3.14
 
 
AGENTS.md DELETED
@@ -1,52 +0,0 @@
1
- # GNN4Colliders agent instructions
2
-
3
- GNN4Colliders trains event classifiers (the ROOT-GNN edge network of Ho et
4
- al., JINST 21 (2026) P08006, a transformer and Deep Sets) on reconstructed
5
- collider objects. Keep it small and readable: a physicist should be able to follow a
6
- run from `cli.py` to the model in a few files.
7
-
8
- ## Layout
9
-
10
- ```text
11
- src/gnn4colliders/ flat modules; see docs/design.md for what each holds
12
- configs/ one self-contained YAML file per experiment
13
- scripts/ Slurm wrappers and small helpers (no core logic)
14
- tests/ pytest, with small ROOT fixtures in tests/fixtures
15
- Pretrained_GNN/ the published pretrained checkpoints (Git LFS)
16
- ```
17
-
18
- * `README.md` is the paper's Hugging Face model card. Do not edit it; usage
19
- goes in `docs/usage.md`, design and results in `docs/design.md`.
20
- * The main benchmark is `configs/gamgam.yaml` (ATLAS Open Data GamGam, 5
21
- classes); compare with Table 3 of the paper (`docs/design.md`).
22
-
23
- ## Rules
24
-
25
- * Add a module or an abstraction only when existing code cannot hold it
26
- clearly. No new frameworks (Lightning, Hydra, DGL, PyG) without agreement.
27
- * Configuration is plain dataclasses in `config.py`; every key has a default
28
- or is required, and unknown keys are errors. Site settings (accounts,
29
- paths, `UV_CACHE_DIR`) belong in scripts, not in configs or code.
30
- * Name domain quantities (`labels`, `weight`, `fold`, `event_index`) instead
31
- of relying on tensor column positions, except for the documented seven node
32
- columns.
33
- * Randomness is seeded explicitly (`train.seed`, `data.seed`); never mutate
34
- global random state elsewhere. Do not claim bitwise reproducibility on GPUs.
35
- * The node schema, edge construction, MLP layout and parameter names must
36
- stay compatible with `Pretrained_GNN/`; a test loads both pretrained models.
37
- * Changes to features, splits, loss or metrics change physics results: say so
38
- explicitly and re-check the GamGam benchmark.
39
-
40
- ## Checks
41
-
42
- ```bash
43
- uv sync --dev
44
- uv run pytest # GPU tests run on a CUDA node
45
- uv run ruff check . && uv run ruff format --check .
46
- ```
47
-
48
- On Perlmutter, run GPU work on compute nodes (`salloc -C gpu -q
49
- shared_interactive ...`) with `UV_CACHE_DIR=$SCRATCH/.cache/uv`.
50
-
51
- Report what changed, what was run and what was not, and any change to
52
- results.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2025 LBL ATLAS
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
Pretrained_GNN/multiclass_pretrained_model_12/config.yaml DELETED
@@ -1,319 +0,0 @@
1
- Datasets:
2
- SingleT_schan:
3
- args:
4
- buffer_size: 11
5
- chunks: 100
6
- file_names: SingleT_schan.root
7
- fold_var: Number
8
- label: 8
9
- name: SingleT_schan
10
- node_branch_names: &id001
11
- - - jet_pt
12
- - ele_pt
13
- - mu_pt
14
- - ph_pt
15
- - MET_met
16
- - - jet_eta
17
- - ele_eta
18
- - mu_eta
19
- - ph_eta
20
- - 0
21
- - - jet_phi
22
- - ele_phi
23
- - mu_phi
24
- - ph_phi
25
- - MET_phi
26
- - CALC_E
27
- - - jet_btag
28
- - 0
29
- - 0
30
- - 0
31
- - 0
32
- - - 0
33
- - ele_charge
34
- - mu_charge
35
- - 0
36
- - 0
37
- - NODE_TYPE
38
- node_branch_types: &id002
39
- - vector
40
- - vector
41
- - vector
42
- - vector
43
- - single
44
- node_feature_scales: &id003
45
- - 1e-1
46
- - 1
47
- - 1
48
- - 1e-1
49
- - 1
50
- - 1
51
- - 1
52
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/
53
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_pretraining_multiclass_12_process/
54
- tree_name: output
55
- weight_var: weight
56
- class: LazyDataset
57
- folding: &id004
58
- n_folds: 10
59
- test:
60
- - 0
61
- - 1
62
- train:
63
- - 2
64
- - 3
65
- - 4
66
- - 5
67
- - 6
68
- - 7
69
- - 8
70
- - 9
71
- module: root_gnn_base.dataset
72
- padding_mode: NONE
73
- shuffle_chunks: 10
74
- VBF:
75
- args:
76
- buffer_size: 11
77
- chunks: 100
78
- file_names: VBF_NLO_inc.root
79
- fold_var: Number
80
- label: 3
81
- name: VBF
82
- node_branch_names: *id001
83
- node_branch_types: *id002
84
- node_feature_scales: *id003
85
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/
86
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_pretraining_multiclass_12_process/
87
- tree_name: output
88
- weight_var: weight
89
- class: LazyDataset
90
- folding: *id004
91
- module: root_gnn_base.dataset
92
- padding_mode: NONE
93
- shuffle_chunks: 10
94
- WH:
95
- args:
96
- buffer_size: 11
97
- chunks: 100
98
- file_names: WH_NLO_inc.root
99
- fold_var: Number
100
- label: 4
101
- name: WH
102
- node_branch_names: *id001
103
- node_branch_types: *id002
104
- node_feature_scales: *id003
105
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/
106
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_pretraining_multiclass_12_process/
107
- tree_name: output
108
- weight_var: weight
109
- class: LazyDataset
110
- folding: *id004
111
- module: root_gnn_base.dataset
112
- padding_mode: NONE
113
- shuffle_chunks: 10
114
- ZH:
115
- args:
116
- buffer_size: 11
117
- chunks: 100
118
- file_names: ZH_NLO_inc.root
119
- fold_var: Number
120
- label: 5
121
- name: ZH
122
- node_branch_names: *id001
123
- node_branch_types: *id002
124
- node_feature_scales: *id003
125
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/
126
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_pretraining_multiclass_12_process/
127
- tree_name: output
128
- weight_var: weight
129
- class: LazyDataset
130
- folding: *id004
131
- module: root_gnn_base.dataset
132
- padding_mode: NONE
133
- shuffle_chunks: 10
134
- ggF:
135
- args:
136
- buffer_size: 11
137
- chunks: 100
138
- file_names: ggF_NLO_inc.root
139
- fold_var: Number
140
- label: 2
141
- name: ggF
142
- node_branch_names: *id001
143
- node_branch_types: *id002
144
- node_feature_scales: *id003
145
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/
146
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_pretraining_multiclass_12_process/
147
- tree_name: output
148
- weight_var: weight
149
- class: LazyDataset
150
- folding: *id004
151
- module: root_gnn_base.dataset
152
- padding_mode: NONE
153
- shuffle_chunks: 10
154
- tHjb:
155
- args:
156
- buffer_size: 11
157
- chunks: 100
158
- file_names: tHjb_NLO_inc.root
159
- fold_var: Number
160
- label: 1
161
- name: tHjb
162
- node_branch_names: *id001
163
- node_branch_types: *id002
164
- node_feature_scales: *id003
165
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/
166
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_pretraining_multiclass_12_process/
167
- tree_name: output
168
- weight_var: weight
169
- class: LazyDataset
170
- folding: *id004
171
- module: root_gnn_base.dataset
172
- padding_mode: NONE
173
- shuffle_chunks: 10
174
- ttH:
175
- args:
176
- buffer_size: 11
177
- chunks: 100
178
- file_names: ttH_NLO_inc.root
179
- fold_var: Number
180
- label: 0
181
- name: ttH
182
- node_branch_names: *id001
183
- node_branch_types: *id002
184
- node_feature_scales: *id003
185
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/
186
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_pretraining_multiclass_12_process/
187
- tree_name: output
188
- weight_var: weight
189
- class: LazyDataset
190
- folding: *id004
191
- module: root_gnn_base.dataset
192
- padding_mode: NONE
193
- shuffle_chunks: 10
194
- ttW:
195
- args:
196
- buffer_size: 11
197
- chunks: 100
198
- file_names: ttW.root
199
- fold_var: Number
200
- label: 10
201
- name: ttW
202
- node_branch_names: *id001
203
- node_branch_types: *id002
204
- node_feature_scales: *id003
205
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/
206
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_pretraining_multiclass_12_process/
207
- tree_name: output
208
- weight_var: weight
209
- class: LazyDataset
210
- folding: *id004
211
- module: root_gnn_base.dataset
212
- padding_mode: NONE
213
- shuffle_chunks: 10
214
- ttbar:
215
- args:
216
- buffer_size: 11
217
- chunks: 100
218
- file_names: ttbar.root
219
- fold_var: Number
220
- label: 9
221
- name: ttbar
222
- node_branch_names: *id001
223
- node_branch_types: *id002
224
- node_feature_scales: *id003
225
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/
226
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_pretraining_multiclass_12_process/
227
- tree_name: output
228
- weight_var: weight
229
- class: LazyDataset
230
- folding: *id004
231
- module: root_gnn_base.dataset
232
- padding_mode: NONE
233
- shuffle_chunks: 10
234
- ttt:
235
- args:
236
- buffer_size: 11
237
- chunks: 100
238
- file_names: ttt.root
239
- fold_var: Number
240
- label: 11
241
- name: ttt
242
- node_branch_names: *id001
243
- node_branch_types: *id002
244
- node_feature_scales: *id003
245
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/
246
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_pretraining_multiclass_12_process/
247
- tree_name: output
248
- weight_var: weight
249
- class: LazyDataset
250
- folding: *id004
251
- module: root_gnn_base.dataset
252
- padding_mode: NONE
253
- shuffle_chunks: 10
254
- tttt:
255
- args:
256
- buffer_size: 11
257
- chunks: 100
258
- file_names: tttt.root
259
- fold_var: Number
260
- label: 7
261
- name: tttt
262
- node_branch_names: *id001
263
- node_branch_types: *id002
264
- node_feature_scales: *id003
265
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/
266
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_pretraining_multiclass_12_process/
267
- tree_name: output
268
- weight_var: weight
269
- class: LazyDataset
270
- folding: *id004
271
- module: root_gnn_base.dataset
272
- padding_mode: NONE
273
- shuffle_chunks: 10
274
- ttyy:
275
- args:
276
- buffer_size: 11
277
- chunks: 100
278
- file_names: ttyy.root
279
- fold_var: Number
280
- label: 6
281
- name: ttyy_ch
282
- node_branch_names: *id001
283
- node_branch_types: *id002
284
- node_feature_scales: *id003
285
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/
286
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_pretraining_multiclass_12_process/
287
- tree_name: output
288
- weight_var: weight
289
- class: LazyDataset
290
- folding: *id004
291
- module: root_gnn_base.dataset
292
- padding_mode: NONE
293
- shuffle_chunks: 10
294
- Loss:
295
- args: {}
296
- class: CrossEntropyLoss
297
- finish:
298
- args:
299
- dim: 1
300
- class: Softmax
301
- module: torch.nn
302
- module: torch.nn
303
- Model:
304
- args:
305
- dropout: 0
306
- hid_size: 64
307
- in_size: 7
308
- n_layers: 4
309
- n_proc_steps: 4
310
- out_size: 12
311
- class: Edge_Network
312
- module: models.GCN
313
- Training:
314
- batch_size: 1024
315
- epochs: 100
316
- gamma: 0.99
317
- learning_rate: 0.0001
318
- Training_Directory: trainings/pretraining_multiclass/multiclass_12_process/
319
- Training_Name: multiclass_12_process
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Pretrained_GNN/multiclass_pretrained_model_12/model_epoch_71.pt DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:f382f9f8b2d8c09b896657d397985f9149f018fcf3aa6d6f56ce3e51cf8a6351
3
- size 1707502
 
 
 
 
Pretrained_GNN/multiclass_pretrained_model_12/training.log DELETED
@@ -1,74 +0,0 @@
1
- Training multiclass_12_process 2024-09-06 23:50:52.835697
2
- Epoch 00000 | LR 1.0000e-04 | Loss 1.6853 | Accuracy 0.3672 | Test_Loss 1.6844 | Test_AUC 0.8323 | Time 2406.1502 s
3
- Epoch 00001 | LR 9.9000e-05 | Loss 1.6216 | Accuracy 0.3743 | Test_Loss 1.6660 | Test_AUC 0.8344 | Time 2406.9453 s
4
- Epoch 00002 | LR 9.8010e-05 | Loss 1.6066 | Accuracy 0.3769 | Test_Loss 1.6656 | Test_AUC 0.8389 | Time 2355.3162 s
5
- Epoch 00003 | LR 9.7030e-05 | Loss 1.5989 | Accuracy 0.3752 | Test_Loss 1.6700 | Test_AUC 0.8379 | Time 2351.9926 s
6
- Epoch 00004 | LR 9.6060e-05 | Loss 1.5936 | Accuracy 0.3809 | Test_Loss 1.6568 | Test_AUC 0.8435 | Time 2323.1655 s
7
- Epoch 00005 | LR 9.5099e-05 | Loss 1.5898 | Accuracy 0.3784 | Test_Loss 1.6613 | Test_AUC 0.8405 | Time 2293.3972 s
8
- Epoch 00006 | LR 9.4148e-05 | Loss 1.5869 | Accuracy 0.3832 | Test_Loss 1.6416 | Test_AUC 0.8416 | Time 2297.7492 s
9
- Epoch 00007 | LR 9.3207e-05 | Loss 1.5844 | Accuracy 0.3917 | Test_Loss 1.6090 | Test_AUC 0.8455 | Time 2296.5126 s
10
- Epoch 00008 | LR 9.2274e-05 | Loss 1.5822 | Accuracy 0.3895 | Test_Loss 1.6174 | Test_AUC 0.8429 | Time 2372.6853 s
11
- Epoch 00009 | LR 9.1352e-05 | Loss 1.5810 | Accuracy 0.3965 | Test_Loss 1.6079 | Test_AUC 0.8453 | Time 2455.0305 s
12
- Epoch 00010 | LR 9.0438e-05 | Loss 1.5795 | Accuracy 0.3966 | Test_Loss 1.6067 | Test_AUC 0.8468 | Time 2459.9180 s
13
- Epoch 00011 | LR 8.9534e-05 | Loss 1.5782 | Accuracy 0.3943 | Test_Loss 1.6117 | Test_AUC 0.8465 | Time 2444.6930 s
14
- Epoch 00012 | LR 8.8638e-05 | Loss 1.5770 | Accuracy 0.3973 | Test_Loss 1.6081 | Test_AUC 0.8471 | Time 2475.8966 s
15
- Epoch 00013 | LR 8.7752e-05 | Loss 1.5759 | Accuracy 0.3973 | Test_Loss 1.6037 | Test_AUC 0.8486 | Time 2330.9825 s
16
- Epoch 00014 | LR 8.6875e-05 | Loss 1.5749 | Accuracy 0.3974 | Test_Loss 1.6066 | Test_AUC 0.8491 | Time 2276.6652 s
17
- Epoch 00015 | LR 8.6006e-05 | Loss 1.5741 | Accuracy 0.3981 | Test_Loss 1.6070 | Test_AUC 0.8475 | Time 2278.0207 s
18
- Epoch 00016 | LR 8.5146e-05 | Loss 1.5733 | Accuracy 0.3958 | Test_Loss 1.6089 | Test_AUC 0.8471 | Time 2296.7680 s
19
- Epoch 00017 | LR 8.4294e-05 | Loss 1.5726 | Accuracy 0.3978 | Test_Loss 1.6004 | Test_AUC 0.8491 | Time 2273.7842 s
20
- Epoch 00018 | LR 8.3451e-05 | Loss 1.5718 | Accuracy 0.3847 | Test_Loss 1.6652 | Test_AUC 0.8448 | Time 2265.8179 s
21
- Epoch 00019 | LR 8.2617e-05 | Loss 1.5713 | Accuracy 0.3858 | Test_Loss 1.6495 | Test_AUC 0.8434 | Time 2271.3266 s
22
- Epoch 00020 | LR 8.1791e-05 | Loss 1.5708 | Accuracy 0.3842 | Test_Loss 1.6602 | Test_AUC 0.8431 | Time 2263.7548 s
23
- Epoch 00021 | LR 8.0973e-05 | Loss 1.5703 | Accuracy 0.3829 | Test_Loss 1.6628 | Test_AUC 0.8439 | Time 2277.5963 s
24
- Epoch 00022 | LR 8.0163e-05 | Loss 1.5699 | Accuracy 0.3873 | Test_Loss 1.6452 | Test_AUC 0.8436 | Time 2381.2508 s
25
- Epoch 00023 | LR 7.9361e-05 | Loss 1.5694 | Accuracy 0.3841 | Test_Loss 1.6477 | Test_AUC 0.8446 | Time 2371.5616 s
26
- Epoch 00024 | LR 7.8568e-05 | Loss 1.5690 | Accuracy 0.3917 | Test_Loss 1.6253 | Test_AUC 0.8448 | Time 2412.1963 s
27
- Epoch 00025 | LR 7.7782e-05 | Loss 1.5685 | Accuracy 0.3997 | Test_Loss 1.5952 | Test_AUC 0.8483 | Time 2361.6398 s
28
- Epoch 00026 | LR 7.7004e-05 | Loss 1.5680 | Accuracy 0.3975 | Test_Loss 1.6004 | Test_AUC 0.8491 | Time 2370.2956 s
29
- Epoch 00027 | LR 7.6234e-05 | Loss 1.5679 | Accuracy 0.4008 | Test_Loss 1.6004 | Test_AUC 0.8496 | Time 2401.6121 s
30
- Epoch 00028 | LR 7.5472e-05 | Loss 1.5678 | Accuracy 0.3993 | Test_Loss 1.6004 | Test_AUC 0.8492 | Time 2403.7899 s
31
- Epoch 00029 | LR 7.4717e-05 | Loss 1.5676 | Accuracy 0.3993 | Test_Loss 1.5997 | Test_AUC 0.8497 | Time 2407.6645 s
32
- Epoch 00030 | LR 7.3970e-05 | Loss 1.5672 | Accuracy 0.4022 | Test_Loss 1.5928 | Test_AUC 0.8498 | Time 2401.9651 s
33
- Epoch 00031 | LR 7.3230e-05 | Loss 1.5669 | Accuracy 0.3991 | Test_Loss 1.6006 | Test_AUC 0.8475 | Time 2397.6024 s
34
- Epoch 00032 | LR 7.2498e-05 | Loss 1.5667 | Accuracy 0.4011 | Test_Loss 1.5956 | Test_AUC 0.8483 | Time 2404.3273 s
35
- Epoch 00033 | LR 7.1773e-05 | Loss 1.5664 | Accuracy 0.3999 | Test_Loss 1.5982 | Test_AUC 0.8468 | Time 2397.5160 s
36
- Epoch 00034 | LR 7.1055e-05 | Loss 1.5662 | Accuracy 0.4012 | Test_Loss 1.5956 | Test_AUC 0.8491 | Time 2396.6267 s
37
- Epoch 00035 | LR 7.0345e-05 | Loss 1.5659 | Accuracy 0.4003 | Test_Loss 1.5962 | Test_AUC 0.8473 | Time 2393.2753 s
38
- Training multiclass_12_process 2024-09-08 07:29:43.909566
39
- Epoch 00036 | LR 7.0345e-05 | Loss 1.5654 | Accuracy 0.3859 | Test_Loss 1.6487 | Test_AUC 0.8440 | Time 2350.2070 s
40
- Epoch 00037 | LR 6.9641e-05 | Loss 1.5654 | Accuracy 0.3855 | Test_Loss 1.6569 | Test_AUC 0.8450 | Time 2376.8111 s
41
- Epoch 00038 | LR 6.8945e-05 | Loss 1.5652 | Accuracy 0.3876 | Test_Loss 1.6477 | Test_AUC 0.8444 | Time 2388.1118 s
42
- Epoch 00039 | LR 6.8255e-05 | Loss 1.5650 | Accuracy 0.3856 | Test_Loss 1.6473 | Test_AUC 0.8441 | Time 2367.7247 s
43
- Epoch 00040 | LR 6.7573e-05 | Loss 1.5648 | Accuracy 0.3893 | Test_Loss 1.6384 | Test_AUC 0.8448 | Time 2354.1136 s
44
- Epoch 00041 | LR 6.6897e-05 | Loss 1.5646 | Accuracy 0.3861 | Test_Loss 1.6461 | Test_AUC 0.8458 | Time 2340.8834 s
45
- Epoch 00042 | LR 6.6228e-05 | Loss 1.5644 | Accuracy 0.3932 | Test_Loss 1.6217 | Test_AUC 0.8482 | Time 2349.6574 s
46
- Epoch 00043 | LR 6.5566e-05 | Loss 1.5641 | Accuracy 0.4010 | Test_Loss 1.5895 | Test_AUC 0.8484 | Time 2360.5786 s
47
- Epoch 00044 | LR 6.4910e-05 | Loss 1.5638 | Accuracy 0.4019 | Test_Loss 1.5900 | Test_AUC 0.8483 | Time 2468.9202 s
48
- Epoch 00045 | LR 6.4261e-05 | Loss 1.5640 | Accuracy 0.4008 | Test_Loss 1.5990 | Test_AUC 0.8481 | Time 2473.0072 s
49
- Epoch 00046 | LR 6.3619e-05 | Loss 1.5639 | Accuracy 0.4011 | Test_Loss 1.5962 | Test_AUC 0.8498 | Time 2448.4408 s
50
- Epoch 00047 | LR 6.2982e-05 | Loss 1.5638 | Accuracy 0.4017 | Test_Loss 1.5946 | Test_AUC 0.8485 | Time 2381.1478 s
51
- Epoch 00048 | LR 6.2353e-05 | Loss 1.5636 | Accuracy 0.4011 | Test_Loss 1.5942 | Test_AUC 0.8480 | Time 2393.2382 s
52
- Epoch 00049 | LR 6.1729e-05 | Loss 1.5635 | Accuracy 0.4022 | Test_Loss 1.5950 | Test_AUC 0.8482 | Time 2350.8688 s
53
- Epoch 00050 | LR 6.1112e-05 | Loss 1.5634 | Accuracy 0.4007 | Test_Loss 1.5968 | Test_AUC 0.8500 | Time 2334.9762 s
54
- Epoch 00051 | LR 6.0501e-05 | Loss 1.5632 | Accuracy 0.4026 | Test_Loss 1.5919 | Test_AUC 0.8487 | Time 2269.9354 s
55
- Epoch 00052 | LR 5.9896e-05 | Loss 1.5631 | Accuracy 0.4018 | Test_Loss 1.5961 | Test_AUC 0.8493 | Time 2303.6344 s
56
- Epoch 00053 | LR 5.9297e-05 | Loss 1.5630 | Accuracy 0.4022 | Test_Loss 1.5928 | Test_AUC 0.8501 | Time 2275.7180 s
57
- Epoch 00054 | LR 5.8704e-05 | Loss 1.5626 | Accuracy 0.3868 | Test_Loss 1.6539 | Test_AUC 0.8439 | Time 2282.3519 s
58
- Epoch 00055 | LR 5.8117e-05 | Loss 1.5626 | Accuracy 0.3848 | Test_Loss 1.6525 | Test_AUC 0.8449 | Time 2338.0367 s
59
- Epoch 00056 | LR 5.7535e-05 | Loss 1.5625 | Accuracy 0.3861 | Test_Loss 1.6500 | Test_AUC 0.8444 | Time 2349.1735 s
60
- Epoch 00057 | LR 5.6960e-05 | Loss 1.5624 | Accuracy 0.3883 | Test_Loss 1.6474 | Test_AUC 0.8438 | Time 2352.2581 s
61
- Epoch 00058 | LR 5.6391e-05 | Loss 1.5623 | Accuracy 0.3869 | Test_Loss 1.6484 | Test_AUC 0.8453 | Time 2300.8949 s
62
- Epoch 00059 | LR 5.5827e-05 | Loss 1.5621 | Accuracy 0.3885 | Test_Loss 1.6456 | Test_AUC 0.8452 | Time 2296.1956 s
63
- Epoch 00060 | LR 5.5268e-05 | Loss 1.5620 | Accuracy 0.3891 | Test_Loss 1.6347 | Test_AUC 0.8457 | Time 2311.4265 s
64
- Epoch 00061 | LR 5.4716e-05 | Loss 1.5618 | Accuracy 0.4018 | Test_Loss 1.5879 | Test_AUC 0.8495 | Time 2307.2661 s
65
- Epoch 00062 | LR 5.4169e-05 | Loss 1.5615 | Accuracy 0.4029 | Test_Loss 1.5857 | Test_AUC 0.8507 | Time 2356.9390 s
66
- Epoch 00063 | LR 5.3627e-05 | Loss 1.5617 | Accuracy 0.4008 | Test_Loss 1.5969 | Test_AUC 0.8497 | Time 2315.4540 s
67
- Epoch 00064 | LR 5.3091e-05 | Loss 1.5618 | Accuracy 0.4014 | Test_Loss 1.5944 | Test_AUC 0.8490 | Time 2322.3426 s
68
- Epoch 00065 | LR 5.2560e-05 | Loss 1.5618 | Accuracy 0.4013 | Test_Loss 1.5960 | Test_AUC 0.8498 | Time 2337.3654 s
69
- Epoch 00066 | LR 5.2034e-05 | Loss 1.5616 | Accuracy 0.4038 | Test_Loss 1.5905 | Test_AUC 0.8505 | Time 2354.6974 s
70
- Epoch 00067 | LR 5.1514e-05 | Loss 1.5615 | Accuracy 0.4028 | Test_Loss 1.5932 | Test_AUC 0.8491 | Time 2346.2346 s
71
- Epoch 00068 | LR 5.0999e-05 | Loss 1.5615 | Accuracy 0.4026 | Test_Loss 1.5919 | Test_AUC 0.8492 | Time 2364.3581 s
72
- Epoch 00069 | LR 5.0489e-05 | Loss 1.5614 | Accuracy 0.4014 | Test_Loss 1.5947 | Test_AUC 0.8485 | Time 2321.0254 s
73
- Epoch 00070 | LR 4.9984e-05 | Loss 1.5613 | Accuracy 0.4018 | Test_Loss 1.5942 | Test_AUC 0.8504 | Time 2360.4706 s
74
- Epoch 00071 | LR 4.9484e-05 | Loss 1.5612 | Accuracy 0.4016 | Test_Loss 1.5946 | Test_AUC 0.8487 | Time 2348.2632 s
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Pretrained_GNN/multilabel_pretrained_model_41/config.yaml DELETED
@@ -1,569 +0,0 @@
1
- Datasets:
2
- SingleT_schan:
3
- args:
4
- buffer_size: 11
5
- chunks: 100
6
- file_names: SingleT_schan_multilabel.root
7
- fold_var: Number
8
- label: &id001
9
- - n_higgs
10
- - n_top
11
- - n_V
12
- - n_W
13
- - n_Z
14
- - higgs_exists
15
- - higgs_pt_low
16
- - higgs_pt_med
17
- - higgs_pt_high
18
- - higgs_eta_0
19
- - higgs_eta_1
20
- - higgs_eta_2
21
- - higgs_eta_3
22
- - higgs_phi_0
23
- - higgs_phi_1
24
- - higgs_phi_2
25
- - higgs_phi_3
26
- - top0_exists
27
- - top0_pt_low
28
- - top0_pt_med
29
- - top0_pt_high
30
- - top0_eta_0
31
- - top0_eta_1
32
- - top0_eta_2
33
- - top0_eta_3
34
- - top0_phi_0
35
- - top0_phi_1
36
- - top0_phi_2
37
- - top0_phi_3
38
- - top1_exists
39
- - top1_pt_low
40
- - top1_pt_med
41
- - top1_pt_high
42
- - top1_eta_0
43
- - top1_eta_1
44
- - top1_eta_2
45
- - top1_eta_3
46
- - top1_phi_0
47
- - top1_phi_1
48
- - top1_phi_2
49
- - top1_phi_3
50
- name: SingleT_schan
51
- node_branch_names: &id002
52
- - - jet_pt
53
- - ele_pt
54
- - mu_pt
55
- - ph_pt
56
- - MET_met
57
- - - jet_eta
58
- - ele_eta
59
- - mu_eta
60
- - ph_eta
61
- - 0
62
- - - jet_phi
63
- - ele_phi
64
- - mu_phi
65
- - ph_phi
66
- - MET_phi
67
- - CALC_E
68
- - - jet_btag
69
- - 0
70
- - 0
71
- - 0
72
- - 0
73
- - - 0
74
- - ele_charge
75
- - mu_charge
76
- - 0
77
- - 0
78
- - NODE_TYPE
79
- node_branch_types: &id003
80
- - vector
81
- - vector
82
- - vector
83
- - vector
84
- - single
85
- node_feature_scales: &id004
86
- - 1e-1
87
- - 1
88
- - 1
89
- - 1e-1
90
- - 1
91
- - 1
92
- - 1
93
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/multilabel/
94
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_diverse_multilabel/
95
- tree_name: output
96
- weight_var: weight
97
- class: LazyMultiLabelDataset
98
- folding: &id005
99
- n_folds: 10
100
- test:
101
- - 0
102
- - 1
103
- train:
104
- - 2
105
- - 3
106
- - 4
107
- - 5
108
- - 6
109
- - 7
110
- - 8
111
- - 9
112
- module: root_gnn_base.dataset
113
- padding_mode: NONE
114
- shuffle_chunks: 10
115
- VBF:
116
- args:
117
- buffer_size: 11
118
- chunks: 100
119
- file_names: VBF_NLO_inc_multilabel.root
120
- fold_var: Number
121
- label: *id001
122
- name: VBF
123
- node_branch_names: *id002
124
- node_branch_types: *id003
125
- node_feature_scales: *id004
126
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/multilabel/
127
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_diverse_multilabel/
128
- tree_name: output
129
- weight_var: weight
130
- class: LazyMultiLabelDataset
131
- folding: *id005
132
- module: root_gnn_base.dataset
133
- padding_mode: NONE
134
- shuffle_chunks: 10
135
- WH:
136
- args:
137
- buffer_size: 11
138
- chunks: 100
139
- file_names: WH_NLO_inc_multilabel.root
140
- fold_var: Number
141
- label: *id001
142
- name: WH
143
- node_branch_names: *id002
144
- node_branch_types: *id003
145
- node_feature_scales: *id004
146
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/multilabel/
147
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_diverse_multilabel/
148
- tree_name: output
149
- weight_var: weight
150
- class: LazyMultiLabelDataset
151
- folding: *id005
152
- module: root_gnn_base.dataset
153
- padding_mode: NONE
154
- shuffle_chunks: 10
155
- ZH:
156
- args:
157
- buffer_size: 11
158
- chunks: 100
159
- file_names: ZH_NLO_inc_multilabel.root
160
- fold_var: Number
161
- label: *id001
162
- name: ZH
163
- node_branch_names: *id002
164
- node_branch_types: *id003
165
- node_feature_scales: *id004
166
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/multilabel/
167
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_diverse_multilabel/
168
- tree_name: output
169
- weight_var: weight
170
- class: LazyMultiLabelDataset
171
- folding: *id005
172
- module: root_gnn_base.dataset
173
- padding_mode: NONE
174
- shuffle_chunks: 10
175
- ggF:
176
- args:
177
- buffer_size: 11
178
- chunks: 100
179
- file_names: ggF_NLO_inc_multilabel.root
180
- fold_var: Number
181
- label: *id001
182
- name: ggF
183
- node_branch_names: *id002
184
- node_branch_types: *id003
185
- node_feature_scales: *id004
186
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/multilabel/
187
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_diverse_multilabel/
188
- tree_name: output
189
- weight_var: weight
190
- class: LazyMultiLabelDataset
191
- folding: *id005
192
- module: root_gnn_base.dataset
193
- padding_mode: NONE
194
- shuffle_chunks: 10
195
- tHjb:
196
- args:
197
- buffer_size: 11
198
- chunks: 100
199
- file_names: tHjb_NLO_inc_multilabel.root
200
- fold_var: Number
201
- label: *id001
202
- name: tHjb
203
- node_branch_names: *id002
204
- node_branch_types: *id003
205
- node_feature_scales: *id004
206
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/multilabel/
207
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_diverse_multilabel/
208
- tree_name: output
209
- weight_var: weight
210
- class: LazyMultiLabelDataset
211
- folding: *id005
212
- module: root_gnn_base.dataset
213
- padding_mode: NONE
214
- shuffle_chunks: 10
215
- ttH:
216
- args:
217
- buffer_size: 11
218
- chunks: 100
219
- file_names: ttH_NLO_inc_multilabel.root
220
- fold_var: Number
221
- label: *id001
222
- name: ttH
223
- node_branch_names: *id002
224
- node_branch_types: *id003
225
- node_feature_scales: *id004
226
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/multilabel/
227
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_diverse_multilabel/
228
- tree_name: output
229
- weight_var: weight
230
- class: LazyMultiLabelDataset
231
- folding: *id005
232
- module: root_gnn_base.dataset
233
- padding_mode: NONE
234
- shuffle_chunks: 10
235
- ttW:
236
- args:
237
- buffer_size: 11
238
- chunks: 100
239
- file_names: ttW_multilabel.root
240
- fold_var: Number
241
- label: *id001
242
- name: ttW
243
- node_branch_names: *id002
244
- node_branch_types: *id003
245
- node_feature_scales: *id004
246
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/multilabel/
247
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_diverse_multilabel/
248
- tree_name: output
249
- weight_var: weight
250
- class: LazyMultiLabelDataset
251
- folding: *id005
252
- module: root_gnn_base.dataset
253
- padding_mode: NONE
254
- shuffle_chunks: 10
255
- ttbar:
256
- args:
257
- buffer_size: 11
258
- chunks: 100
259
- file_names: ttbar_multilabel.root
260
- fold_var: Number
261
- label: *id001
262
- name: ttbar
263
- node_branch_names: *id002
264
- node_branch_types: *id003
265
- node_feature_scales: *id004
266
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/multilabel/
267
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_diverse_multilabel/
268
- tree_name: output
269
- weight_var: weight
270
- class: LazyMultiLabelDataset
271
- folding: *id005
272
- module: root_gnn_base.dataset
273
- padding_mode: NONE
274
- shuffle_chunks: 10
275
- ttt:
276
- args:
277
- buffer_size: 11
278
- chunks: 100
279
- file_names: ttt_multilabel.root
280
- fold_var: Number
281
- label: *id001
282
- name: ttt
283
- node_branch_names: *id002
284
- node_branch_types: *id003
285
- node_feature_scales: *id004
286
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/multilabel/
287
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_diverse_multilabel/
288
- tree_name: output
289
- weight_var: weight
290
- class: LazyMultiLabelDataset
291
- folding: *id005
292
- module: root_gnn_base.dataset
293
- padding_mode: NONE
294
- shuffle_chunks: 10
295
- tttt:
296
- args:
297
- buffer_size: 11
298
- chunks: 100
299
- file_names: tttt_multilabel.root
300
- fold_var: Number
301
- label: *id001
302
- name: tttt
303
- node_branch_names: *id002
304
- node_branch_types: *id003
305
- node_feature_scales: *id004
306
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/multilabel/
307
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_diverse_multilabel/
308
- tree_name: output
309
- weight_var: weight
310
- class: LazyMultiLabelDataset
311
- folding: *id005
312
- module: root_gnn_base.dataset
313
- padding_mode: NONE
314
- shuffle_chunks: 10
315
- ttyy:
316
- args:
317
- buffer_size: 11
318
- chunks: 100
319
- file_names: ttyy_multilabel.root
320
- fold_var: Number
321
- label: *id001
322
- name: ttyy
323
- node_branch_names: *id002
324
- node_branch_types: *id003
325
- node_feature_scales: *id004
326
- raw_dir: /global/cfs/projectdirs/atlas/joshua/root_gnn/root_gnn_dgl/data/ntuples/Hyy_pretraining/multilabel/
327
- save_dir: /pscratch/sd/j/joshuaho/root_gnn/root_gnn_dgl/data/processed_diverse_multilabel/
328
- tree_name: output
329
- weight_var: weight
330
- class: LazyMultiLabelDataset
331
- folding: *id005
332
- module: root_gnn_base.dataset
333
- padding_mode: NONE
334
- shuffle_chunks: 10
335
- Loss:
336
- args:
337
- label_names:
338
- - n_higgs
339
- - n_top
340
- - n_V
341
- - n_W
342
- - n_Z
343
- - higgs_exists
344
- - higgs_pt_low
345
- - higgs_pt_med
346
- - higgs_pt_high
347
- - higgs_eta_0
348
- - higgs_eta_1
349
- - higgs_eta_2
350
- - higgs_eta_3
351
- - higgs_phi_0
352
- - higgs_phi_1
353
- - higgs_phi_2
354
- - higgs_phi_3
355
- - top0_exists
356
- - top0_pt_low
357
- - top0_pt_med
358
- - top0_pt_high
359
- - top0_eta_0
360
- - top0_eta_1
361
- - top0_eta_2
362
- - top0_eta_3
363
- - top0_phi_0
364
- - top0_phi_1
365
- - top0_phi_2
366
- - top0_phi_3
367
- - top1_exists
368
- - top1_pt_low
369
- - top1_pt_med
370
- - top1_pt_high
371
- - top1_eta_0
372
- - top1_eta_1
373
- - top1_eta_2
374
- - top1_eta_3
375
- - top1_phi_0
376
- - top1_phi_1
377
- - top1_phi_2
378
- - top1_phi_3
379
- label_types:
380
- - r
381
- - r
382
- - r
383
- - r
384
- - r
385
- - c
386
- - c
387
- - c
388
- - c
389
- - c
390
- - c
391
- - c
392
- - c
393
- - c
394
- - c
395
- - c
396
- - c
397
- - c
398
- - c
399
- - c
400
- - c
401
- - c
402
- - c
403
- - c
404
- - c
405
- - c
406
- - c
407
- - c
408
- - c
409
- - c
410
- - c
411
- - c
412
- - c
413
- - c
414
- - c
415
- - c
416
- - c
417
- - c
418
- - c
419
- - c
420
- - c
421
- label_weights:
422
- - 1
423
- - 1
424
- - 1
425
- - 1
426
- - 1
427
- - 1
428
- - 1
429
- - 1
430
- - 1
431
- - 1
432
- - 1
433
- - 1
434
- - 1
435
- - 1
436
- - 1
437
- - 1
438
- - 1
439
- - 1
440
- - 1
441
- - 1
442
- - 1
443
- - 1
444
- - 1
445
- - 1
446
- - 1
447
- - 1
448
- - 1
449
- - 1
450
- - 1
451
- - 1
452
- - 1
453
- - 1
454
- - 1
455
- - 1
456
- - 1
457
- - 1
458
- - 1
459
- - 1
460
- - 1
461
- - 1
462
- - 1
463
- class: MultiLabelLoss
464
- finish:
465
- args:
466
- label_names:
467
- - n_higgs
468
- - n_top
469
- - n_V
470
- - n_W
471
- - n_Z
472
- - higgs_exists
473
- - higgs_pt_low
474
- - higgs_pt_med
475
- - higgs_pt_high
476
- - higgs_eta_0
477
- - higgs_eta_1
478
- - higgs_eta_2
479
- - higgs_eta_3
480
- - higgs_phi_0
481
- - higgs_phi_1
482
- - higgs_phi_2
483
- - higgs_phi_3
484
- - top0_exists
485
- - top0_pt_low
486
- - top0_pt_med
487
- - top0_pt_high
488
- - top0_eta_0
489
- - top0_eta_1
490
- - top0_eta_2
491
- - top0_eta_3
492
- - top0_phi_0
493
- - top0_phi_1
494
- - top0_phi_2
495
- - top0_phi_3
496
- - top1_exists
497
- - top1_pt_low
498
- - top1_pt_med
499
- - top1_pt_high
500
- - top1_eta_0
501
- - top1_eta_1
502
- - top1_eta_2
503
- - top1_eta_3
504
- - top1_phi_0
505
- - top1_phi_1
506
- - top1_phi_2
507
- - top1_phi_3
508
- label_types:
509
- - r
510
- - r
511
- - r
512
- - r
513
- - r
514
- - c
515
- - c
516
- - c
517
- - c
518
- - c
519
- - c
520
- - c
521
- - c
522
- - c
523
- - c
524
- - c
525
- - c
526
- - c
527
- - c
528
- - c
529
- - c
530
- - c
531
- - c
532
- - c
533
- - c
534
- - c
535
- - c
536
- - c
537
- - c
538
- - c
539
- - c
540
- - c
541
- - c
542
- - c
543
- - c
544
- - c
545
- - c
546
- - c
547
- - c
548
- - c
549
- - c
550
- class: MultiLabelFinish
551
- module: models.loss
552
- module: models.loss
553
- Model:
554
- args:
555
- dropout: 0.1
556
- hid_size: 64
557
- in_size: 7
558
- n_layers: 4
559
- n_proc_steps: 4
560
- out_size: 41
561
- class: Edge_Network
562
- module: models.GCN
563
- Training:
564
- batch_size: 1024
565
- epochs: 100
566
- gamma: 0.99
567
- learning_rate: 0.0001
568
- Training_Directory: trainings/pretraining_multilabel/multilabel_41_higgs_tops_all_kinematics/
569
- Training_Name: multilabel_41_higgs_tops_all_kinematics
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Pretrained_GNN/multilabel_pretrained_model_41/model_epoch_44.pt DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:c3fdf8d12e9c1bece6e22a91b10a6ede5e7ce8103e247b912fbfda580461446b
3
- size 1730158
 
 
 
 
Pretrained_GNN/multilabel_pretrained_model_41/training.log DELETED
@@ -1,91 +0,0 @@
1
- Training multilabel_41_higgs_tops_all_kinematics 2024-08-23 19:20:10.496271
2
- MultiLabel_Accuracy | 0.7455 | 0.5281 | 0.3708 | 0.3795 | 0.9044 | 0.4787 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.7644 | 0.9852 | 0.5181 | 0.8782 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.7744 | 0.9731 | 0.5523 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
3
- Epoch 00000 | LR 1.0000e-04 | Loss 21.5584 | Accuracy 0.8039 | Test_Loss 29.8678 | Test_AUC 0.0000 | Time 352.4659 s
4
- MultiLabel_Accuracy | 0.7517 | 0.5461 | 0.4684 | 0.4625 | 0.9044 | 0.7094 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8195 | 0.9852 | 0.6451 | 0.8782 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8309 | 0.9731 | 0.7521 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
5
- Epoch 00001 | LR 9.9000e-05 | Loss 16.0182 | Accuracy 0.8252 | Test_Loss 28.8779 | Test_AUC 0.0000 | Time 303.0560 s
6
- MultiLabel_Accuracy | 0.7517 | 0.5593 | 0.4727 | 0.4625 | 0.9044 | 0.7153 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8259 | 0.9852 | 0.7177 | 0.8782 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8330 | 0.9731 | 0.7826 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
7
- Epoch 00002 | LR 9.8010e-05 | Loss 15.3191 | Accuracy 0.8285 | Test_Loss 28.6484 | Test_AUC 0.0000 | Time 288.8502 s
8
- MultiLabel_Accuracy | 0.7560 | 0.5629 | 0.4914 | 0.4665 | 0.9044 | 0.7099 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8284 | 0.9852 | 0.7207 | 0.9055 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8376 | 0.9731 | 0.7980 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
9
- Epoch 00003 | LR 9.7030e-05 | Loss 15.0311 | Accuracy 0.8304 | Test_Loss 28.5576 | Test_AUC 0.0000 | Time 286.0547 s
10
- MultiLabel_Accuracy | 0.7625 | 0.5731 | 0.5011 | 0.4725 | 0.9044 | 0.7103 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8325 | 0.9852 | 0.7283 | 0.9086 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8426 | 0.9731 | 0.8055 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
11
- Epoch 00004 | LR 9.6060e-05 | Loss 14.8461 | Accuracy 0.8319 | Test_Loss 28.4603 | Test_AUC 0.0000 | Time 284.5482 s
12
- MultiLabel_Accuracy | 0.7645 | 0.5736 | 0.5196 | 0.5005 | 0.9044 | 0.7025 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8364 | 0.9852 | 0.7657 | 0.9338 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8469 | 0.9731 | 0.8034 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
13
- Epoch 00005 | LR 9.5099e-05 | Loss 14.7059 | Accuracy 0.8346 | Test_Loss 28.4169 | Test_AUC 0.0000 | Time 281.6354 s
14
- MultiLabel_Accuracy | 0.7648 | 0.5748 | 0.5223 | 0.5069 | 0.9044 | 0.7103 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8350 | 0.9852 | 0.7655 | 0.9281 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8430 | 0.9731 | 0.8036 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
15
- Epoch 00006 | LR 9.4148e-05 | Loss 14.6290 | Accuracy 0.8347 | Test_Loss 28.3604 | Test_AUC 0.0000 | Time 281.7016 s
16
- MultiLabel_Accuracy | 0.7626 | 0.5821 | 0.5289 | 0.5139 | 0.9044 | 0.7184 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8283 | 0.9852 | 0.7678 | 0.9335 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8344 | 0.9731 | 0.7900 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
17
- Epoch 00007 | LR 9.3207e-05 | Loss 14.5512 | Accuracy 0.8349 | Test_Loss 28.3178 | Test_AUC 0.0000 | Time 283.5411 s
18
- MultiLabel_Accuracy | 0.7629 | 0.5778 | 0.5311 | 0.5153 | 0.9044 | 0.7141 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8294 | 0.9852 | 0.7725 | 0.9309 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8272 | 0.9731 | 0.7831 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
19
- Epoch 00008 | LR 9.2274e-05 | Loss 14.4881 | Accuracy 0.8345 | Test_Loss 28.3158 | Test_AUC 0.0000 | Time 301.1452 s
20
- MultiLabel_Accuracy | 0.7641 | 0.5809 | 0.5265 | 0.5111 | 0.9044 | 0.7141 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8289 | 0.9852 | 0.7678 | 0.9249 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8278 | 0.9731 | 0.7936 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
21
- Epoch 00009 | LR 9.1352e-05 | Loss 14.4349 | Accuracy 0.8344 | Test_Loss 28.2953 | Test_AUC 0.0000 | Time 290.1668 s
22
- MultiLabel_Accuracy | 0.7630 | 0.5775 | 0.5313 | 0.5147 | 0.9044 | 0.7133 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8268 | 0.9852 | 0.7712 | 0.9161 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8224 | 0.9731 | 0.7899 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
23
- Epoch 00010 | LR 9.0438e-05 | Loss 14.3933 | Accuracy 0.8341 | Test_Loss 28.2877 | Test_AUC 0.0000 | Time 282.7054 s
24
- MultiLabel_Accuracy | 0.7631 | 0.5796 | 0.5274 | 0.5106 | 0.9044 | 0.7121 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8272 | 0.9852 | 0.7771 | 0.9241 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8227 | 0.9731 | 0.7846 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
25
- Epoch 00011 | LR 8.9534e-05 | Loss 14.3596 | Accuracy 0.8341 | Test_Loss 28.2753 | Test_AUC 0.0000 | Time 281.5382 s
26
- MultiLabel_Accuracy | 0.7640 | 0.5816 | 0.5218 | 0.5071 | 0.9044 | 0.7125 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8278 | 0.9852 | 0.7836 | 0.9215 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8261 | 0.9731 | 0.7864 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
27
- Epoch 00012 | LR 8.8638e-05 | Loss 14.3304 | Accuracy 0.8342 | Test_Loss 28.2619 | Test_AUC 0.0000 | Time 356.4046 s
28
- MultiLabel_Accuracy | 0.7643 | 0.5823 | 0.5164 | 0.5030 | 0.9044 | 0.7158 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8284 | 0.9852 | 0.7898 | 0.9320 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8290 | 0.9731 | 0.7799 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
29
- Epoch 00013 | LR 8.7752e-05 | Loss 14.3099 | Accuracy 0.8344 | Test_Loss 28.2455 | Test_AUC 0.0000 | Time 319.6655 s
30
- MultiLabel_Accuracy | 0.7639 | 0.5792 | 0.5255 | 0.5108 | 0.9044 | 0.7151 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8270 | 0.9852 | 0.7780 | 0.9251 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8258 | 0.9731 | 0.7858 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
31
- Epoch 00014 | LR 8.6875e-05 | Loss 14.2862 | Accuracy 0.8343 | Test_Loss 28.2518 | Test_AUC 0.0000 | Time 285.1502 s
32
- MultiLabel_Accuracy | 0.7647 | 0.5830 | 0.5255 | 0.5100 | 0.9044 | 0.7184 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8260 | 0.9852 | 0.7850 | 0.9223 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8261 | 0.9731 | 0.7829 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
33
- Epoch 00015 | LR 8.6006e-05 | Loss 14.2648 | Accuracy 0.8345 | Test_Loss 28.2293 | Test_AUC 0.0000 | Time 284.2648 s
34
- MultiLabel_Accuracy | 0.7655 | 0.5830 | 0.5284 | 0.5133 | 0.9044 | 0.7184 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8285 | 0.9852 | 0.7904 | 0.9221 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8304 | 0.9731 | 0.7856 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
35
- Epoch 00016 | LR 8.5146e-05 | Loss 14.2550 | Accuracy 0.8350 | Test_Loss 28.2367 | Test_AUC 0.0000 | Time 285.0594 s
36
- MultiLabel_Accuracy | 0.7646 | 0.5796 | 0.5293 | 0.5135 | 0.9044 | 0.7168 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8288 | 0.9852 | 0.7897 | 0.9253 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8290 | 0.9731 | 0.7913 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
37
- Epoch 00017 | LR 8.4294e-05 | Loss 14.2427 | Accuracy 0.8351 | Test_Loss 28.2483 | Test_AUC 0.0000 | Time 285.6626 s
38
- MultiLabel_Accuracy | 0.7650 | 0.5815 | 0.5352 | 0.5199 | 0.9044 | 0.7206 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8246 | 0.9852 | 0.7882 | 0.9255 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8242 | 0.9731 | 0.7825 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
39
- Epoch 00018 | LR 8.3451e-05 | Loss 14.2201 | Accuracy 0.8351 | Test_Loss 28.2372 | Test_AUC 0.0000 | Time 281.2534 s
40
- MultiLabel_Accuracy | 0.7651 | 0.5869 | 0.5295 | 0.5168 | 0.9044 | 0.7228 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8277 | 0.9852 | 0.7926 | 0.9242 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8306 | 0.9731 | 0.7825 | 0.9525 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
41
- Epoch 00019 | LR 8.2617e-05 | Loss 14.2050 | Accuracy 0.8353 | Test_Loss 28.2081 | Test_AUC 0.0000 | Time 280.0656 s
42
- MultiLabel_Accuracy | 0.7646 | 0.5755 | 0.5386 | 0.5236 | 0.9044 | 0.7172 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8265 | 0.9852 | 0.7885 | 0.9215 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8277 | 0.9731 | 0.7928 | 0.9599 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
43
- Epoch 00020 | LR 8.1791e-05 | Loss 14.1920 | Accuracy 0.8355 | Test_Loss 28.2547 | Test_AUC 0.0000 | Time 281.6702 s
44
- MultiLabel_Accuracy | 0.7666 | 0.5848 | 0.5371 | 0.5224 | 0.9044 | 0.7205 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8267 | 0.9852 | 0.7904 | 0.9215 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8255 | 0.9731 | 0.7858 | 0.9597 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
45
- Epoch 00021 | LR 8.0973e-05 | Loss 14.1798 | Accuracy 0.8356 | Test_Loss 28.2137 | Test_AUC 0.0000 | Time 283.8978 s
46
- MultiLabel_Accuracy | 0.7645 | 0.5835 | 0.5386 | 0.5260 | 0.9044 | 0.7215 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8252 | 0.9852 | 0.7857 | 0.9235 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8265 | 0.9731 | 0.7921 | 0.9599 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
47
- Epoch 00022 | LR 8.0163e-05 | Loss 14.1698 | Accuracy 0.8357 | Test_Loss 28.2437 | Test_AUC 0.0000 | Time 284.9271 s
48
- MultiLabel_Accuracy | 0.7659 | 0.5885 | 0.5385 | 0.5258 | 0.9044 | 0.7210 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8287 | 0.9852 | 0.7920 | 0.9255 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8275 | 0.9731 | 0.7913 | 0.9594 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
49
- Epoch 00023 | LR 7.9361e-05 | Loss 14.1528 | Accuracy 0.8361 | Test_Loss 28.1935 | Test_AUC 0.0000 | Time 282.3253 s
50
- MultiLabel_Accuracy | 0.7656 | 0.5849 | 0.5377 | 0.5230 | 0.9044 | 0.7188 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8275 | 0.9852 | 0.7909 | 0.9259 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8289 | 0.9731 | 0.7928 | 0.9598 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
51
- Epoch 00024 | LR 7.8568e-05 | Loss 14.1443 | Accuracy 0.8359 | Test_Loss 28.2195 | Test_AUC 0.0000 | Time 295.7619 s
52
- MultiLabel_Accuracy | 0.7652 | 0.5848 | 0.5384 | 0.5230 | 0.9044 | 0.7158 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8280 | 0.9852 | 0.7879 | 0.9215 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8293 | 0.9731 | 0.7947 | 0.9594 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
53
- Epoch 00025 | LR 7.7782e-05 | Loss 14.1351 | Accuracy 0.8357 | Test_Loss 28.2209 | Test_AUC 0.0000 | Time 305.7035 s
54
- MultiLabel_Accuracy | 0.7657 | 0.5860 | 0.5367 | 0.5201 | 0.9044 | 0.7158 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8297 | 0.9852 | 0.7926 | 0.9228 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8298 | 0.9731 | 0.7950 | 0.9594 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
55
- Epoch 00026 | LR 7.7004e-05 | Loss 14.1285 | Accuracy 0.8359 | Test_Loss 28.2225 | Test_AUC 0.0000 | Time 294.8985 s
56
- MultiLabel_Accuracy | 0.7661 | 0.5872 | 0.5370 | 0.5208 | 0.9044 | 0.7178 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8288 | 0.9852 | 0.7931 | 0.9269 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8294 | 0.9731 | 0.7926 | 0.9601 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
57
- Epoch 00027 | LR 7.6234e-05 | Loss 14.1134 | Accuracy 0.8360 | Test_Loss 28.1849 | Test_AUC 0.0000 | Time 282.3505 s
58
- MultiLabel_Accuracy | 0.7663 | 0.5863 | 0.5395 | 0.5243 | 0.9044 | 0.7188 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8283 | 0.9852 | 0.7875 | 0.9197 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8304 | 0.9731 | 0.7959 | 0.9589 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
59
- Epoch 00028 | LR 7.5472e-05 | Loss 14.1056 | Accuracy 0.8359 | Test_Loss 28.2178 | Test_AUC 0.0000 | Time 286.5912 s
60
- MultiLabel_Accuracy | 0.7660 | 0.5886 | 0.5383 | 0.5231 | 0.9044 | 0.7219 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8268 | 0.9852 | 0.7913 | 0.9258 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8262 | 0.9731 | 0.7927 | 0.9599 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
61
- Epoch 00029 | LR 7.4717e-05 | Loss 14.0994 | Accuracy 0.8361 | Test_Loss 28.2007 | Test_AUC 0.0000 | Time 281.7022 s
62
- MultiLabel_Accuracy | 0.7675 | 0.5887 | 0.5363 | 0.5219 | 0.9044 | 0.7175 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8311 | 0.9852 | 0.7943 | 0.9255 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8295 | 0.9731 | 0.7942 | 0.9597 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
63
- Epoch 00030 | LR 7.3970e-05 | Loss 14.0880 | Accuracy 0.8362 | Test_Loss 28.1905 | Test_AUC 0.0000 | Time 279.7372 s
64
- MultiLabel_Accuracy | 0.7677 | 0.5906 | 0.5366 | 0.5232 | 0.9044 | 0.7194 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8312 | 0.9852 | 0.7940 | 0.9255 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8308 | 0.9731 | 0.7967 | 0.9594 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
65
- Epoch 00031 | LR 7.3230e-05 | Loss 14.0795 | Accuracy 0.8364 | Test_Loss 28.1945 | Test_AUC 0.0000 | Time 285.0377 s
66
- MultiLabel_Accuracy | 0.7687 | 0.5940 | 0.5357 | 0.5232 | 0.9044 | 0.7206 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8299 | 0.9852 | 0.7924 | 0.9242 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8324 | 0.9731 | 0.7960 | 0.9596 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
67
- Epoch 00032 | LR 7.2498e-05 | Loss 14.0707 | Accuracy 0.8364 | Test_Loss 28.1790 | Test_AUC 0.0000 | Time 282.6988 s
68
- MultiLabel_Accuracy | 0.7673 | 0.5884 | 0.5350 | 0.5214 | 0.9044 | 0.7151 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8321 | 0.9852 | 0.7913 | 0.9197 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8279 | 0.9731 | 0.7922 | 0.9590 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
69
- Epoch 00033 | LR 7.1773e-05 | Loss 14.0643 | Accuracy 0.8358 | Test_Loss 28.1895 | Test_AUC 0.0000 | Time 278.8458 s
70
- MultiLabel_Accuracy | 0.7681 | 0.5947 | 0.5338 | 0.5211 | 0.9044 | 0.7213 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8298 | 0.9852 | 0.7941 | 0.9262 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8269 | 0.9731 | 0.7919 | 0.9600 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
71
- Epoch 00034 | LR 7.1055e-05 | Loss 14.0574 | Accuracy 0.8362 | Test_Loss 28.1609 | Test_AUC 0.0000 | Time 283.4880 s
72
- MultiLabel_Accuracy | 0.7690 | 0.5982 | 0.5342 | 0.5229 | 0.9044 | 0.7235 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8299 | 0.9852 | 0.7948 | 0.9273 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8274 | 0.9731 | 0.7912 | 0.9601 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
73
- Epoch 00035 | LR 7.0345e-05 | Loss 14.0464 | Accuracy 0.8365 | Test_Loss 28.1496 | Test_AUC 0.0000 | Time 285.9291 s
74
- MultiLabel_Accuracy | 0.7684 | 0.5962 | 0.5339 | 0.5212 | 0.9044 | 0.7213 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8349 | 0.9852 | 0.7960 | 0.9255 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8302 | 0.9731 | 0.7935 | 0.9597 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
75
- Epoch 00036 | LR 6.9641e-05 | Loss 14.0393 | Accuracy 0.8365 | Test_Loss 28.1716 | Test_AUC 0.0000 | Time 284.9658 s
76
- MultiLabel_Accuracy | 0.7686 | 0.5963 | 0.5337 | 0.5208 | 0.9044 | 0.7184 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8339 | 0.9852 | 0.7956 | 0.9259 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8305 | 0.9731 | 0.7932 | 0.9596 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
77
- Epoch 00037 | LR 6.8945e-05 | Loss 14.0344 | Accuracy 0.8364 | Test_Loss 28.1794 | Test_AUC 0.0000 | Time 289.9682 s
78
- MultiLabel_Accuracy | 0.7692 | 0.5996 | 0.5330 | 0.5190 | 0.9044 | 0.7203 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8346 | 0.9852 | 0.7971 | 0.9260 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8321 | 0.9731 | 0.7949 | 0.9598 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
79
- Epoch 00038 | LR 6.8255e-05 | Loss 14.0218 | Accuracy 0.8367 | Test_Loss 28.1637 | Test_AUC 0.0000 | Time 287.4777 s
80
- MultiLabel_Accuracy | 0.7691 | 0.5970 | 0.5330 | 0.5201 | 0.9044 | 0.7190 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8345 | 0.9852 | 0.7968 | 0.9276 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8342 | 0.9731 | 0.7962 | 0.9601 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
81
- Epoch 00039 | LR 6.7573e-05 | Loss 14.0097 | Accuracy 0.8367 | Test_Loss 28.1543 | Test_AUC 0.0000 | Time 290.9069 s
82
- MultiLabel_Accuracy | 0.7694 | 0.5998 | 0.5333 | 0.5203 | 0.9044 | 0.7209 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8350 | 0.9852 | 0.7975 | 0.9277 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8353 | 0.9731 | 0.7976 | 0.9601 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
83
- Epoch 00040 | LR 6.6897e-05 | Loss 13.9961 | Accuracy 0.8369 | Test_Loss 28.1429 | Test_AUC 0.0000 | Time 284.9635 s
84
- MultiLabel_Accuracy | 0.7692 | 0.5994 | 0.5328 | 0.5191 | 0.9044 | 0.7226 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8346 | 0.9852 | 0.7977 | 0.9274 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8365 | 0.9731 | 0.7987 | 0.9602 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
85
- Epoch 00041 | LR 6.6228e-05 | Loss 13.9844 | Accuracy 0.8370 | Test_Loss 28.1354 | Test_AUC 0.0000 | Time 283.8730 s
86
- MultiLabel_Accuracy | 0.7694 | 0.6001 | 0.5347 | 0.5204 | 0.9044 | 0.7256 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8345 | 0.9852 | 0.7974 | 0.9282 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8360 | 0.9731 | 0.7990 | 0.9599 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
87
- Epoch 00042 | LR 6.5566e-05 | Loss 13.9704 | Accuracy 0.8371 | Test_Loss 28.1307 | Test_AUC 0.0000 | Time 284.3014 s
88
- MultiLabel_Accuracy | 0.7695 | 0.5988 | 0.5348 | 0.5199 | 0.9044 | 0.7225 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8366 | 0.9852 | 0.7988 | 0.9278 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8378 | 0.9731 | 0.8020 | 0.9602 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
89
- Epoch 00043 | LR 6.4910e-05 | Loss 13.9571 | Accuracy 0.8372 | Test_Loss 28.1316 | Test_AUC 0.0000 | Time 282.0029 s
90
- MultiLabel_Accuracy | 0.7695 | 0.5994 | 0.5348 | 0.5192 | 0.9044 | 0.7233 | 0.8561 | 0.6573 | 0.9652 | 0.8321 | 0.9076 | 0.9074 | 0.8316 | 0.8933 | 0.8935 | 0.7987 | 0.8932 | 0.8354 | 0.9852 | 0.7979 | 0.9274 | 0.8829 | 0.8077 | 0.8077 | 0.8832 | 0.8453 | 0.8454 | 0.8456 | 0.8453 | 0.8359 | 0.9731 | 0.8007 | 0.9602 | 0.8843 | 0.8548 | 0.8545 | 0.8843 | 0.8695 | 0.8695 | 0.8696 | 0.8693
91
- Epoch 00044 | LR 6.4261e-05 | Loss 13.9445 | Accuracy 0.8371 | Test_Loss 28.1224 | Test_AUC 0.0000 | Time 282.0396 s
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
README.md CHANGED
The diff for this file is too large to render. See raw diff
 
configs/delphes_contrastive.yaml DELETED
@@ -1,81 +0,0 @@
1
- # Contrastive (SimCLR) pretraining of the object transformer on the 12
2
- # Delphes samples of configs/delphes_jepa.yaml, without their labels (same
3
- # event cache): two random views of every event (rotation, eta flip, energy
4
- # scale, object dropout) are pulled together (src/gnn4colliders/contrastive.py).
5
- # Fine-tune with configs/gamgam_jepa_finetune.yaml
6
- # model.pretrained=outputs/delphes_contrastive/last.pt, or compare encoders
7
- # without fine-tuning: gnn4colliders probe configs/gamgam_jepa_finetune.yaml
8
- # data.train_events=1000 split=validation model.pretrained=...
9
- #
10
- # gnn4colliders train configs/delphes_contrastive.yaml
11
- name: delphes_contrastive
12
-
13
- data:
14
- hf_repo: HWresearch/Delphes
15
- hf_revision: 76a6c362bfba8e766ba7255a5c08a55257f78d0e
16
- files:
17
- - {path: samples/higgs/top-associated/tth/ttH_NLO_inc.root, label: 0}
18
- - {path: samples/higgs/top-associated/thjb/tHjb_NLO_inc.root, label: 1}
19
- - {path: samples/higgs/ggf/ggF_NLO_inc.root, label: 2}
20
- - {path: samples/higgs/vbf/VBF_NLO_inc.root, label: 3}
21
- - {path: samples/higgs/vh/wh/WH_NLO_inc.root, label: 4}
22
- - {path: samples/higgs/vh/zh/ZH_NLO_inc.root, label: 5}
23
- - {path: samples/photon/ttyy/ttyy.root, label: 6}
24
- - {path: samples/top/multitop/tttt.root, label: 7}
25
- - {path: samples/top/single-top/SingleT_schan.root, label: 8}
26
- - {path: samples/top/ttbar/ttbar.root, label: 9}
27
- - {path: samples/top/ttv/ttW.root, label: 10}
28
- - {path: samples/top/multitop/ttt.root, label: 11}
29
- tree_name: output
30
- feature_branches:
31
- - [jet_pt, ele_pt, mu_pt, ph_pt, MET_met]
32
- - [jet_eta, ele_eta, mu_eta, ph_eta, 0]
33
- - [jet_phi, ele_phi, mu_phi, ph_phi, MET_phi]
34
- - CALC_E
35
- - [jet_btag, 0, 0, 0, 0]
36
- - [0, ele_charge, mu_charge, 0, 0]
37
- - NODE_TYPE
38
- object_types: [vector, vector, vector, vector, single]
39
- scales: [0.1, 1, 1, 0.1, 1, 1, 1]
40
- # Number is the event index; Number % 10 is the fold. Pretraining trained
41
- # on folds 2-9 and tested on 0-1; here fold 0 validates and fold 1 tests.
42
- fold_var: Number
43
- fold_modulus: 10
44
- train_folds: [2, 3, 4, 5, 6, 7, 8, 9]
45
- validation_folds: [0]
46
- test_folds: [1]
47
- # JEPA ignores labels and weights; the cache is that of
48
- # configs/delphes_pretraining.yaml.
49
- weight_var: weight
50
- cache: outputs/delphes_pretraining/events.pt
51
- batch_size: 1024
52
- prepare_workers: 8
53
- loader_workers: 4
54
- pin_memory: true
55
-
56
- model:
57
- name: contrastive
58
- backbone: transformer
59
- # The encoder; configs/gamgam_jepa_finetune.yaml must match it.
60
- hid_size: 128
61
- n_layers: 4
62
- n_heads: 8
63
- ffn_size: 512
64
- dropout: 0.0
65
- pair_bias: true
66
- temperature: 0.1
67
- scale_jitter: 0.1
68
- object_dropout: 0.1
69
-
70
- task:
71
- name: contrastive
72
-
73
- train:
74
- max_epochs: 30
75
- optimizer: adamw
76
- learning_rate: 5.0e-4
77
- weight_decay: 0.05
78
- lr_decay: 0.95
79
- early_stopping: null
80
- # Fine-tune from last.pt.
81
- best_metric: loss
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
configs/delphes_jepa.yaml DELETED
@@ -1,77 +0,0 @@
1
- # JEPA pretraining of the object transformer on the 12 Delphes samples of
2
- # the supervised pretraining (configs/delphes_pretraining.yaml), without
3
- # their labels. Fine-tune with configs/gamgam_jepa_finetune.yaml.
4
- #
5
- # gnn4colliders prepare configs/delphes_jepa.yaml
6
- # gnn4colliders train configs/delphes_jepa.yaml
7
- name: delphes_jepa
8
-
9
- data:
10
- hf_repo: HWresearch/Delphes
11
- hf_revision: 76a6c362bfba8e766ba7255a5c08a55257f78d0e
12
- files:
13
- - {path: samples/higgs/top-associated/tth/ttH_NLO_inc.root, label: 0}
14
- - {path: samples/higgs/top-associated/thjb/tHjb_NLO_inc.root, label: 1}
15
- - {path: samples/higgs/ggf/ggF_NLO_inc.root, label: 2}
16
- - {path: samples/higgs/vbf/VBF_NLO_inc.root, label: 3}
17
- - {path: samples/higgs/vh/wh/WH_NLO_inc.root, label: 4}
18
- - {path: samples/higgs/vh/zh/ZH_NLO_inc.root, label: 5}
19
- - {path: samples/photon/ttyy/ttyy.root, label: 6}
20
- - {path: samples/top/multitop/tttt.root, label: 7}
21
- - {path: samples/top/single-top/SingleT_schan.root, label: 8}
22
- - {path: samples/top/ttbar/ttbar.root, label: 9}
23
- - {path: samples/top/ttv/ttW.root, label: 10}
24
- - {path: samples/top/multitop/ttt.root, label: 11}
25
- tree_name: output
26
- feature_branches:
27
- - [jet_pt, ele_pt, mu_pt, ph_pt, MET_met]
28
- - [jet_eta, ele_eta, mu_eta, ph_eta, 0]
29
- - [jet_phi, ele_phi, mu_phi, ph_phi, MET_phi]
30
- - CALC_E
31
- - [jet_btag, 0, 0, 0, 0]
32
- - [0, ele_charge, mu_charge, 0, 0]
33
- - NODE_TYPE
34
- object_types: [vector, vector, vector, vector, single]
35
- scales: [0.1, 1, 1, 0.1, 1, 1, 1]
36
- # Number is the event index; Number % 10 is the fold. Pretraining trained
37
- # on folds 2-9 and tested on 0-1; here fold 0 validates and fold 1 tests.
38
- fold_var: Number
39
- fold_modulus: 10
40
- train_folds: [2, 3, 4, 5, 6, 7, 8, 9]
41
- validation_folds: [0]
42
- test_folds: [1]
43
- # JEPA ignores labels and weights; the cache is that of
44
- # configs/delphes_pretraining.yaml.
45
- weight_var: weight
46
- cache: outputs/delphes_pretraining/events.pt
47
- batch_size: 1024
48
- prepare_workers: 8
49
- loader_workers: 4
50
- pin_memory: true
51
-
52
- model:
53
- name: jepa
54
- # The encoder; configs/gamgam_jepa_finetune.yaml must match it.
55
- hid_size: 128
56
- n_layers: 4
57
- n_heads: 8
58
- ffn_size: 512
59
- dropout: 0.0
60
- pair_bias: true
61
- predictor_layers: 2
62
- mask_fraction: 0.4
63
- ema_momentum: 0.996
64
-
65
- task:
66
- name: jepa
67
-
68
- train:
69
- max_epochs: 30
70
- optimizer: adamw
71
- learning_rate: 5.0e-4
72
- weight_decay: 0.05
73
- lr_decay: 0.95
74
- early_stopping: null
75
- # The target drifts with the EMA, so the loss does not compare epochs;
76
- # fine-tune from last.pt.
77
- best_metric: loss
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
configs/delphes_jepa_edge.yaml DELETED
@@ -1,82 +0,0 @@
1
- # JEPA pretraining of the edge network, of the size of the supervised
2
- # pretrained models (Pretrained_GNN/), on the same 12 Delphes samples without
3
- # their labels. Fine-tune with configs/gamgam_finetune.yaml and
4
- # model.pretrained=outputs/delphes_jepa_edge/last.pt.
5
- #
6
- # gnn4colliders prepare configs/delphes_jepa_edge.yaml
7
- # gnn4colliders train configs/delphes_jepa_edge.yaml
8
- name: delphes_jepa_edge
9
-
10
- data:
11
- hf_repo: HWresearch/Delphes
12
- hf_revision: 76a6c362bfba8e766ba7255a5c08a55257f78d0e
13
- files:
14
- - {path: samples/higgs/top-associated/tth/ttH_NLO_inc.root, label: 0}
15
- - {path: samples/higgs/top-associated/thjb/tHjb_NLO_inc.root, label: 1}
16
- - {path: samples/higgs/ggf/ggF_NLO_inc.root, label: 2}
17
- - {path: samples/higgs/vbf/VBF_NLO_inc.root, label: 3}
18
- - {path: samples/higgs/vh/wh/WH_NLO_inc.root, label: 4}
19
- - {path: samples/higgs/vh/zh/ZH_NLO_inc.root, label: 5}
20
- - {path: samples/photon/ttyy/ttyy.root, label: 6}
21
- - {path: samples/top/multitop/tttt.root, label: 7}
22
- - {path: samples/top/single-top/SingleT_schan.root, label: 8}
23
- - {path: samples/top/ttbar/ttbar.root, label: 9}
24
- - {path: samples/top/ttv/ttW.root, label: 10}
25
- - {path: samples/top/multitop/ttt.root, label: 11}
26
- tree_name: output
27
- feature_branches:
28
- - [jet_pt, ele_pt, mu_pt, ph_pt, MET_met]
29
- - [jet_eta, ele_eta, mu_eta, ph_eta, 0]
30
- - [jet_phi, ele_phi, mu_phi, ph_phi, MET_phi]
31
- - CALC_E
32
- - [jet_btag, 0, 0, 0, 0]
33
- - [0, ele_charge, mu_charge, 0, 0]
34
- - NODE_TYPE
35
- object_types: [vector, vector, vector, vector, single]
36
- scales: [0.1, 1, 1, 0.1, 1, 1, 1]
37
- # Number is the event index; Number % 10 is the fold. Pretraining trained
38
- # on folds 2-9 and tested on 0-1; here fold 0 validates and fold 1 tests.
39
- fold_var: Number
40
- fold_modulus: 10
41
- train_folds: [2, 3, 4, 5, 6, 7, 8, 9]
42
- validation_folds: [0]
43
- test_folds: [1]
44
- # JEPA ignores labels and weights; the cache is that of
45
- # configs/delphes_pretraining.yaml.
46
- weight_var: weight
47
- cache: outputs/delphes_pretraining/events.pt
48
- batch_size: 1024
49
- prepare_workers: 8
50
- loader_workers: 4
51
- pin_memory: true
52
-
53
- model:
54
- name: jepa
55
- backbone: edge_network
56
- # The encoder: as in Pretrained_GNN/*/config.yaml.
57
- hid_size: 64
58
- n_layers: 4
59
- n_proc_steps: 4
60
- dropout: 0.0
61
- # The predictor: transformer blocks.
62
- predictor_layers: 2
63
- n_heads: 4
64
- ffn_size: 256
65
- mask_fraction: 0.4
66
- ema_momentum: 0.996
67
- # Without it the encodings collapse (docs/design.md, JEPA pretraining).
68
- variance_weight: 0.1
69
-
70
- task:
71
- name: jepa
72
-
73
- train:
74
- max_epochs: 30
75
- optimizer: adamw
76
- learning_rate: 5.0e-4
77
- weight_decay: 0.05
78
- lr_decay: 0.95
79
- early_stopping: null
80
- # The target drifts with the EMA, so the loss does not compare epochs;
81
- # fine-tune from last.pt.
82
- best_metric: loss
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
configs/delphes_masked.yaml DELETED
@@ -1,78 +0,0 @@
1
- # Masked object modelling of the object transformer on the 12 Delphes
2
- # samples of configs/delphes_jepa.yaml, without their labels (same event
3
- # cache): JEPA's masking and predictor, but the predictor predicts the hidden
4
- # objects' kinematics instead of their target encodings (model.jepa_target:
5
- # features; src/gnn4colliders/jepa.py). Fine-tune or probe with
6
- # configs/gamgam_jepa_finetune.yaml model.pretrained=outputs/delphes_masked/last.pt.
7
- #
8
- # gnn4colliders train configs/delphes_masked.yaml
9
- name: delphes_masked
10
-
11
- data:
12
- hf_repo: HWresearch/Delphes
13
- hf_revision: 76a6c362bfba8e766ba7255a5c08a55257f78d0e
14
- files:
15
- - {path: samples/higgs/top-associated/tth/ttH_NLO_inc.root, label: 0}
16
- - {path: samples/higgs/top-associated/thjb/tHjb_NLO_inc.root, label: 1}
17
- - {path: samples/higgs/ggf/ggF_NLO_inc.root, label: 2}
18
- - {path: samples/higgs/vbf/VBF_NLO_inc.root, label: 3}
19
- - {path: samples/higgs/vh/wh/WH_NLO_inc.root, label: 4}
20
- - {path: samples/higgs/vh/zh/ZH_NLO_inc.root, label: 5}
21
- - {path: samples/photon/ttyy/ttyy.root, label: 6}
22
- - {path: samples/top/multitop/tttt.root, label: 7}
23
- - {path: samples/top/single-top/SingleT_schan.root, label: 8}
24
- - {path: samples/top/ttbar/ttbar.root, label: 9}
25
- - {path: samples/top/ttv/ttW.root, label: 10}
26
- - {path: samples/top/multitop/ttt.root, label: 11}
27
- tree_name: output
28
- feature_branches:
29
- - [jet_pt, ele_pt, mu_pt, ph_pt, MET_met]
30
- - [jet_eta, ele_eta, mu_eta, ph_eta, 0]
31
- - [jet_phi, ele_phi, mu_phi, ph_phi, MET_phi]
32
- - CALC_E
33
- - [jet_btag, 0, 0, 0, 0]
34
- - [0, ele_charge, mu_charge, 0, 0]
35
- - NODE_TYPE
36
- object_types: [vector, vector, vector, vector, single]
37
- scales: [0.1, 1, 1, 0.1, 1, 1, 1]
38
- # Number is the event index; Number % 10 is the fold. Pretraining trained
39
- # on folds 2-9 and tested on 0-1; here fold 0 validates and fold 1 tests.
40
- fold_var: Number
41
- fold_modulus: 10
42
- train_folds: [2, 3, 4, 5, 6, 7, 8, 9]
43
- validation_folds: [0]
44
- test_folds: [1]
45
- # JEPA ignores labels and weights; the cache is that of
46
- # configs/delphes_pretraining.yaml.
47
- weight_var: weight
48
- cache: outputs/delphes_pretraining/events.pt
49
- batch_size: 1024
50
- prepare_workers: 8
51
- loader_workers: 4
52
- pin_memory: true
53
-
54
- model:
55
- name: jepa
56
- jepa_target: features
57
- # The encoder; configs/gamgam_jepa_finetune.yaml must match it.
58
- hid_size: 128
59
- n_layers: 4
60
- n_heads: 8
61
- ffn_size: 512
62
- dropout: 0.0
63
- pair_bias: true
64
- predictor_layers: 2
65
- mask_fraction: 0.4
66
-
67
- task:
68
- name: jepa
69
-
70
- train:
71
- max_epochs: 30
72
- optimizer: adamw
73
- learning_rate: 5.0e-4
74
- weight_decay: 0.05
75
- lr_decay: 0.95
76
- early_stopping: null
77
- # Fine-tune from last.pt.
78
- best_metric: loss
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
configs/delphes_pfn.yaml DELETED
@@ -1,86 +0,0 @@
1
- # Meta-training of a prior-fitted network (src/gnn4colliders/pfn.py) on
2
- # classification tasks drawn from the 12 Delphes samples: it learns to
3
- # classify events given labelled context events, and is then evaluated in
4
- # context on new data (configs/gamgam_pfn.yaml). The encoder has the sizes of
5
- # configs/delphes_jepa.yaml, so model.pretrained=outputs/delphes_jepa/last.pt
6
- # starts it from the JEPA encoder. task.prior_classes=[1,6,7,8,9,10,11]
7
- # leaves out the five processes of the GamGam task (ttH, ggF, VBF, WH, ZH).
8
- #
9
- # gnn4colliders train configs/delphes_pfn.yaml
10
- name: delphes_pfn
11
-
12
- data:
13
- hf_repo: HWresearch/Delphes
14
- hf_revision: 76a6c362bfba8e766ba7255a5c08a55257f78d0e
15
- files:
16
- - {path: samples/higgs/top-associated/tth/ttH_NLO_inc.root, label: 0}
17
- - {path: samples/higgs/top-associated/thjb/tHjb_NLO_inc.root, label: 1}
18
- - {path: samples/higgs/ggf/ggF_NLO_inc.root, label: 2}
19
- - {path: samples/higgs/vbf/VBF_NLO_inc.root, label: 3}
20
- - {path: samples/higgs/vh/wh/WH_NLO_inc.root, label: 4}
21
- - {path: samples/higgs/vh/zh/ZH_NLO_inc.root, label: 5}
22
- - {path: samples/photon/ttyy/ttyy.root, label: 6}
23
- - {path: samples/top/multitop/tttt.root, label: 7}
24
- - {path: samples/top/single-top/SingleT_schan.root, label: 8}
25
- - {path: samples/top/ttbar/ttbar.root, label: 9}
26
- - {path: samples/top/ttv/ttW.root, label: 10}
27
- - {path: samples/top/multitop/ttt.root, label: 11}
28
- tree_name: output
29
- feature_branches:
30
- - [jet_pt, ele_pt, mu_pt, ph_pt, MET_met]
31
- - [jet_eta, ele_eta, mu_eta, ph_eta, 0]
32
- - [jet_phi, ele_phi, mu_phi, ph_phi, MET_phi]
33
- - CALC_E
34
- - [jet_btag, 0, 0, 0, 0]
35
- - [0, ele_charge, mu_charge, 0, 0]
36
- - NODE_TYPE
37
- object_types: [vector, vector, vector, vector, single]
38
- scales: [0.1, 1, 1, 0.1, 1, 1, 1]
39
- # Number is the event index; Number % 10 is the fold. Pretraining trained
40
- # on folds 2-9 and tested on 0-1; here fold 0 validates and fold 1 tests.
41
- fold_var: Number
42
- fold_modulus: 10
43
- train_folds: [2, 3, 4, 5, 6, 7, 8, 9]
44
- validation_folds: [0]
45
- test_folds: [1]
46
- # Tasks use the labels, not the weights; the cache is that of
47
- # configs/delphes_pretraining.yaml.
48
- weight_var: weight
49
- cache: outputs/delphes_pretraining/events.pt
50
- # Events per step (tasks of context and query events).
51
- batch_size: 4096
52
- prepare_workers: 8
53
- loader_workers: 4
54
- pin_memory: true
55
-
56
- model:
57
- name: pfn
58
- hid_size: 128
59
- n_layers: 4
60
- n_heads: 8
61
- ffn_size: 512
62
- dropout: 0.0
63
- pair_bias: true
64
- pretrained: null
65
- max_classes: 10
66
- pfn_layers: 6
67
-
68
- task:
69
- name: pfn
70
- # The prior: classes per task, context events (log-uniform) and queries.
71
- prior_classes: null
72
- task_classes: [2, 10]
73
- context_events: [16, 2048]
74
- query_events: 256
75
- energy_jitter: 0.2
76
- steps_per_epoch: 1000
77
- validation_steps: 50
78
-
79
- train:
80
- max_epochs: 50
81
- optimizer: adamw
82
- learning_rate: 1.0e-4
83
- weight_decay: 0.01
84
- lr_decay: 0.95
85
- early_stopping: null
86
- best_metric: loss
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
configs/delphes_pretraining.yaml DELETED
@@ -1,61 +0,0 @@
1
- # 12-class pretraining on the Delphes samples of Ho et al. (2026), read from
2
- # the HWresearch/Delphes Hugging Face dataset.
3
- name: delphes_pretraining
4
-
5
- data:
6
- hf_repo: HWresearch/Delphes
7
- hf_revision: 76a6c362bfba8e766ba7255a5c08a55257f78d0e
8
- files:
9
- - {path: samples/higgs/top-associated/tth/ttH_NLO_inc.root, label: 0}
10
- - {path: samples/higgs/top-associated/thjb/tHjb_NLO_inc.root, label: 1}
11
- - {path: samples/higgs/ggf/ggF_NLO_inc.root, label: 2}
12
- - {path: samples/higgs/vbf/VBF_NLO_inc.root, label: 3}
13
- - {path: samples/higgs/vh/wh/WH_NLO_inc.root, label: 4}
14
- - {path: samples/higgs/vh/zh/ZH_NLO_inc.root, label: 5}
15
- - {path: samples/photon/ttyy/ttyy.root, label: 6}
16
- - {path: samples/top/multitop/tttt.root, label: 7}
17
- - {path: samples/top/single-top/SingleT_schan.root, label: 8}
18
- - {path: samples/top/ttbar/ttbar.root, label: 9}
19
- - {path: samples/top/ttv/ttW.root, label: 10}
20
- - {path: samples/top/multitop/ttt.root, label: 11}
21
- tree_name: output
22
- feature_branches:
23
- - [jet_pt, ele_pt, mu_pt, ph_pt, MET_met]
24
- - [jet_eta, ele_eta, mu_eta, ph_eta, 0]
25
- - [jet_phi, ele_phi, mu_phi, ph_phi, MET_phi]
26
- - CALC_E
27
- - [jet_btag, 0, 0, 0, 0]
28
- - [0, ele_charge, mu_charge, 0, 0]
29
- - NODE_TYPE
30
- object_types: [vector, vector, vector, vector, single]
31
- scales: [0.1, 1, 1, 0.1, 1, 1, 1]
32
- # Number is the event index; Number % 10 is the fold. Pretraining trained
33
- # on folds 2-9 and tested on 0-1; here fold 0 validates and fold 1 tests.
34
- fold_var: Number
35
- fold_modulus: 10
36
- train_folds: [2, 3, 4, 5, 6, 7, 8, 9]
37
- validation_folds: [0]
38
- test_folds: [1]
39
- weight_var: weight
40
- cache: outputs/delphes_pretraining/events.pt
41
- batch_size: 1024
42
- prepare_workers: 8
43
- loader_workers: 4
44
- pin_memory: true
45
-
46
- model:
47
- name: edge_network
48
- hid_size: 64
49
- out_size: 12
50
- n_layers: 4
51
- n_proc_steps: 4
52
-
53
- task:
54
- name: multiclass
55
-
56
- train:
57
- max_epochs: 100
58
- learning_rate: 1.0e-4
59
- lr_decay: 0.99
60
- early_stopping: {monitor: train_loss, patience: 5, min_delta: 0.0}
61
- best_metric: auc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
configs/delphes_tabicl.yaml DELETED
@@ -1,89 +0,0 @@
1
- # Meta-training of the TabICL network (src/gnn4colliders/tabular.py; BSD-3,
2
- # so meta-trained weights can be shared freely) on the classification tasks
3
- # of configs/delphes_pfn.yaml, on the fixed-width event rows of
4
- # configs/gamgam_tabicl.yaml. By default TabICL is frozen and its in-context
5
- # blocks learn LoRA updates (model.lora_rank; 0 trains all 28M weights).
6
- # task.prior_classes=[1,6,7,8,9,10,11] leaves out the five processes of the
7
- # GamGam task. Evaluate in context with
8
- # gnn4colliders evaluate configs/gamgam_tabicl.yaml split=validation \
9
- # checkpoint=outputs/delphes_tabicl/best.pt
10
- # Needs `uv sync --extra tabicl`.
11
- #
12
- # gnn4colliders train configs/delphes_tabicl.yaml
13
- name: delphes_tabicl
14
-
15
- data:
16
- hf_repo: HWresearch/Delphes
17
- hf_revision: 76a6c362bfba8e766ba7255a5c08a55257f78d0e
18
- files:
19
- - {path: samples/higgs/top-associated/tth/ttH_NLO_inc.root, label: 0}
20
- - {path: samples/higgs/top-associated/thjb/tHjb_NLO_inc.root, label: 1}
21
- - {path: samples/higgs/ggf/ggF_NLO_inc.root, label: 2}
22
- - {path: samples/higgs/vbf/VBF_NLO_inc.root, label: 3}
23
- - {path: samples/higgs/vh/wh/WH_NLO_inc.root, label: 4}
24
- - {path: samples/higgs/vh/zh/ZH_NLO_inc.root, label: 5}
25
- - {path: samples/photon/ttyy/ttyy.root, label: 6}
26
- - {path: samples/top/multitop/tttt.root, label: 7}
27
- - {path: samples/top/single-top/SingleT_schan.root, label: 8}
28
- - {path: samples/top/ttbar/ttbar.root, label: 9}
29
- - {path: samples/top/ttv/ttW.root, label: 10}
30
- - {path: samples/top/multitop/ttt.root, label: 11}
31
- tree_name: output
32
- feature_branches:
33
- - [jet_pt, ele_pt, mu_pt, ph_pt, MET_met]
34
- - [jet_eta, ele_eta, mu_eta, ph_eta, 0]
35
- - [jet_phi, ele_phi, mu_phi, ph_phi, MET_phi]
36
- - CALC_E
37
- - [jet_btag, 0, 0, 0, 0]
38
- - [0, ele_charge, mu_charge, 0, 0]
39
- - NODE_TYPE
40
- object_types: [vector, vector, vector, vector, single]
41
- scales: [0.1, 1, 1, 0.1, 1, 1, 1]
42
- # Number is the event index; Number % 10 is the fold. Pretraining trained
43
- # on folds 2-9 and tested on 0-1; here fold 0 validates and fold 1 tests.
44
- fold_var: Number
45
- fold_modulus: 10
46
- train_folds: [2, 3, 4, 5, 6, 7, 8, 9]
47
- validation_folds: [0]
48
- test_folds: [1]
49
- # Tasks use the labels, not the weights; the cache is that of
50
- # configs/delphes_pretraining.yaml.
51
- weight_var: weight
52
- cache: outputs/delphes_pretraining/events.pt
53
- # Events per step (tasks of context and query events). TabICL (28M
54
- # weights) recomputes activations in the backward pass.
55
- batch_size: 4096
56
- prepare_workers: 8
57
- loader_workers: 4
58
- pin_memory: true
59
-
60
- model:
61
- name: tabicl
62
- tabicl_checkpoint: tabicl-classifier-v2-20260212.ckpt
63
- # Leading jets, electrons, muons, photons and MET in a table row.
64
- slots: [6, 2, 2, 3, 1]
65
- # As in configs/gamgam_tabicl.yaml, which evaluates this model.
66
- relative_phi: false
67
- pair_objects: 0
68
- max_classes: 10
69
- lora_rank: 8
70
-
71
- task:
72
- name: pfn
73
- # The prior: classes per task, context events (log-uniform) and queries.
74
- prior_classes: null
75
- task_classes: [2, 10]
76
- context_events: [16, 2048]
77
- query_events: 256
78
- energy_jitter: 0.2
79
- steps_per_epoch: 500
80
- validation_steps: 50
81
-
82
- train:
83
- max_epochs: 20
84
- optimizer: adamw
85
- learning_rate: 1.0e-4
86
- weight_decay: 0.01
87
- lr_decay: 0.95
88
- early_stopping: null
89
- best_metric: loss
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
configs/delphes_tabpfn.yaml DELETED
@@ -1,89 +0,0 @@
1
- # Meta-training of the TabPFN-3.5 network (src/gnn4colliders/tabular.py) on
2
- # the classification tasks of configs/delphes_pfn.yaml, on the fixed-width
3
- # event rows of configs/gamgam_tabpfn.yaml. By default TabPFN is frozen and
4
- # its in-context blocks learn LoRA updates (model.lora_rank; 0 trains all
5
- # weights). task.prior_classes=[1,6,7,8,9,10,11] leaves out the five
6
- # processes of the GamGam task. Evaluate in context with
7
- # gnn4colliders evaluate configs/gamgam_tabpfn.yaml split=validation \
8
- # checkpoint=outputs/delphes_tabpfn/best.pt
9
- # Needs `uv sync --extra tabpfn` and the TabPFN-3.5 weights (docs/usage.md).
10
- #
11
- # gnn4colliders train configs/delphes_tabpfn.yaml
12
- name: delphes_tabpfn
13
-
14
- data:
15
- hf_repo: HWresearch/Delphes
16
- hf_revision: 76a6c362bfba8e766ba7255a5c08a55257f78d0e
17
- files:
18
- - {path: samples/higgs/top-associated/tth/ttH_NLO_inc.root, label: 0}
19
- - {path: samples/higgs/top-associated/thjb/tHjb_NLO_inc.root, label: 1}
20
- - {path: samples/higgs/ggf/ggF_NLO_inc.root, label: 2}
21
- - {path: samples/higgs/vbf/VBF_NLO_inc.root, label: 3}
22
- - {path: samples/higgs/vh/wh/WH_NLO_inc.root, label: 4}
23
- - {path: samples/higgs/vh/zh/ZH_NLO_inc.root, label: 5}
24
- - {path: samples/photon/ttyy/ttyy.root, label: 6}
25
- - {path: samples/top/multitop/tttt.root, label: 7}
26
- - {path: samples/top/single-top/SingleT_schan.root, label: 8}
27
- - {path: samples/top/ttbar/ttbar.root, label: 9}
28
- - {path: samples/top/ttv/ttW.root, label: 10}
29
- - {path: samples/top/multitop/ttt.root, label: 11}
30
- tree_name: output
31
- feature_branches:
32
- - [jet_pt, ele_pt, mu_pt, ph_pt, MET_met]
33
- - [jet_eta, ele_eta, mu_eta, ph_eta, 0]
34
- - [jet_phi, ele_phi, mu_phi, ph_phi, MET_phi]
35
- - CALC_E
36
- - [jet_btag, 0, 0, 0, 0]
37
- - [0, ele_charge, mu_charge, 0, 0]
38
- - NODE_TYPE
39
- object_types: [vector, vector, vector, vector, single]
40
- scales: [0.1, 1, 1, 0.1, 1, 1, 1]
41
- # Number is the event index; Number % 10 is the fold. Pretraining trained
42
- # on folds 2-9 and tested on 0-1; here fold 0 validates and fold 1 tests.
43
- fold_var: Number
44
- fold_modulus: 10
45
- train_folds: [2, 3, 4, 5, 6, 7, 8, 9]
46
- validation_folds: [0]
47
- test_folds: [1]
48
- # Tasks use the labels, not the weights; the cache is that of
49
- # configs/delphes_pretraining.yaml.
50
- weight_var: weight
51
- cache: outputs/delphes_pretraining/events.pt
52
- # Events per step (tasks of context and query events): one task of the
53
- # largest context. TabPFN recomputes activations in the backward pass.
54
- batch_size: 2304
55
- prepare_workers: 8
56
- loader_workers: 4
57
- pin_memory: true
58
-
59
- model:
60
- name: tabpfn
61
- tabpfn_version: v3.5
62
- tabpfn_checkpoint: null
63
- # Leading jets, electrons, muons, photons and MET in a table row.
64
- slots: [6, 2, 2, 3, 1]
65
- # As in configs/gamgam_tabpfn.yaml, which evaluates this model.
66
- relative_phi: false
67
- pair_objects: 0
68
- max_classes: 10
69
- lora_rank: 8
70
-
71
- task:
72
- name: pfn
73
- # The prior: classes per task, context events (log-uniform) and queries.
74
- prior_classes: null
75
- task_classes: [2, 10]
76
- context_events: [16, 2048]
77
- query_events: 256
78
- energy_jitter: 0.2
79
- steps_per_epoch: 500
80
- validation_steps: 50
81
-
82
- train:
83
- max_epochs: 20
84
- optimizer: adamw
85
- learning_rate: 1.0e-4
86
- weight_decay: 0.01
87
- lr_decay: 0.95
88
- early_stopping: null
89
- best_metric: loss
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
configs/gamgam.yaml DELETED
@@ -1,97 +0,0 @@
1
- # Higgs production-mode classification on ATLAS Open Data (13 TeV, 2020
2
- # release) GamGam MC: the 5-class from-scratch baseline of Ho et al.,
3
- # JINST 21 (2026) P08006, Tables 1 and 3. 2,473,335 events.
4
- #
5
- # gnn4colliders prepare configs/gamgam.yaml
6
- # gnn4colliders train configs/gamgam.yaml [train.fast=true] [train.seed=2]
7
- # gnn4colliders evaluate configs/gamgam.yaml
8
- name: gamgam
9
-
10
- data:
11
- hf_repo: ho22joshua/atlas_opendata
12
- hf_revision: d1bcc9ccaa304ea09e11f7d724342568f72a0d6e
13
- files:
14
- - path: GamGam/2020/MC/mc_341081.ttH125_gamgam.GamGam.root
15
- label: 0
16
- size_bytes: 217819076
17
- sha256: c498974926f6c55143d17fc4d3d6fa69bd3718ff92cf7d5cad5c3d67a836c7b7
18
- - path: GamGam/2020/MC/mc_343981.ggH125_gamgam.GamGam.root
19
- label: 1
20
- size_bytes: 218418347
21
- sha256: 05b3e6709e8836a7b862a7fde09086b3a9d4d494d62a6984d5df39d8daad13eb
22
- - path: GamGam/2020/MC/mc_345041.VBFH125_gamgam.GamGam.root
23
- label: 2
24
- size_bytes: 108616148
25
- sha256: 92334fce3bffc9eb6e0745dd6ef354d5ce33da764858511b8f9ca49b862b44e2
26
- - path: GamGam/2020/MC/mc_345318.WpH125J_Wincl_gamgam.GamGam.root
27
- label: 3
28
- size_bytes: 29757932
29
- sha256: f255a9c3c6935f976f788b6f32d9a8f6bf576eb12ecd03a6f3fd0a5dea9d1248
30
- - path: GamGam/2020/MC/mc_345319.ZH125J_Zincl_gamgam.GamGam.root
31
- label: 4
32
- size_bytes: 58701804
33
- sha256: c85623b04ac0176c64acdb2ecf8e992a63824cfc430a421df742319518ff6748
34
- class_names: [ttH, ggF, VBF, WH, ZH]
35
- tree_name: mini
36
- # Electrons and muons share the lep_* collection; b-tagging uses the
37
- # MV2c10 70% efficiency working point of the Open Data documentation.
38
- derived_branches:
39
- ele_pt: {source: lep_pt, where: {lep_type: 11}}
40
- ele_eta: {source: lep_eta, where: {lep_type: 11}}
41
- ele_phi: {source: lep_phi, where: {lep_type: 11}}
42
- ele_charge: {source: lep_charge, where: {lep_type: 11}}
43
- mu_pt: {source: lep_pt, where: {lep_type: 13}}
44
- mu_eta: {source: lep_eta, where: {lep_type: 13}}
45
- mu_phi: {source: lep_phi, where: {lep_type: 13}}
46
- mu_charge: {source: lep_charge, where: {lep_type: 13}}
47
- jet_btag: {source: jet_MV2c10, above: 0.8244273}
48
- # Object types (node types) as in pretraining: jet, electron, muon, photon, MET.
49
- feature_branches:
50
- - [jet_pt, ele_pt, mu_pt, photon_pt, met_et]
51
- - [jet_eta, ele_eta, mu_eta, photon_eta, 0]
52
- - [jet_phi, ele_phi, mu_phi, photon_phi, met_phi]
53
- - CALC_E
54
- - [jet_btag, 0, 0, 0, 0]
55
- - [0, ele_charge, mu_charge, 0, 0]
56
- - NODE_TYPE
57
- object_types: [vector, vector, vector, vector, single]
58
- # Momenta are in MeV; 1e-4 gives the pretraining unit of 10 GeV.
59
- scales: [1.0e-4, 1, 1, 1.0e-4, 1, 1, 1]
60
- # eventNumber % 10 gives the paper's 80:10:10 train:validation:test split.
61
- fold_var: eventNumber
62
- fold_modulus: 10
63
- train_folds: [0, 1, 2, 3, 4, 5, 6, 7]
64
- validation_folds: [8]
65
- test_folds: [9]
66
- # Unweighted: each event counts once and classes are balanced by the
67
- # per-class mean loss (23% of ttH events have mcWeight = -1).
68
- weight_var: null
69
- cache: outputs/gamgam/events.pt
70
- batch_size: 1024
71
- prepare_workers: 8
72
- loader_workers: 4
73
- pin_memory: true
74
-
75
- # Baseline GNN of Ho et al. (2026), Table 1.
76
- model:
77
- name: edge_network
78
- hid_size: 64
79
- out_size: 5
80
- n_layers: 4
81
- n_proc_steps: 4
82
- dropout: 0.0
83
-
84
- task:
85
- name: multiclass
86
-
87
- # Sections 3.2 and 3.5: Adam at 1e-4 decayed by 0.99 per epoch, stopped
88
- # after 5 epochs without training-loss improvement; the epoch with the best
89
- # validation AUC is kept (best.pt). train.fast=true adds torch.compile, CUDA
90
- # graphs, bfloat16 and TF32 (about 3x faster on an A100; results agree to
91
- # rounding, not bitwise).
92
- train:
93
- max_epochs: 200
94
- learning_rate: 1.0e-4
95
- lr_decay: 0.99
96
- early_stopping: {monitor: train_loss, patience: 5, min_delta: 0.0}
97
- best_metric: auc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
configs/gamgam_deep_sets.yaml DELETED
@@ -1,88 +0,0 @@
1
- # The GamGam 5-class task with Deep Sets (a per-object MLP, summed): the
2
- # baseline without object interactions (no paper reference). Uses the cache
3
- # of configs/gamgam.yaml.
4
- #
5
- # gnn4colliders train configs/gamgam_deep_sets.yaml
6
- name: gamgam_deep_sets
7
-
8
- data:
9
- hf_repo: ho22joshua/atlas_opendata
10
- hf_revision: d1bcc9ccaa304ea09e11f7d724342568f72a0d6e
11
- files:
12
- - path: GamGam/2020/MC/mc_341081.ttH125_gamgam.GamGam.root
13
- label: 0
14
- size_bytes: 217819076
15
- sha256: c498974926f6c55143d17fc4d3d6fa69bd3718ff92cf7d5cad5c3d67a836c7b7
16
- - path: GamGam/2020/MC/mc_343981.ggH125_gamgam.GamGam.root
17
- label: 1
18
- size_bytes: 218418347
19
- sha256: 05b3e6709e8836a7b862a7fde09086b3a9d4d494d62a6984d5df39d8daad13eb
20
- - path: GamGam/2020/MC/mc_345041.VBFH125_gamgam.GamGam.root
21
- label: 2
22
- size_bytes: 108616148
23
- sha256: 92334fce3bffc9eb6e0745dd6ef354d5ce33da764858511b8f9ca49b862b44e2
24
- - path: GamGam/2020/MC/mc_345318.WpH125J_Wincl_gamgam.GamGam.root
25
- label: 3
26
- size_bytes: 29757932
27
- sha256: f255a9c3c6935f976f788b6f32d9a8f6bf576eb12ecd03a6f3fd0a5dea9d1248
28
- - path: GamGam/2020/MC/mc_345319.ZH125J_Zincl_gamgam.GamGam.root
29
- label: 4
30
- size_bytes: 58701804
31
- sha256: c85623b04ac0176c64acdb2ecf8e992a63824cfc430a421df742319518ff6748
32
- class_names: [ttH, ggF, VBF, WH, ZH]
33
- tree_name: mini
34
- # Electrons and muons share the lep_* collection; b-tagging uses the
35
- # MV2c10 70% efficiency working point of the Open Data documentation.
36
- derived_branches:
37
- ele_pt: {source: lep_pt, where: {lep_type: 11}}
38
- ele_eta: {source: lep_eta, where: {lep_type: 11}}
39
- ele_phi: {source: lep_phi, where: {lep_type: 11}}
40
- ele_charge: {source: lep_charge, where: {lep_type: 11}}
41
- mu_pt: {source: lep_pt, where: {lep_type: 13}}
42
- mu_eta: {source: lep_eta, where: {lep_type: 13}}
43
- mu_phi: {source: lep_phi, where: {lep_type: 13}}
44
- mu_charge: {source: lep_charge, where: {lep_type: 13}}
45
- jet_btag: {source: jet_MV2c10, above: 0.8244273}
46
- # Object types (node types) as in pretraining: jet, electron, muon, photon, MET.
47
- feature_branches:
48
- - [jet_pt, ele_pt, mu_pt, photon_pt, met_et]
49
- - [jet_eta, ele_eta, mu_eta, photon_eta, 0]
50
- - [jet_phi, ele_phi, mu_phi, photon_phi, met_phi]
51
- - CALC_E
52
- - [jet_btag, 0, 0, 0, 0]
53
- - [0, ele_charge, mu_charge, 0, 0]
54
- - NODE_TYPE
55
- object_types: [vector, vector, vector, vector, single]
56
- # Momenta are in MeV; 1e-4 gives the pretraining unit of 10 GeV.
57
- scales: [1.0e-4, 1, 1, 1.0e-4, 1, 1, 1]
58
- # eventNumber % 10 gives the paper's 80:10:10 train:validation:test split.
59
- fold_var: eventNumber
60
- fold_modulus: 10
61
- train_folds: [0, 1, 2, 3, 4, 5, 6, 7]
62
- validation_folds: [8]
63
- test_folds: [9]
64
- # Unweighted: each event counts once and classes are balanced by the
65
- # per-class mean loss (23% of ttH events have mcWeight = -1).
66
- weight_var: null
67
- cache: outputs/gamgam/events.pt
68
- batch_size: 1024
69
- prepare_workers: 8
70
- loader_workers: 4
71
- pin_memory: true
72
-
73
- model:
74
- name: deep_sets
75
- hid_size: 64
76
- out_size: 5
77
- n_layers: 3
78
- dropout: 0.0
79
-
80
- task:
81
- name: multiclass
82
-
83
- train:
84
- max_epochs: 100
85
- learning_rate: 1.0e-4
86
- lr_decay: 0.99
87
- early_stopping: {monitor: train_loss, patience: 5, min_delta: 0.0}
88
- best_metric: auc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
configs/gamgam_finetune.yaml DELETED
@@ -1,97 +0,0 @@
1
- # The GamGam 5-class task fine-tuned from the multiclass pretrained model of
2
- # Ho et al. (2026): its edge network with a new 5-class classifier, all
3
- # weights trained. Uses the cache of configs/gamgam.yaml.
4
- #
5
- # gnn4colliders train configs/gamgam_finetune.yaml
6
- name: gamgam_finetune
7
-
8
- data:
9
- hf_repo: ho22joshua/atlas_opendata
10
- hf_revision: d1bcc9ccaa304ea09e11f7d724342568f72a0d6e
11
- files:
12
- - path: GamGam/2020/MC/mc_341081.ttH125_gamgam.GamGam.root
13
- label: 0
14
- size_bytes: 217819076
15
- sha256: c498974926f6c55143d17fc4d3d6fa69bd3718ff92cf7d5cad5c3d67a836c7b7
16
- - path: GamGam/2020/MC/mc_343981.ggH125_gamgam.GamGam.root
17
- label: 1
18
- size_bytes: 218418347
19
- sha256: 05b3e6709e8836a7b862a7fde09086b3a9d4d494d62a6984d5df39d8daad13eb
20
- - path: GamGam/2020/MC/mc_345041.VBFH125_gamgam.GamGam.root
21
- label: 2
22
- size_bytes: 108616148
23
- sha256: 92334fce3bffc9eb6e0745dd6ef354d5ce33da764858511b8f9ca49b862b44e2
24
- - path: GamGam/2020/MC/mc_345318.WpH125J_Wincl_gamgam.GamGam.root
25
- label: 3
26
- size_bytes: 29757932
27
- sha256: f255a9c3c6935f976f788b6f32d9a8f6bf576eb12ecd03a6f3fd0a5dea9d1248
28
- - path: GamGam/2020/MC/mc_345319.ZH125J_Zincl_gamgam.GamGam.root
29
- label: 4
30
- size_bytes: 58701804
31
- sha256: c85623b04ac0176c64acdb2ecf8e992a63824cfc430a421df742319518ff6748
32
- class_names: [ttH, ggF, VBF, WH, ZH]
33
- tree_name: mini
34
- # Electrons and muons share the lep_* collection; b-tagging uses the
35
- # MV2c10 70% efficiency working point of the Open Data documentation.
36
- derived_branches:
37
- ele_pt: {source: lep_pt, where: {lep_type: 11}}
38
- ele_eta: {source: lep_eta, where: {lep_type: 11}}
39
- ele_phi: {source: lep_phi, where: {lep_type: 11}}
40
- ele_charge: {source: lep_charge, where: {lep_type: 11}}
41
- mu_pt: {source: lep_pt, where: {lep_type: 13}}
42
- mu_eta: {source: lep_eta, where: {lep_type: 13}}
43
- mu_phi: {source: lep_phi, where: {lep_type: 13}}
44
- mu_charge: {source: lep_charge, where: {lep_type: 13}}
45
- jet_btag: {source: jet_MV2c10, above: 0.8244273}
46
- # Object types (node types) as in pretraining: jet, electron, muon, photon, MET.
47
- feature_branches:
48
- - [jet_pt, ele_pt, mu_pt, photon_pt, met_et]
49
- - [jet_eta, ele_eta, mu_eta, photon_eta, 0]
50
- - [jet_phi, ele_phi, mu_phi, photon_phi, met_phi]
51
- - CALC_E
52
- - [jet_btag, 0, 0, 0, 0]
53
- - [0, ele_charge, mu_charge, 0, 0]
54
- - NODE_TYPE
55
- object_types: [vector, vector, vector, vector, single]
56
- # Momenta are in MeV; 1e-4 gives the pretraining unit of 10 GeV.
57
- scales: [1.0e-4, 1, 1, 1.0e-4, 1, 1, 1]
58
- # eventNumber % 10 gives the paper's 80:10:10 train:validation:test split.
59
- fold_var: eventNumber
60
- fold_modulus: 10
61
- train_folds: [0, 1, 2, 3, 4, 5, 6, 7]
62
- validation_folds: [8]
63
- test_folds: [9]
64
- # Unweighted: each event counts once and classes are balanced by the
65
- # per-class mean loss (23% of ttH events have mcWeight = -1).
66
- weight_var: null
67
- cache: outputs/gamgam/events.pt
68
- batch_size: 1024
69
- prepare_workers: 8
70
- loader_workers: 4
71
- pin_memory: true
72
-
73
- # The pretrained network's size (Pretrained_GNN/*/config.yaml).
74
- model:
75
- name: edge_network
76
- pretrained: Pretrained_GNN/multiclass_pretrained_model_12/model_epoch_71.pt
77
- freeze_backbone: false
78
- hid_size: 64
79
- out_size: 5
80
- n_layers: 4
81
- n_proc_steps: 4
82
- dropout: 0.0
83
-
84
- task:
85
- name: multiclass
86
-
87
- # Sections 3.2 and 3.5: Adam at 1e-4 decayed by 0.99 per epoch, stopped
88
- # after 5 epochs without training-loss improvement; the epoch with the best
89
- # validation AUC is kept (best.pt). train.fast=true adds torch.compile, CUDA
90
- # graphs, bfloat16 and TF32 (about 3x faster on an A100; results agree to
91
- # rounding, not bitwise).
92
- train:
93
- max_epochs: 200
94
- learning_rate: 1.0e-4
95
- lr_decay: 0.99
96
- early_stopping: {monitor: train_loss, patience: 5, min_delta: 0.0}
97
- best_metric: auc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
configs/gamgam_jepa_finetune.yaml DELETED
@@ -1,95 +0,0 @@
1
- # The GamGam 5-class task with the transformer encoder pretrained by JEPA on
2
- # the Delphes samples (configs/delphes_jepa.yaml). model.pretrained=null
3
- # trains the same architecture from scratch. Uses the cache of
4
- # configs/gamgam.yaml.
5
- #
6
- # gnn4colliders train configs/gamgam_jepa_finetune.yaml
7
- name: gamgam_jepa_finetune
8
-
9
- data:
10
- hf_repo: ho22joshua/atlas_opendata
11
- hf_revision: d1bcc9ccaa304ea09e11f7d724342568f72a0d6e
12
- files:
13
- - path: GamGam/2020/MC/mc_341081.ttH125_gamgam.GamGam.root
14
- label: 0
15
- size_bytes: 217819076
16
- sha256: c498974926f6c55143d17fc4d3d6fa69bd3718ff92cf7d5cad5c3d67a836c7b7
17
- - path: GamGam/2020/MC/mc_343981.ggH125_gamgam.GamGam.root
18
- label: 1
19
- size_bytes: 218418347
20
- sha256: 05b3e6709e8836a7b862a7fde09086b3a9d4d494d62a6984d5df39d8daad13eb
21
- - path: GamGam/2020/MC/mc_345041.VBFH125_gamgam.GamGam.root
22
- label: 2
23
- size_bytes: 108616148
24
- sha256: 92334fce3bffc9eb6e0745dd6ef354d5ce33da764858511b8f9ca49b862b44e2
25
- - path: GamGam/2020/MC/mc_345318.WpH125J_Wincl_gamgam.GamGam.root
26
- label: 3
27
- size_bytes: 29757932
28
- sha256: f255a9c3c6935f976f788b6f32d9a8f6bf576eb12ecd03a6f3fd0a5dea9d1248
29
- - path: GamGam/2020/MC/mc_345319.ZH125J_Zincl_gamgam.GamGam.root
30
- label: 4
31
- size_bytes: 58701804
32
- sha256: c85623b04ac0176c64acdb2ecf8e992a63824cfc430a421df742319518ff6748
33
- class_names: [ttH, ggF, VBF, WH, ZH]
34
- tree_name: mini
35
- # Electrons and muons share the lep_* collection; b-tagging uses the
36
- # MV2c10 70% efficiency working point of the Open Data documentation.
37
- derived_branches:
38
- ele_pt: {source: lep_pt, where: {lep_type: 11}}
39
- ele_eta: {source: lep_eta, where: {lep_type: 11}}
40
- ele_phi: {source: lep_phi, where: {lep_type: 11}}
41
- ele_charge: {source: lep_charge, where: {lep_type: 11}}
42
- mu_pt: {source: lep_pt, where: {lep_type: 13}}
43
- mu_eta: {source: lep_eta, where: {lep_type: 13}}
44
- mu_phi: {source: lep_phi, where: {lep_type: 13}}
45
- mu_charge: {source: lep_charge, where: {lep_type: 13}}
46
- jet_btag: {source: jet_MV2c10, above: 0.8244273}
47
- # Object types (node types) as in pretraining: jet, electron, muon, photon, MET.
48
- feature_branches:
49
- - [jet_pt, ele_pt, mu_pt, photon_pt, met_et]
50
- - [jet_eta, ele_eta, mu_eta, photon_eta, 0]
51
- - [jet_phi, ele_phi, mu_phi, photon_phi, met_phi]
52
- - CALC_E
53
- - [jet_btag, 0, 0, 0, 0]
54
- - [0, ele_charge, mu_charge, 0, 0]
55
- - NODE_TYPE
56
- object_types: [vector, vector, vector, vector, single]
57
- # Momenta are in MeV; 1e-4 gives the pretraining unit of 10 GeV.
58
- scales: [1.0e-4, 1, 1, 1.0e-4, 1, 1, 1]
59
- # eventNumber % 10 gives the paper's 80:10:10 train:validation:test split.
60
- fold_var: eventNumber
61
- fold_modulus: 10
62
- train_folds: [0, 1, 2, 3, 4, 5, 6, 7]
63
- validation_folds: [8]
64
- test_folds: [9]
65
- # Unweighted: each event counts once and classes are balanced by the
66
- # per-class mean loss (23% of ttH events have mcWeight = -1).
67
- weight_var: null
68
- cache: outputs/gamgam/events.pt
69
- batch_size: 1024
70
- prepare_workers: 8
71
- loader_workers: 4
72
- pin_memory: true
73
-
74
- model:
75
- name: transformer
76
- out_size: 5
77
- hid_size: 128
78
- n_layers: 4
79
- n_heads: 8
80
- ffn_size: 512
81
- dropout: 0.0
82
- pair_bias: true
83
- pretrained: outputs/delphes_jepa/last.pt
84
- # true trains only the classifier (linear probe).
85
- freeze_backbone: false
86
-
87
- task:
88
- name: multiclass
89
-
90
- train:
91
- max_epochs: 100
92
- learning_rate: 1.0e-4
93
- lr_decay: 0.99
94
- early_stopping: {monitor: train_loss, patience: 5, min_delta: 0.0}
95
- best_metric: auc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
configs/gamgam_pfn.yaml DELETED
@@ -1,90 +0,0 @@
1
- # The GamGam 5-class task classified in context by the PFN meta-trained on the
2
- # Delphes samples (configs/delphes_pfn.yaml), with no training on GamGam:
3
- # data.train_events labelled training events, an equal number per class, are
4
- # the context. The model section must match the meta-training. Uses the
5
- # cache of configs/gamgam.yaml.
6
- #
7
- # gnn4colliders evaluate configs/gamgam_pfn.yaml split=validation
8
- name: gamgam_pfn
9
- checkpoint: outputs/delphes_pfn/best.pt
10
-
11
- data:
12
- hf_repo: ho22joshua/atlas_opendata
13
- hf_revision: d1bcc9ccaa304ea09e11f7d724342568f72a0d6e
14
- files:
15
- - path: GamGam/2020/MC/mc_341081.ttH125_gamgam.GamGam.root
16
- label: 0
17
- size_bytes: 217819076
18
- sha256: c498974926f6c55143d17fc4d3d6fa69bd3718ff92cf7d5cad5c3d67a836c7b7
19
- - path: GamGam/2020/MC/mc_343981.ggH125_gamgam.GamGam.root
20
- label: 1
21
- size_bytes: 218418347
22
- sha256: 05b3e6709e8836a7b862a7fde09086b3a9d4d494d62a6984d5df39d8daad13eb
23
- - path: GamGam/2020/MC/mc_345041.VBFH125_gamgam.GamGam.root
24
- label: 2
25
- size_bytes: 108616148
26
- sha256: 92334fce3bffc9eb6e0745dd6ef354d5ce33da764858511b8f9ca49b862b44e2
27
- - path: GamGam/2020/MC/mc_345318.WpH125J_Wincl_gamgam.GamGam.root
28
- label: 3
29
- size_bytes: 29757932
30
- sha256: f255a9c3c6935f976f788b6f32d9a8f6bf576eb12ecd03a6f3fd0a5dea9d1248
31
- - path: GamGam/2020/MC/mc_345319.ZH125J_Zincl_gamgam.GamGam.root
32
- label: 4
33
- size_bytes: 58701804
34
- sha256: c85623b04ac0176c64acdb2ecf8e992a63824cfc430a421df742319518ff6748
35
- class_names: [ttH, ggF, VBF, WH, ZH]
36
- tree_name: mini
37
- # Electrons and muons share the lep_* collection; b-tagging uses the
38
- # MV2c10 70% efficiency working point of the Open Data documentation.
39
- derived_branches:
40
- ele_pt: {source: lep_pt, where: {lep_type: 11}}
41
- ele_eta: {source: lep_eta, where: {lep_type: 11}}
42
- ele_phi: {source: lep_phi, where: {lep_type: 11}}
43
- ele_charge: {source: lep_charge, where: {lep_type: 11}}
44
- mu_pt: {source: lep_pt, where: {lep_type: 13}}
45
- mu_eta: {source: lep_eta, where: {lep_type: 13}}
46
- mu_phi: {source: lep_phi, where: {lep_type: 13}}
47
- mu_charge: {source: lep_charge, where: {lep_type: 13}}
48
- jet_btag: {source: jet_MV2c10, above: 0.8244273}
49
- # Object types (node types) as in pretraining: jet, electron, muon, photon, MET.
50
- feature_branches:
51
- - [jet_pt, ele_pt, mu_pt, photon_pt, met_et]
52
- - [jet_eta, ele_eta, mu_eta, photon_eta, 0]
53
- - [jet_phi, ele_phi, mu_phi, photon_phi, met_phi]
54
- - CALC_E
55
- - [jet_btag, 0, 0, 0, 0]
56
- - [0, ele_charge, mu_charge, 0, 0]
57
- - NODE_TYPE
58
- object_types: [vector, vector, vector, vector, single]
59
- # Momenta are in MeV; 1e-4 gives the pretraining unit of 10 GeV.
60
- scales: [1.0e-4, 1, 1, 1.0e-4, 1, 1, 1]
61
- # eventNumber % 10 gives the paper's 80:10:10 train:validation:test split.
62
- fold_var: eventNumber
63
- fold_modulus: 10
64
- train_folds: [0, 1, 2, 3, 4, 5, 6, 7]
65
- validation_folds: [8]
66
- test_folds: [9]
67
- # Labelled events (equal per class) that form the context.
68
- train_events: 1000
69
- # Unweighted: each event counts once and classes are balanced by the
70
- # per-class mean loss (23% of ttH events have mcWeight = -1).
71
- weight_var: null
72
- cache: outputs/gamgam/events.pt
73
- batch_size: 1024
74
- prepare_workers: 8
75
- loader_workers: 4
76
- pin_memory: true
77
-
78
- model:
79
- name: pfn
80
- out_size: 5
81
- hid_size: 128
82
- n_layers: 4
83
- n_heads: 8
84
- ffn_size: 512
85
- pair_bias: true
86
- max_classes: 10
87
- pfn_layers: 6
88
-
89
- task:
90
- name: multiclass
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
configs/gamgam_tabdpt.yaml DELETED
@@ -1,91 +0,0 @@
1
- # The GamGam 5-class task classified in context by TabDPT (Layer 6;
2
- # Apache-2.0 weights from Hugging Face), with no training: data.train_events
3
- # labelled training events, an equal number per class, are the context of
4
- # every prediction (src/gnn4colliders/tabular.py). TabDPT is trained on real
5
- # tables; with model.tabdpt_context_size each event's context is its nearest
6
- # context events (retrieval), which allows contexts beyond what fits at once.
7
- # Needs `uv sync --extra tabdpt`. Uses the cache of configs/gamgam.yaml.
8
- #
9
- # gnn4colliders evaluate configs/gamgam_tabdpt.yaml split=validation
10
- name: gamgam_tabdpt
11
-
12
- data:
13
- hf_repo: ho22joshua/atlas_opendata
14
- hf_revision: d1bcc9ccaa304ea09e11f7d724342568f72a0d6e
15
- files:
16
- - path: GamGam/2020/MC/mc_341081.ttH125_gamgam.GamGam.root
17
- label: 0
18
- size_bytes: 217819076
19
- sha256: c498974926f6c55143d17fc4d3d6fa69bd3718ff92cf7d5cad5c3d67a836c7b7
20
- - path: GamGam/2020/MC/mc_343981.ggH125_gamgam.GamGam.root
21
- label: 1
22
- size_bytes: 218418347
23
- sha256: 05b3e6709e8836a7b862a7fde09086b3a9d4d494d62a6984d5df39d8daad13eb
24
- - path: GamGam/2020/MC/mc_345041.VBFH125_gamgam.GamGam.root
25
- label: 2
26
- size_bytes: 108616148
27
- sha256: 92334fce3bffc9eb6e0745dd6ef354d5ce33da764858511b8f9ca49b862b44e2
28
- - path: GamGam/2020/MC/mc_345318.WpH125J_Wincl_gamgam.GamGam.root
29
- label: 3
30
- size_bytes: 29757932
31
- sha256: f255a9c3c6935f976f788b6f32d9a8f6bf576eb12ecd03a6f3fd0a5dea9d1248
32
- - path: GamGam/2020/MC/mc_345319.ZH125J_Zincl_gamgam.GamGam.root
33
- label: 4
34
- size_bytes: 58701804
35
- sha256: c85623b04ac0176c64acdb2ecf8e992a63824cfc430a421df742319518ff6748
36
- class_names: [ttH, ggF, VBF, WH, ZH]
37
- tree_name: mini
38
- # Electrons and muons share the lep_* collection; b-tagging uses the
39
- # MV2c10 70% efficiency working point of the Open Data documentation.
40
- derived_branches:
41
- ele_pt: {source: lep_pt, where: {lep_type: 11}}
42
- ele_eta: {source: lep_eta, where: {lep_type: 11}}
43
- ele_phi: {source: lep_phi, where: {lep_type: 11}}
44
- ele_charge: {source: lep_charge, where: {lep_type: 11}}
45
- mu_pt: {source: lep_pt, where: {lep_type: 13}}
46
- mu_eta: {source: lep_eta, where: {lep_type: 13}}
47
- mu_phi: {source: lep_phi, where: {lep_type: 13}}
48
- mu_charge: {source: lep_charge, where: {lep_type: 13}}
49
- jet_btag: {source: jet_MV2c10, above: 0.8244273}
50
- # Object types (node types) as in pretraining: jet, electron, muon, photon, MET.
51
- feature_branches:
52
- - [jet_pt, ele_pt, mu_pt, photon_pt, met_et]
53
- - [jet_eta, ele_eta, mu_eta, photon_eta, 0]
54
- - [jet_phi, ele_phi, mu_phi, photon_phi, met_phi]
55
- - CALC_E
56
- - [jet_btag, 0, 0, 0, 0]
57
- - [0, ele_charge, mu_charge, 0, 0]
58
- - NODE_TYPE
59
- object_types: [vector, vector, vector, vector, single]
60
- # Momenta are in MeV; 1e-4 gives the pretraining unit of 10 GeV.
61
- scales: [1.0e-4, 1, 1, 1.0e-4, 1, 1, 1]
62
- # eventNumber % 10 gives the paper's 80:10:10 train:validation:test split.
63
- fold_var: eventNumber
64
- fold_modulus: 10
65
- train_folds: [0, 1, 2, 3, 4, 5, 6, 7]
66
- validation_folds: [8]
67
- test_folds: [9]
68
- # Labelled events (equal per class) that form the context.
69
- train_events: 1000
70
- # Unweighted: each event counts once and classes are balanced by the
71
- # per-class mean loss (23% of ttH events have mcWeight = -1).
72
- weight_var: null
73
- cache: outputs/gamgam/events.pt
74
- # Events classified per TabDPT call.
75
- batch_size: 8192
76
- prepare_workers: 8
77
- loader_workers: 4
78
- pin_memory: true
79
-
80
- model:
81
- name: tabdpt
82
- out_size: 5
83
- tabdpt_estimators: 8
84
- tabdpt_context_size: null
85
- # Leading jets, electrons, muons, photons and MET in a table row.
86
- slots: [6, 2, 2, 3, 1]
87
- relative_phi: false
88
- pair_objects: 0
89
-
90
- task:
91
- name: multiclass
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
configs/gamgam_tabicl.yaml DELETED
@@ -1,95 +0,0 @@
1
- # The GamGam 5-class task classified in context by TabICLv2 (Inria; BSD-3
2
- # weights from Hugging Face), with no training: data.train_events labelled
3
- # training events, an equal number per class, are the context of every
4
- # prediction (src/gnn4colliders/tabular.py). Needs `uv sync --extra tabicl`.
5
- # Uses the cache of configs/gamgam.yaml. The rows are those of
6
- # configs/gamgam_tabpfn.yaml; model.relative_phi=true and
7
- # model.pair_objects=4 add the physics features.
8
- #
9
- # gnn4colliders evaluate configs/gamgam_tabicl.yaml split=validation
10
- #
11
- # With checkpoint=outputs/delphes_tabicl/best.pt, the TabICL network
12
- # meta-trained by configs/delphes_tabicl.yaml (model.lora_rank and
13
- # model.max_classes must match it) classifies with its own forward pass.
14
- name: gamgam_tabicl
15
-
16
- data:
17
- hf_repo: ho22joshua/atlas_opendata
18
- hf_revision: d1bcc9ccaa304ea09e11f7d724342568f72a0d6e
19
- files:
20
- - path: GamGam/2020/MC/mc_341081.ttH125_gamgam.GamGam.root
21
- label: 0
22
- size_bytes: 217819076
23
- sha256: c498974926f6c55143d17fc4d3d6fa69bd3718ff92cf7d5cad5c3d67a836c7b7
24
- - path: GamGam/2020/MC/mc_343981.ggH125_gamgam.GamGam.root
25
- label: 1
26
- size_bytes: 218418347
27
- sha256: 05b3e6709e8836a7b862a7fde09086b3a9d4d494d62a6984d5df39d8daad13eb
28
- - path: GamGam/2020/MC/mc_345041.VBFH125_gamgam.GamGam.root
29
- label: 2
30
- size_bytes: 108616148
31
- sha256: 92334fce3bffc9eb6e0745dd6ef354d5ce33da764858511b8f9ca49b862b44e2
32
- - path: GamGam/2020/MC/mc_345318.WpH125J_Wincl_gamgam.GamGam.root
33
- label: 3
34
- size_bytes: 29757932
35
- sha256: f255a9c3c6935f976f788b6f32d9a8f6bf576eb12ecd03a6f3fd0a5dea9d1248
36
- - path: GamGam/2020/MC/mc_345319.ZH125J_Zincl_gamgam.GamGam.root
37
- label: 4
38
- size_bytes: 58701804
39
- sha256: c85623b04ac0176c64acdb2ecf8e992a63824cfc430a421df742319518ff6748
40
- class_names: [ttH, ggF, VBF, WH, ZH]
41
- tree_name: mini
42
- # Electrons and muons share the lep_* collection; b-tagging uses the
43
- # MV2c10 70% efficiency working point of the Open Data documentation.
44
- derived_branches:
45
- ele_pt: {source: lep_pt, where: {lep_type: 11}}
46
- ele_eta: {source: lep_eta, where: {lep_type: 11}}
47
- ele_phi: {source: lep_phi, where: {lep_type: 11}}
48
- ele_charge: {source: lep_charge, where: {lep_type: 11}}
49
- mu_pt: {source: lep_pt, where: {lep_type: 13}}
50
- mu_eta: {source: lep_eta, where: {lep_type: 13}}
51
- mu_phi: {source: lep_phi, where: {lep_type: 13}}
52
- mu_charge: {source: lep_charge, where: {lep_type: 13}}
53
- jet_btag: {source: jet_MV2c10, above: 0.8244273}
54
- # Object types (node types) as in pretraining: jet, electron, muon, photon, MET.
55
- feature_branches:
56
- - [jet_pt, ele_pt, mu_pt, photon_pt, met_et]
57
- - [jet_eta, ele_eta, mu_eta, photon_eta, 0]
58
- - [jet_phi, ele_phi, mu_phi, photon_phi, met_phi]
59
- - CALC_E
60
- - [jet_btag, 0, 0, 0, 0]
61
- - [0, ele_charge, mu_charge, 0, 0]
62
- - NODE_TYPE
63
- object_types: [vector, vector, vector, vector, single]
64
- # Momenta are in MeV; 1e-4 gives the pretraining unit of 10 GeV.
65
- scales: [1.0e-4, 1, 1, 1.0e-4, 1, 1, 1]
66
- # eventNumber % 10 gives the paper's 80:10:10 train:validation:test split.
67
- fold_var: eventNumber
68
- fold_modulus: 10
69
- train_folds: [0, 1, 2, 3, 4, 5, 6, 7]
70
- validation_folds: [8]
71
- test_folds: [9]
72
- # Labelled events (equal per class) that form the context.
73
- train_events: 1000
74
- # Unweighted: each event counts once and classes are balanced by the
75
- # per-class mean loss (23% of ttH events have mcWeight = -1).
76
- weight_var: null
77
- cache: outputs/gamgam/events.pt
78
- # Events classified per TabICL call.
79
- batch_size: 8192
80
- prepare_workers: 8
81
- loader_workers: 4
82
- pin_memory: true
83
-
84
- model:
85
- name: tabicl
86
- out_size: 5
87
- tabicl_checkpoint: tabicl-classifier-v2-20260212.ckpt
88
- tabicl_estimators: 8
89
- # Leading jets, electrons, muons, photons and MET in a table row.
90
- slots: [6, 2, 2, 3, 1]
91
- relative_phi: false
92
- pair_objects: 0
93
-
94
- task:
95
- name: multiclass
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
configs/gamgam_tabpfn.yaml DELETED
@@ -1,96 +0,0 @@
1
- # The GamGam 5-class task classified in context by TabPFN (Prior Labs), with
2
- # no training: data.train_events labelled training events, an equal number
3
- # per class, are the context of every prediction (src/gnn4colliders/tabular.py).
4
- # Needs `uv sync --extra tabpfn` and, for TabPFN-2.5 and later, a one-time
5
- # login (a token in ~/.cache/tabpfn or TABPFN_TOKEN). Uses the cache of
6
- # configs/gamgam.yaml.
7
- #
8
- # gnn4colliders evaluate configs/gamgam_tabpfn.yaml split=validation
9
- #
10
- # With checkpoint=outputs/delphes_tabpfn/best.pt, the TabPFN network
11
- # meta-trained by configs/delphes_tabpfn.yaml (model.lora_rank and
12
- # model.max_classes must match it) classifies with its own forward pass.
13
- name: gamgam_tabpfn
14
-
15
- data:
16
- hf_repo: ho22joshua/atlas_opendata
17
- hf_revision: d1bcc9ccaa304ea09e11f7d724342568f72a0d6e
18
- files:
19
- - path: GamGam/2020/MC/mc_341081.ttH125_gamgam.GamGam.root
20
- label: 0
21
- size_bytes: 217819076
22
- sha256: c498974926f6c55143d17fc4d3d6fa69bd3718ff92cf7d5cad5c3d67a836c7b7
23
- - path: GamGam/2020/MC/mc_343981.ggH125_gamgam.GamGam.root
24
- label: 1
25
- size_bytes: 218418347
26
- sha256: 05b3e6709e8836a7b862a7fde09086b3a9d4d494d62a6984d5df39d8daad13eb
27
- - path: GamGam/2020/MC/mc_345041.VBFH125_gamgam.GamGam.root
28
- label: 2
29
- size_bytes: 108616148
30
- sha256: 92334fce3bffc9eb6e0745dd6ef354d5ce33da764858511b8f9ca49b862b44e2
31
- - path: GamGam/2020/MC/mc_345318.WpH125J_Wincl_gamgam.GamGam.root
32
- label: 3
33
- size_bytes: 29757932
34
- sha256: f255a9c3c6935f976f788b6f32d9a8f6bf576eb12ecd03a6f3fd0a5dea9d1248
35
- - path: GamGam/2020/MC/mc_345319.ZH125J_Zincl_gamgam.GamGam.root
36
- label: 4
37
- size_bytes: 58701804
38
- sha256: c85623b04ac0176c64acdb2ecf8e992a63824cfc430a421df742319518ff6748
39
- class_names: [ttH, ggF, VBF, WH, ZH]
40
- tree_name: mini
41
- # Electrons and muons share the lep_* collection; b-tagging uses the
42
- # MV2c10 70% efficiency working point of the Open Data documentation.
43
- derived_branches:
44
- ele_pt: {source: lep_pt, where: {lep_type: 11}}
45
- ele_eta: {source: lep_eta, where: {lep_type: 11}}
46
- ele_phi: {source: lep_phi, where: {lep_type: 11}}
47
- ele_charge: {source: lep_charge, where: {lep_type: 11}}
48
- mu_pt: {source: lep_pt, where: {lep_type: 13}}
49
- mu_eta: {source: lep_eta, where: {lep_type: 13}}
50
- mu_phi: {source: lep_phi, where: {lep_type: 13}}
51
- mu_charge: {source: lep_charge, where: {lep_type: 13}}
52
- jet_btag: {source: jet_MV2c10, above: 0.8244273}
53
- # Object types (node types) as in pretraining: jet, electron, muon, photon, MET.
54
- feature_branches:
55
- - [jet_pt, ele_pt, mu_pt, photon_pt, met_et]
56
- - [jet_eta, ele_eta, mu_eta, photon_eta, 0]
57
- - [jet_phi, ele_phi, mu_phi, photon_phi, met_phi]
58
- - CALC_E
59
- - [jet_btag, 0, 0, 0, 0]
60
- - [0, ele_charge, mu_charge, 0, 0]
61
- - NODE_TYPE
62
- object_types: [vector, vector, vector, vector, single]
63
- # Momenta are in MeV; 1e-4 gives the pretraining unit of 10 GeV.
64
- scales: [1.0e-4, 1, 1, 1.0e-4, 1, 1, 1]
65
- # eventNumber % 10 gives the paper's 80:10:10 train:validation:test split.
66
- fold_var: eventNumber
67
- fold_modulus: 10
68
- train_folds: [0, 1, 2, 3, 4, 5, 6, 7]
69
- validation_folds: [8]
70
- test_folds: [9]
71
- # Labelled events (equal per class) that form the context.
72
- train_events: 1000
73
- # Unweighted: each event counts once and classes are balanced by the
74
- # per-class mean loss (23% of ttH events have mcWeight = -1).
75
- weight_var: null
76
- cache: outputs/gamgam/events.pt
77
- # Events classified per TabPFN call.
78
- batch_size: 8192
79
- prepare_workers: 8
80
- loader_workers: 4
81
- pin_memory: true
82
-
83
- model:
84
- name: tabpfn
85
- out_size: 5
86
- tabpfn_version: v3.5
87
- tabpfn_estimators: 4
88
- # Leading jets, electrons, muons, photons and MET in a table row.
89
- slots: [6, 2, 2, 3, 1]
90
- # Physics features: azimuths from the leading object's, and the mass and
91
- # Delta R of every pair of the leading pair_objects objects.
92
- relative_phi: false
93
- pair_objects: 0
94
-
95
- task:
96
- name: multiclass
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
configs/gamgam_transformer.yaml DELETED
@@ -1,92 +0,0 @@
1
- # The GamGam 5-class task with a transformer over the same objects (no
2
- # paper reference). Uses the cache of configs/gamgam.yaml.
3
- #
4
- # gnn4colliders train configs/gamgam_transformer.yaml
5
- name: gamgam_transformer
6
-
7
- data:
8
- hf_repo: ho22joshua/atlas_opendata
9
- hf_revision: d1bcc9ccaa304ea09e11f7d724342568f72a0d6e
10
- files:
11
- - path: GamGam/2020/MC/mc_341081.ttH125_gamgam.GamGam.root
12
- label: 0
13
- size_bytes: 217819076
14
- sha256: c498974926f6c55143d17fc4d3d6fa69bd3718ff92cf7d5cad5c3d67a836c7b7
15
- - path: GamGam/2020/MC/mc_343981.ggH125_gamgam.GamGam.root
16
- label: 1
17
- size_bytes: 218418347
18
- sha256: 05b3e6709e8836a7b862a7fde09086b3a9d4d494d62a6984d5df39d8daad13eb
19
- - path: GamGam/2020/MC/mc_345041.VBFH125_gamgam.GamGam.root
20
- label: 2
21
- size_bytes: 108616148
22
- sha256: 92334fce3bffc9eb6e0745dd6ef354d5ce33da764858511b8f9ca49b862b44e2
23
- - path: GamGam/2020/MC/mc_345318.WpH125J_Wincl_gamgam.GamGam.root
24
- label: 3
25
- size_bytes: 29757932
26
- sha256: f255a9c3c6935f976f788b6f32d9a8f6bf576eb12ecd03a6f3fd0a5dea9d1248
27
- - path: GamGam/2020/MC/mc_345319.ZH125J_Zincl_gamgam.GamGam.root
28
- label: 4
29
- size_bytes: 58701804
30
- sha256: c85623b04ac0176c64acdb2ecf8e992a63824cfc430a421df742319518ff6748
31
- class_names: [ttH, ggF, VBF, WH, ZH]
32
- tree_name: mini
33
- # Electrons and muons share the lep_* collection; b-tagging uses the
34
- # MV2c10 70% efficiency working point of the Open Data documentation.
35
- derived_branches:
36
- ele_pt: {source: lep_pt, where: {lep_type: 11}}
37
- ele_eta: {source: lep_eta, where: {lep_type: 11}}
38
- ele_phi: {source: lep_phi, where: {lep_type: 11}}
39
- ele_charge: {source: lep_charge, where: {lep_type: 11}}
40
- mu_pt: {source: lep_pt, where: {lep_type: 13}}
41
- mu_eta: {source: lep_eta, where: {lep_type: 13}}
42
- mu_phi: {source: lep_phi, where: {lep_type: 13}}
43
- mu_charge: {source: lep_charge, where: {lep_type: 13}}
44
- jet_btag: {source: jet_MV2c10, above: 0.8244273}
45
- # Object types (node types) as in pretraining: jet, electron, muon, photon, MET.
46
- feature_branches:
47
- - [jet_pt, ele_pt, mu_pt, photon_pt, met_et]
48
- - [jet_eta, ele_eta, mu_eta, photon_eta, 0]
49
- - [jet_phi, ele_phi, mu_phi, photon_phi, met_phi]
50
- - CALC_E
51
- - [jet_btag, 0, 0, 0, 0]
52
- - [0, ele_charge, mu_charge, 0, 0]
53
- - NODE_TYPE
54
- object_types: [vector, vector, vector, vector, single]
55
- # Momenta are in MeV; 1e-4 gives the pretraining unit of 10 GeV.
56
- scales: [1.0e-4, 1, 1, 1.0e-4, 1, 1, 1]
57
- # eventNumber % 10 gives the paper's 80:10:10 train:validation:test split.
58
- fold_var: eventNumber
59
- fold_modulus: 10
60
- train_folds: [0, 1, 2, 3, 4, 5, 6, 7]
61
- validation_folds: [8]
62
- test_folds: [9]
63
- # Unweighted: each event counts once and classes are balanced by the
64
- # per-class mean loss (23% of ttH events have mcWeight = -1).
65
- weight_var: null
66
- cache: outputs/gamgam/events.pt
67
- batch_size: 1024
68
- prepare_workers: 8
69
- loader_workers: 4
70
- pin_memory: true
71
-
72
- model:
73
- name: transformer
74
- hid_size: 64
75
- out_size: 5
76
- n_layers: 2
77
- n_heads: 4
78
- ffn_size: 256
79
- dropout: 0.1
80
- # Attention bias from object-pair (deta, dphi, dR, mass) features, as in the
81
- # Particle Transformer; false gives a plain transformer.
82
- pair_bias: true
83
-
84
- task:
85
- name: multiclass
86
-
87
- train:
88
- max_epochs: 100
89
- learning_rate: 1.0e-4
90
- lr_decay: 0.99
91
- early_stopping: {monitor: train_loss, patience: 5, min_delta: 0.0}
92
- best_metric: auc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
configs/tth_cp_even_odd.yaml DELETED
@@ -1,49 +0,0 @@
1
- # CP-even versus CP-odd top-Yukawa ttH (H -> gamma gamma), Delphes samples.
2
- # Point data.files at local copies of the two samples.
3
- name: tth_cp_even_odd
4
-
5
- data:
6
- files:
7
- - {path: data/raw/ttH_NLO_download/samples/higgs/top-associated/tth/ttH_NLO.root, label: 0}
8
- - {path: data/raw/ttH_cp_even_odd/samples/higgs/top-associated/tth/ttH_CPodd.root, label: 1}
9
- tree_name: output
10
- feature_branches:
11
- - [jet_pt, ele_pt, mu_pt, ph_pt, MET_met]
12
- - [jet_eta, ele_eta, mu_eta, ph_eta, 0]
13
- - [jet_phi, ele_phi, mu_phi, ph_phi, MET_phi]
14
- - CALC_E
15
- - [jet_btag, 0, 0, 0, 0]
16
- - [0, ele_charge, mu_charge, 0, 0]
17
- - NODE_TYPE
18
- object_types: [vector, vector, vector, vector, single]
19
- # Delphes momenta are in GeV; 0.1 gives the pretraining unit of 10 GeV.
20
- scales: [0.1, 1, 1, 0.1, 1, 1, 1]
21
- # Number is the event index; Number % 10 is the fold.
22
- fold_var: Number
23
- fold_modulus: 10
24
- train_folds: [0, 1, 2, 3, 4, 5, 6, 7]
25
- validation_folds: [8]
26
- test_folds: [9]
27
- weight_var: weight
28
- cache: outputs/tth_cp_even_odd/events.pt
29
- batch_size: 1024
30
-
31
- model:
32
- name: edge_network
33
- hid_size: 64
34
- out_size: 1
35
- n_layers: 4
36
- n_proc_steps: 4
37
-
38
- # NLO samples have signed weights; |weight| keeps the loss denominator
39
- # stable (metrics use events with positive weight).
40
- task:
41
- name: binary
42
- absolute_weights: true
43
-
44
- train:
45
- max_epochs: 100
46
- learning_rate: 1.0e-4
47
- lr_decay: 0.99
48
- early_stopping: {monitor: train_loss, patience: 5, min_delta: 0.0}
49
- best_metric: auc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
docs/design.md DELETED
@@ -1,392 +0,0 @@
1
- # Design
2
-
3
- ## Modules
4
-
5
- | Module | Contents |
6
- | --- | --- |
7
- | `config.py` | the experiment dataclasses, YAML loading and overrides |
8
- | `data.py` | ROOT reading, Hugging Face download, derived branches, object features, `PackedEvents` and its cache |
9
- | `loader.py` | `EventLoader`: deterministic shuffling, DDP sharding, collation workers |
10
- | `graphs.py` | fully connected `TensorGraph` batches, edge features, CUDA-graph padding buffers |
11
- | `sequences.py` | padded token batches for the transformer and Deep Sets, event augmentations |
12
- | `models.py` | `EdgeNetwork`, `FineTunedEdgeNetwork`, `ObjectTransformer`, `TransformerClassifier`, `DeepSets`, checkpoint loading |
13
- | `jepa.py` | JEPA pretraining of the transformer or edge network encoder (encoding or kinematic targets), event embeddings |
14
- | `contrastive.py` | contrastive (SimCLR) pretraining of the same encoders |
15
- | `probe.py` | k-NN and linear probes of frozen encoders, linear CKA between them |
16
- | `pfn.py` | our prior-fitted network over events and the task prior of meta-training |
17
- | `tabular.py` | event rows and encoder embeddings for TabPFN, TabICL and TabDPT; LoRA meta-training of TabPFN and TabICL |
18
- | `tasks.py` | multiclass and binary losses and metrics, the pretraining and PFN losses |
19
- | `train.py` | `Trainer`, early stopping, checkpoints |
20
- | `cuda_graphs.py` | captured training steps |
21
- | `distributed.py` | `torchrun` process group and collectives |
22
- | `inference.py` | model outputs over a loader, prediction files |
23
- | `export.py` | ONNX export |
24
- | `cli.py` | the six commands |
25
-
26
- ## Data flow
27
-
28
- `prepare` reads each ROOT file in chunks of 100,000 entries (in parallel with
29
- `data.prepare_workers`) and stores every event's objects as rows of one
30
- `[objects, 7]` tensor with offsets, plus per-event labels, folds, weights and
31
- source file and entry. Nothing in the cache depends on the model: graphs and
32
- token sequences are built per batch, in the loader workers.
33
-
34
- A batch of the edge network is a set of fully connected graphs in flat
35
- edge-index form (`edge_src`, `edge_dst`, `node_batch`, `edge_batch`). Edges
36
- are directed, source-major and without self-loops except for one-node graphs,
37
- with features `[deta, dphi, dR]`. These conventions, the seven node columns,
38
- the MLP layout and the parameter names are those of the original ROOT-GNN, so
39
- the pretrained checkpoints in `Pretrained_GNN/` load without conversion.
40
-
41
- The transformer and Deep Sets take each event's objects as tokens
42
- `[events, objects, 7]`, zero-padded to the largest event of the batch, with
43
- a mask of real objects. A token is a linear map of the kinematic columns
44
- (`phi` as its cosine and sine) plus a learned embedding of `node_type`. The
45
- objects are stored by type (jets, electrons, muons, photons, MET), so a
46
- position embedding would mostly relearn the type; without one, neither
47
- model depends on object order, as with the edge network.
48
-
49
- * The transformer is a stack of pre-norm attention blocks, a mean over real
50
- objects and a linear classifier. With `model.pair_bias` (as in the
51
- Particle Transformer, Qu et al. 2022), an MLP of the pair features
52
- `[deta, dphi, dR, log(1 + m^2)]` (the edge features plus the invariant
53
- mass of the pair, objects taken as massless) adds a bias per head to the
54
- attention logits, so the transformer sees the same pairwise angles as the
55
- edge network.
56
- * Deep Sets (Zaheer et al. 2017; the particle flow network of Komiske et
57
- al. 2019) applies an MLP to each object, sums over real objects and
58
- applies an MLP to the sum: the baseline without object interactions.
59
-
60
- ### JEPA pretraining
61
-
62
- `model.name: jepa` pretrains an object encoder without labels, as in
63
- I-JEPA (Assran et al. 2023), on the 12 Delphes samples of the supervised
64
- pretraining. `model.backbone` selects the encoder: the transformer's
65
- (`configs/delphes_jepa.yaml`) or the edge network, of the size of the
66
- supervised pretrained models (`configs/delphes_jepa_edge.yaml`), whose
67
- object encodings are its node states after the last processing step and
68
- whose context is the fully connected graph of the visible objects only.
69
-
70
- * a random `model.mask_fraction` of each event's objects (rounded, at least
71
- one, and at least one left visible) is hidden;
72
- * the context encoder sees the visible objects; the target encoder, an
73
- exponential moving average of it (momentum rising linearly from
74
- `model.ema_momentum` to 1 over training) without gradients, sees all
75
- objects;
76
- * a predictor (`model.predictor_layers` attention blocks over the visible
77
- objects' encodings and one query per hidden object) predicts the hidden
78
- objects' layer-normalized target encodings, with a mean squared error.
79
- A query is told only the hidden object's type and its index among the
80
- objects of that type (their pt order), not its kinematics; pair features
81
- are used only between visible objects. For the edge network, its decoded
82
- global state (what its classifier reads) is one more predictor input, so
83
- the whole network is pretrained.
84
-
85
- The history reports `target_spread`, the standard deviation of the target
86
- encodings over a batch's objects averaged over dimensions, which falls
87
- towards zero if the representation collapses. The validation loss compares
88
- predictions with a moving target, so it does not select epochs: fine-tuning
89
- starts from `last.pt` (`configs/gamgam_jepa_finetune.yaml` for the
90
- transformer, `configs/gamgam_finetune.yaml` with `model.pretrained` for the
91
- edge network; encoder sizes must match). With `model.freeze_backbone=true` only the classifier is
92
- trained (a linear probe); `model.pretrained=null` trains the same
93
- architecture from scratch.
94
-
95
- `model.variance_weight` adds the VICReg variance term (Bardes et al. 2022):
96
- the mean shortfall below 1 of each dimension's standard deviation over the
97
- batch's context encodings (and the edge network's global states).
98
-
99
- First checks (one A100, `train.fast=true`, 2 pretraining epochs on Delphes
100
- fold 2, then 2 GamGam epochs, validation AUC, seed 1; not converged):
101
-
102
- | GamGam model | Validation AUC |
103
- | --- | --- |
104
- | transformer from scratch / from JEPA | 0.898 / 0.904 |
105
- | edge network from scratch | 0.895 |
106
- | edge network from the supervised pretrained model | 0.907 |
107
- | edge network from JEPA, last node states only | 0.845 |
108
- | edge network from JEPA, mean node states | 0.869 |
109
- | the same with `variance_weight` 0.1 / 1 | 0.874 / 0.810 |
110
-
111
- The edge network's JEPA encodings collapse without the variance term
112
- (`target_spread` 0.09 against about 1 with it), and none of the edge
113
- network variants yet beats training from scratch.
114
-
115
- ### Contrastive and masked-object pretraining, and probes
116
-
117
- Two more label-free objectives pretrain the same encoders on the same
118
- samples, and their encoders load the same way (`context_encoder`):
119
-
120
- * `contrastive.py` (`configs/delphes_contrastive.yaml`): SimCLR, as JetCLR
121
- and RS3L for jets. Two views of each event (random phi rotation, eta
122
- flip, momentum scale within `model.scale_jitter`, each object but the
123
- first dropped with `model.object_dropout`) are embedded and projected;
124
- the NT-Xent loss at `model.temperature` contrasts them with the other
125
- events of the batch. `embedding_spread` watches for collapse.
126
- * `model.jepa_target: features` (`configs/delphes_masked.yaml`): masked
127
- object modelling (Golling et al. 2024). JEPA's masking and predictor
128
- predict the hidden objects' kinematics instead of their target
129
- encodings, with no target encoder: the comparison with JEPA isolates
130
- predicting in embedding space.
131
-
132
- `gnn4colliders probe` compares encoders without fine-tuning (as jBOT):
133
- k-NN (cosine, `model.probe_neighbours`) and linear (L-BFGS logistic
134
- regression, `model.probe_l2`) classifiers of frozen event embeddings,
135
- trained on `data.train_events` events. A randomly initialized encoder
136
- (`model.pretrained=null`) is the reference; supervised checkpoints probe
137
- too. Results on GamGam: "Label efficiency on GamGam" below.
138
-
139
- `scripts/compare_encoders.py` compares encoders of one architecture by
140
- linear CKA (Kornblith et al. 2019), as the paper does: of their event
141
- embeddings (a matrix), and layer by layer against the first one (the mean
142
- over objects after each transformer block, or the edge network's mean node
143
- states after each step, then the event embedding). With a random encoder
144
- first, it shows where each objective moves the representation.
145
-
146
- ### In-context models: TabPFN, TabICL, TabDPT and a collider PFN
147
-
148
- Both classify a dataset's events given `data.train_events` labelled
149
- training events (an equal number per class) as context, without training on
150
- that dataset; `cli.in_context_forward` builds them for `evaluate` and
151
- `predict`.
152
-
153
- * `tabular.py`: TabPFN (Prior Labs; `model.tabpfn_version`, default 3.5)
154
- on fixed-width rows: the leading `model.slots` objects of each type (6
155
- jets, 2 electrons, 2 muons, 3 photons, MET) with their six kinematic
156
- columns, NaN when absent, and the number of objects of each type.
157
- * `pfn.py`: our own prior-fitted network. The object transformer (which
158
- can start from the JEPA encoder) embeds each event; the context events get
159
- a label embedding; `model.pfn_layers` attention blocks run over a task's
160
- events, every event attending to the context events only, so queries are
161
- independent and the context's keys and values are computed once. It is
162
- meta-trained (`task.name: pfn`) on tasks drawn from the Delphes samples:
163
- 2-10 classes of `task.prior_classes` in random order, Dirichlet class
164
- proportions, 16-2048 context events (log-uniform), 256 queries, and per
165
- event a random phi rotation and eta flip, per task a momentum and energy
166
- scale within `task.energy_jitter`. The GamGam processes are among the
167
- Delphes samples; `task.prior_classes=[1,6,7,8,9,10,11]` leaves them out.
168
-
169
- * `tabular.py` also runs TabICLv2 (Qu et al., ICML 2026; BSD-3, open
170
- pretraining code) on the same rows, as a second tabular in-context model.
171
- Rows can measure azimuths from the leading object's (`model.relative_phi`)
172
- and end with the invariant mass and Delta R of every pair of the
173
- `model.pair_objects` leading objects by pt (energies are `pt cosh(eta)`,
174
- so objects are massless; a pair with MET gives a transverse-like mass).
175
- Both are off by default, so the default rows are unchanged.
176
- * `tabular.py` also runs TabDPT (Ma et al. 2024; Apache-2.0), trained on
177
- real tables rather than a synthetic prior; with
178
- `model.tabdpt_context_size` each event's context is its nearest context
179
- events (faiss retrieval), beyond what fits in one pass. It computes in
180
- float64 in places (on a Mac it runs on the CPU), and on macOS faiss and
181
- torch crash together unless `OMP_NUM_THREADS=1`.
182
- * Tabular models can see, instead of or beside the rows, the event
183
- embeddings of a pretrained object encoder (`model.tabular_inputs:
184
- embeddings` or `both`, the encoder of `model.backbone` and
185
- `model.pretrained`): physics-aware embeddings under a generic tabular
186
- prior. In meta-training the encoder trains with the LoRA updates unless
187
- `model.freeze_backbone`.
188
- * `tabular.py` also meta-trains the TabPFN-3.5 network itself on the
189
- PFN's tasks (`model.name: tabpfn`, `task.name: pfn`), on the rows above
190
- (built after the augmentation), starting from Prior Labs' weights. Calling
191
- the network directly skips TabPFN's preprocessing and ensembling, which
192
- on the GamGam fixtures cost nothing (validation AUC 0.852 against 0.843
193
- with `predict_proba`, 61 events). By default the network is frozen and
194
- the four attention projections and two MLP layers of each of its 24
195
- in-context blocks get rank-8 LoRA updates (2.8M parameters, zero at the
196
- start, so training starts from TabPFN as released); `model.lora_rank=0`
197
- trains all weights. In context, the context's keys and values are cached
198
- (the same logits as one pass over context and queries, to 2e-5). It
199
- separates what Prior Labs' prior and what collider tasks contribute:
200
- TabPFN as released, TabPFN meta-trained here, and our PFN. TabICL
201
- (`configs/delphes_tabicl.yaml`; BSD-3, so meta-trained weights can be
202
- shared) meta-trains the same way. Its attention reads fused projection
203
- weights directly, so LoRA is a parametrization of the weights (12 blocks,
204
- 0.59M of 28M parameters at rank 8), for TabPFN too. TabICL's network takes
205
- no NaN: rows are standardized by the context's statistics, absent values
206
- at the mean, clipped at 8 sigma. On the fixtures this gives AUC 0.827
207
- against 0.820 with its classifier, and the cached in-context forward
208
- equals the training forward only in float32 (with mixed precision on the
209
- CPU, AUC 0.59).
210
-
211
- ### Label efficiency on GamGam (first study, 2026-10-22)
212
-
213
- GamGam validation AUC (%) against the number of labelled training events N
214
- (`data.train_events`, equal per class), one seed, on one 4-GPU A100 node in
215
- an interactive allocation (3.5 h). Each entry is evaluated on 20,000 random
216
- validation events (`data.eval_events=20000`, about +-0.3); on all 246,922,
217
- evaluated for the supervised runs and the leading TabPFN runs, each is 0.05
218
- to 0.41 lower, in the same order (TabPFN-3.5: 80.28, 86.92, 89.01, 0.08 to
219
- 0.13 lower, matching the M2 Max's 80.26 and 86.93).
220
-
221
- | model | N = 100 | 1000 | 10000 | 50000 |
222
- |---|---|---|---|---|
223
- | edge network, from scratch | 78.00 | 82.74 | 87.66 | |
224
- | edge network, from `Pretrained_GNN` | 84.95 | 87.48 | 89.98 | |
225
- | transformer, from scratch | 72.33 | 83.47 | 87.03 | |
226
- | transformer, from JEPA | 73.25 | 85.10 | 88.60 | |
227
- | transformer, from masked objects | 75.92 | 86.12 | 88.73 | |
228
- | TabPFN-3.5 (rows) | 80.41 | 87.05 | 89.09 | 89.56 |
229
- | TabPFN-3.5 (rows, `relative_phi`, `pair_objects: 4`) | 80.61 | 87.78 | 89.56 | |
230
- | TabPFN-3.5 (rows + JEPA embeddings) | 80.97 | 87.43 | 89.44 | |
231
- | TabPFN-3.5 (rows + masked-object embeddings) | 82.99 | 88.22 | 89.94 | |
232
- | TabPFN-3.5 (rows + `Pretrained_GNN` embeddings) | 87.32 | 88.96 | 90.07 | |
233
- | TabPFN-3.5, released network, direct forward | 80.74 | 86.64 | 89.03 | |
234
- | TabPFN-3.5, meta-trained on Delphes (LoRA) | 80.52 | 84.77 | 88.34 | |
235
- | TabICLv2 | 80.53 | 85.68 | 88.41 | 89.12 |
236
- | TabDPT | 77.48 | 84.71 | 88.42 | |
237
- | our PFN, meta-trained on Delphes | 78.13 | 76.18 | 76.51 | |
238
-
239
- Probes (k-NN / linear) of the frozen encoders, the same N:
240
-
241
- | encoder | N = 100 | 1000 | 10000 |
242
- |---|---|---|---|
243
- | random | 73.4 / 72.6 | 76.6 / 83.1 | 79.5 / 85.4 |
244
- | JEPA | 73.0 / 73.4 | 78.9 / 83.4 | 81.8 / 87.9 |
245
- | masked objects | 75.0 / 77.5 | 81.7 / 85.7 | 84.4 / 88.5 |
246
- | contrastive | 61.6 / 67.9 | 70.0 / 80.3 | 76.4 / 85.9 |
247
-
248
- Setup (every run and its overrides: `scripts/label_efficiency_study.sh`):
249
- the pretraining runs saw the same 4M class-balanced Delphes events for 8
250
- epochs (`data.train_events=4000000`, 50 to 70 min each); the PFN
251
- meta-trained for 25 epochs of 1000 steps (25,000 steps, 95 min) and TabPFN
252
- for 6 epochs of 500 (3,000 steps, 48 min). Supervised runs train for a
253
- fixed number of steps with early stopping off (`train.early_stopping=null`;
254
- batch size, epochs: 100, 1000 for N = 100; 128, 400 for N = 1000; 256, 100
255
- for N = 10000; 20 to 35 min at N = 100, 2 to 4 min at N = 10000) and keep
256
- the epoch of best validation AUC, chosen on the same 20,000 events that are
257
- reported. That choice uses validation labels the in-context models do not
258
- get, and from N = 1000 most supervised runs overfit: their last epoch is far
259
- below the kept one. On all validation events (92% of them not used for the
260
- choice) the kept epochs lose 0.05 to 0.41, no more than the in-context runs
261
- lose, so picking the maximum over noisy evaluations inflates them little:
262
-
263
- | supervised run (N = 100 / 1000 / 10000) | kept epoch, 20k | kept epoch, all | last epoch, 20k |
264
- |---|---|---|---|
265
- | edge network, from scratch | 78.00 / 82.74 / 87.66 | 77.80 / 82.69 / 87.42 | 68.88 / 78.88 / 87.65 |
266
- | edge network, from `Pretrained_GNN` | 84.95 / 87.48 / 89.98 | 84.54 / 87.09 / 89.74 | 80.75 / 81.58 / 86.85 |
267
- | transformer, from scratch | 72.33 / 83.47 / 87.03 | 71.99 / 83.35 / 86.95 | 72.33 / 83.44 / 87.03 |
268
- | transformer, from JEPA | 73.25 / 85.10 / 88.60 | 73.07 / 84.96 / 88.45 | 72.34 / 78.82 / 81.46 |
269
- | transformer, from masked objects | 75.92 / 86.12 / 88.73 | 75.73 / 85.84 / 88.60 | 75.92 / 79.73 / 85.62 |
270
-
271
- With only N labelled events there is no large labelled set to choose the
272
- epoch on; without the choice (last epoch) every supervised model is below
273
- TabPFN-3.5 as released at every N except `Pretrained_GNN` at N = 100.
274
-
275
- With the configs' settings instead (batch size 1024, at most 100 epochs,
276
- early stopping after 5 epochs without training-loss improvement) N = 1000
277
- is one step per epoch, at most 100 steps: the transformer then reaches
278
- 70.04 at N = 1000 instead of 83.47. The in-context models take 10 to 30 s
279
- for the 20,000 queries at N = 1000 and 10000 (TabPFN 109 s at N = 50000;
280
- the first run of each, N = 100, also loads the weights).
281
-
282
- Findings:
283
-
284
- * TabPFN-3.5 as released, without training, comes within 0.4 (N = 1000)
285
- and 0.9 (N = 10000) of fine-tuning the supervised `Pretrained_GNN` (0.2
286
- and 0.7 on all validation events), with its epoch chosen on validation
287
- labels, and above it from N = 1000 without that choice. It beats every
288
- model trained from scratch at every N. TabICL is close behind; TabDPT is
289
- behind at small N. The physics row features add up to 0.7.
290
- * Encoder embeddings help TabPFN most at small N. With the label-free
291
- masked-object encoder: +2.6 at N = 100. With `Pretrained_GNN` (trained
292
- with labels, on Delphes samples that include the GamGam processes): the
293
- best result at every N run (100 to 10000; not run at 50000), +6.9 at
294
- N = 100.
295
- * Meta-training on Delphes tasks does not help. TabPFN with LoRA loses 1.9
296
- at N = 1000 against the same network with zero updates (its direct
297
- forward costs at most 0.4 against the classifier's preprocessing and
298
- ensembling). Our PFN is below TabPFN and gets worse with more context
299
- (76 at N = 1000, inside the meta-training context sizes 16 to 2048): to
300
- investigate before the held-out-processes run, which was not done.
301
- * Of the label-free pretraining objectives, masked-object modelling is the
302
- best, in probes and fine-tuned; JEPA's prediction in embedding space adds
303
- nothing over it here. Both improve fine-tuning the transformer over
304
- training it from scratch (+0.9 to +3.6) but stay below fine-tuning the
305
- edge network from `Pretrained_GNN`. That gap mixes the architecture (from
306
- scratch, the edge network is 5.7 above the transformer at N = 100) with
307
- the objective (label-free or supervised); the like-for-like comparison,
308
- JEPA of the edge network (`configs/delphes_jepa_edge.yaml`), was not run.
309
- * Contrastive pretraining is below a random encoder in the k-NN probe at
310
- every N and in the linear probe at N = 100 and 1000 (67.9 against 72.6,
311
- 80.3 against 83.1); at N = 10000 its linear probe is 0.5 above (85.9
312
- against 85.4). Without the momentum-scale augmentation
313
- (`model.scale_jitter=0`, 4 epochs) it is no better (72.4 / 84.3 at
314
- N = 10000).
315
-
316
- Not done:
317
-
318
- * the held-out-processes meta-training (`task.prior_classes` without the
319
- five GamGam processes) of the PFN, gated on it beating TabPFN, and of
320
- TabPFN and TabICL;
321
- * TabICL meta-training and `model.lora_rank=0`;
322
- * fine-tuning from contrastive pretraining (only probed), and JEPA of the
323
- edge network;
324
- * more seeds, and the test split.
325
-
326
- The loss is a weighted mean per class present in the batch, averaged over
327
- those classes, which balances the classes without explicit class weights.
328
- Metrics (accuracy, one-vs-rest AUC averaged over classes, macro precision,
329
- recall and F1) use events with positive weight.
330
-
331
- ## Performance
332
-
333
- Graphs differ in size, which suits neither `torch.compile` nor CUDA graphs
334
- out of the box:
335
-
336
- * `torch.compile(dynamic=True)` treats node and edge counts as symbolic
337
- sizes, so one compiled graph serves all batches without padding.
338
- * CUDA graph replay needs fixed shapes. Batches are copied into buffers
339
- rounded up to multiples of 512 nodes and 4096 edges; the remainder forms 64
340
- padding graphs connected only to themselves, so the real graphs' outputs do
341
- not change. A step is captured once per bucket, a few per epoch. The
342
- optimizer runs in Adam's `capturable` form with device-tensor learning
343
- rates, which the scheduler updates in place.
344
- * bfloat16 autocast covers the forward pass; logits, loss, graph sums (which
345
- divide by edge counts) and the optimizer stay float32.
346
-
347
- GamGam training step, 1024-event batches (about 5,600 nodes and 30,000
348
- edges), one A100-SXM4-80GB, `OMP_NUM_THREADS=8`, four loader workers (step
349
- times measured before the move to flat modules, epoch times after):
350
-
351
- | Mode | ms per batch | Epoch with validation |
352
- | --- | ---: | ---: |
353
- | float32 eager | 19.2 | 37 s |
354
- | CUDA graphs + TF32 | 8.5 | |
355
- | `torch.compile` | 13.0 | |
356
- | compile + CUDA graphs + TF32 | 6.1 | |
357
- | compile + CUDA graphs + bfloat16 (`train.fast`) | 5.9 | 9 s (first: 59 s, compiling) |
358
-
359
- Eager training is bound by kernel launches (about a thousand small kernels
360
- per step), not by arithmetic; bfloat16 alone is slower because of the extra
361
- cast kernels, which `torch.compile` fuses. Results of the fast modes agree
362
- with float32 to rounding, not bitwise (validation AUC 0.895 against 0.897
363
- after three epochs). Preparing the 2.5M GamGam events with 8 workers takes
364
- about 9 s on a login node (40 s was seen on a compute node, likely a cold
365
- file cache).
366
-
367
- PyTorch sizes its CPU thread pool to every visible core; on a 128-core node
368
- that makes batch construction several times slower and CPU reductions
369
- non-reproducible, so set `OMP_NUM_THREADS`. Single-threaded CPU training is
370
- bitwise reproducible.
371
-
372
- ## ATLAS Open Data GamGam versus Ho et al. (2026)
373
-
374
- The main benchmark reproduces the from-scratch baseline of Table 3 (5
375
- classes, 2.5M events, 80:10:10 split, five seeds). Choices the paper does not
376
- specify:
377
-
378
- * electrons and muons are split from `lep_*` by `lep_type` (11, 13);
379
- * b-tagging is `jet_MV2c10 > 0.8244273`, the 70% working point;
380
- * momenta and energies are scaled by 1e-4 (MeV to the pretraining unit of
381
- 10 GeV);
382
- * the fold is `eventNumber % 10`: folds 0-7 train, 8 validates, 9 tests;
383
- * training is unweighted (23% of ttH events have `mcWeight = -1`).
384
-
385
- The paper's stopping rule (5 epochs without training-loss improvement) never
386
- fires within 200 epochs on this task; validation AUC peaks earlier (epoch 67
387
- for seed 1) and `best.pt` keeps that epoch.
388
-
389
- | Test split | Accuracy | AUC | F1 | Precision | Recall |
390
- | --- | ---: | ---: | ---: | ---: | ---: |
391
- | Paper (5 seeds) | 71.8 ± 0.2 | 91.2 | 63.0 | 62.2 | 66.3 |
392
- | This package, seed 1 (CUDA graphs + TF32) | 71.1 | 91.3 | 62.6 | 62.4 | 66.7 |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
docs/usage.md DELETED
@@ -1,255 +0,0 @@
1
- # Using GNN4Colliders
2
-
3
- GNN4Colliders trains event classifiers on reconstructed collider objects:
4
-
5
- ```text
6
- ROOT files --prepare--> event cache (one row per object) --> graph or token batches --> model
7
- ```
8
-
9
- ## Install
10
-
11
- Python 3.14 and PyTorch 2.14 (CUDA 13), managed by [uv](https://docs.astral.sh/uv/):
12
-
13
- ```bash
14
- uv sync --dev # includes pytest, ruff and the ONNX packages
15
- uv sync --dev --extra tabpfn # also TabPFN (configs/gamgam_tabpfn.yaml)
16
- uv sync --dev --extra tabicl # also TabICL (configs/gamgam_tabicl.yaml)
17
- uv sync --dev --extra tabdpt # also TabDPT (configs/gamgam_tabdpt.yaml)
18
- uv sync --dev --extra plots # matplotlib, for scripts/plot_label_efficiency.py
19
- uv run pytest # about 2 minutes; GPU tests run when CUDA is available
20
- uv run pytest --device mps # the fixture runs on an Apple GPU
21
- ```
22
-
23
- ## Commands
24
-
25
- Every command takes an experiment file and optional `dotted.key=value`
26
- overrides (values are YAML):
27
-
28
- ```bash
29
- uv run gnn4colliders prepare configs/gamgam.yaml # ROOT -> data.cache
30
- uv run gnn4colliders train configs/gamgam.yaml # -> run_dir/{best,last}.pt
31
- uv run gnn4colliders evaluate configs/gamgam.yaml # -> run_dir/test_metrics.json
32
- uv run gnn4colliders predict configs/gamgam.yaml # -> run_dir/test_predictions.npz
33
- uv run gnn4colliders export configs/gamgam.yaml # -> run_dir/model.onnx
34
- uv run gnn4colliders probe configs/gamgam_jepa_finetune.yaml \
35
- model.pretrained=outputs/delphes_jepa/last.pt data.train_events=1000 # -> run_dir/test_probe.json
36
- ```
37
-
38
- `train` writes, in `run_dir` (default `outputs/<name>`):
39
-
40
- * `config.yaml`: the resolved configuration;
41
- * `history.jsonl`: one line per epoch with the loss and metrics of the
42
- training and validation splits, the learning rate and the epoch time;
43
- * `best.pt`: the epoch with the best validation `train.best_metric` (AUC by
44
- default), `last.pt`: the latest epoch (resume with
45
- `train.resume=<run_dir>/last.pt`), and `epoch_NNNN.pt` every
46
- `train.save_every` epochs.
47
-
48
- `probe` fits k-NN and linear classifiers to the frozen event embeddings of
49
- the encoder of `model.pretrained` (JEPA, contrastive or supervised; random
50
- without) on `data.train_events` training events and reports their metrics
51
- on `split`, to compare pretraining without fine-tuning.
52
-
53
- `data.eval_events=20000` evaluates (and validates during training,
54
- predicts and probes) only that many random validation or test events,
55
- seeded by `data.seed`: AUCs to about 0.003, in minutes, for quick runs.
56
-
57
- `evaluate`, `predict` and `export` use `checkpoint` (default `best.pt`, else
58
- `last.pt`) on `split` (default `test`); `output` overrides the output file.
59
- Predictions hold the logits, scores, predicted class, label, weight, fold,
60
- source file and entry of every event; `gnn4colliders.inference.write_root_scores`
61
- adds scores to a copy of a ROOT tree.
62
-
63
- ## Experiments
64
-
65
- | File | Task |
66
- | --- | --- |
67
- | `configs/gamgam.yaml` | ATLAS Open Data GamGam, 5 Higgs production modes, from scratch (the paper baseline and main benchmark) |
68
- | `configs/gamgam_finetune.yaml` | the same task fine-tuned from the pretrained multiclass model |
69
- | `configs/gamgam_transformer.yaml` | the same task with a transformer with pair attention bias (`model.pair_bias=false` for a plain transformer; same event cache) |
70
- | `configs/gamgam_deep_sets.yaml` | the same task with Deep Sets, the baseline without object interactions (same event cache) |
71
- | `configs/tth_cp_even_odd.yaml` | CP-even versus CP-odd ttH (Delphes, binary; local files) |
72
- | `configs/delphes_pretraining.yaml` | 12-class pretraining on the Delphes samples |
73
- | `configs/delphes_jepa.yaml` | JEPA pretraining of the transformer encoder on the same samples, without labels (same event cache) |
74
- | `configs/delphes_jepa_edge.yaml` | the same for the edge network (fine-tune with `configs/gamgam_finetune.yaml model.pretrained=outputs/delphes_jepa_edge/last.pt`) |
75
- | `configs/delphes_contrastive.yaml` | contrastive (SimCLR) pretraining of the transformer encoder on the same samples (`model.backbone=edge_network` for the edge network) |
76
- | `configs/delphes_masked.yaml` | masked object modelling: JEPA predicting hidden objects' kinematics |
77
- | `configs/gamgam_jepa_finetune.yaml` | GamGam with the JEPA-pretrained encoder (`model.pretrained=null`: from scratch); also takes contrastive and masked-object encoders, and `probe` |
78
- | `configs/gamgam_tabpfn.yaml` | GamGam classified in context by TabPFN-3.5, no training (`evaluate` only) |
79
- | `configs/gamgam_tabicl.yaml` | the same by TabICLv2 (BSD-3 weights, downloaded from Hugging Face on first use) |
80
- | `configs/gamgam_tabdpt.yaml` | the same by TabDPT (Apache-2.0 weights; `model.tabdpt_context_size` retrieves each event's context) |
81
- | `configs/delphes_pfn.yaml` | meta-training of our own PFN on tasks drawn from the Delphes samples (same event cache) |
82
- | `configs/gamgam_pfn.yaml` | GamGam classified in context by that PFN, no training (`evaluate` only) |
83
- | `configs/delphes_tabpfn.yaml` | meta-training of TabPFN-3.5 (LoRA by default) on the same tasks; evaluate with `configs/gamgam_tabpfn.yaml checkpoint=outputs/delphes_tabpfn/best.pt` |
84
- | `configs/delphes_tabicl.yaml` | the same for TabICL; evaluate with `configs/gamgam_tabicl.yaml checkpoint=outputs/delphes_tabicl/best.pt` |
85
-
86
- Each file documents its keys; `src/gnn4colliders/config.py` lists every key
87
- with its default. Common overrides:
88
-
89
- ```bash
90
- train.fast=true # torch.compile + CUDA graphs (edge network) + bfloat16 + TF32
91
- train.seed=3 data.seed=3 # initialization and shuffling seeds
92
- train.max_epochs=100
93
- model.pretrained=Pretrained_GNN/multiclass_pretrained_model_12/model_epoch_71.pt
94
- model.freeze_backbone=true # train only the new classifier
95
- data.files=[{path: my.root, label: 0}] data.hf_repo=null # local inputs
96
- ```
97
-
98
- ### Data
99
-
100
- Large inputs belong on scratch storage, not in the repository: set
101
- `HF_HOME` (where Hugging Face downloads go) and pass `data.cache=...`, e.g.
102
- on Perlmutter `HF_HOME=$SCRATCH/.cache/huggingface` and
103
- `data.cache=$SCRATCH/gnn4colliders/delphes/events.pt` (the 105M Delphes
104
- events take 52 GB of ROOT files and a 21 GB cache).
105
-
106
- `data.files` lists the ROOT files and their class labels (or a label branch
107
- name). With `data.hf_repo` the paths are inside that Hugging Face dataset at
108
- `data.hf_revision` and are downloaded once and checked against `sha256` and
109
- `size_bytes`.
110
-
111
- Each object becomes a row of `pt, eta, phi, energy, btag, charge, node_type`
112
- built from `feature_branches` (one branch or constant per object type,
113
- `CALC_E` = pt cosh(eta), `NODE_TYPE` = object-type index) and multiplied by
114
- `scales`. `derived_branches` select objects or threshold tagger scores before
115
- that (the GamGam file splits `lep_*` into electrons and muons). The fold of an
116
- event is `fold_var`, modulo `fold_modulus` when set, and
117
- `train_folds`/`validation_folds`/`test_folds` select the splits. Events are
118
- unweighted unless `weight_var` names a weight branch.
119
-
120
- ### In-context models and label efficiency
121
-
122
- `data.train_events=N` keeps N training events, an equal number per class
123
- (smaller N give subsets of larger ones). Supervised models train on them;
124
- the in-context models (`model.name: tabpfn` or `pfn`) use them as the
125
- labelled context and are only evaluated:
126
-
127
- ```bash
128
- uv run gnn4colliders evaluate configs/gamgam_tabpfn.yaml split=validation data.train_events=1000
129
- uv run gnn4colliders train configs/delphes_pfn.yaml # meta-training
130
- uv run gnn4colliders evaluate configs/gamgam_pfn.yaml split=validation data.train_events=1000
131
- uv run gnn4colliders train configs/gamgam.yaml data.train_events=1000 # supervised reference
132
- ```
133
-
134
- `scripts/label_efficiency.py` runs such a sweep over several `N` and
135
- configs (restartable) and prints validation AUC and seconds per run; the
136
- metrics JSON records `seconds` (setup, inference) and, on CUDA,
137
- `peak_memory_gib`:
138
-
139
- ```bash
140
- uv run python scripts/label_efficiency.py configs/gamgam_tabpfn.yaml configs/gamgam.yaml \
141
- --events 100 1000 10000 50000
142
- ```
143
-
144
- TabPFN-2.5 and later weights are non-commercial (research and internal
145
- benchmarking are allowed). tabpfn downloads them after a one-time login at
146
- https://ux.priorlabs.ai (token in `~/.cache/tabpfn/auth_token` or
147
- `TABPFN_TOKEN`), but a checkpoint already in its cache directory loads
148
- without the login, so on compute nodes download it from Hugging Face:
149
-
150
- ```bash
151
- export TABPFN_MODEL_CACHE_DIR=$SCRATCH/.cache/tabpfn # default ~/Library/Caches/tabpfn on macOS
152
- uvx --from huggingface_hub hf download Prior-Labs/tabpfn_3_5 config.json \
153
- tabpfn-v3.5-20260909.safetensors tabpfn-v3.5-20260909_multiclass.safetensors \
154
- --local-dir $TABPFN_MODEL_CACHE_DIR
155
- ```
156
-
157
- `model.tabpfn_checkpoint=tabpfn-v3.5-20260909_multiclass.safetensors`
158
- selects the multiclass checkpoint. `model.tabpfn_version=v2` needs no login.
159
-
160
- TabDPT retrieval (`model.tabdpt_context_size`) on macOS needs
161
- `OMP_NUM_THREADS=1`: faiss and torch load separate OpenMP runtimes.
162
-
163
- Tabular models can use a pretrained encoder's event embeddings instead of
164
- or beside the rows: `model.tabular_inputs=embeddings` (or `both`) with
165
- `model.pretrained=outputs/delphes_jepa/last.pt` and the encoder's sizes
166
- (those of `configs/delphes_jepa.yaml`: `model.hid_size=128 model.n_layers=4
167
- model.n_heads=8 model.ffn_size=512 model.pair_bias=true`).
168
-
169
- TabPFN and TabICL classify the same table rows (`model.slots` objects of
170
- each type). Two options add physics they cannot learn from a few events:
171
- `model.relative_phi=true` measures every azimuth from the leading object's,
172
- and `model.pair_objects=4` appends the invariant mass and Delta R of every
173
- pair of the four leading objects (12 columns). Compare with and without,
174
- one run name per variant:
175
-
176
- ```bash
177
- uv run python scripts/label_efficiency.py configs/gamgam_tabicl.yaml --events 100 1000 \
178
- --override name=gamgam_tabicl_physics model.relative_phi=true model.pair_objects=4
179
- ```
180
-
181
- TabPFN-3.5 can also be meta-trained on the Delphes tasks, like our PFN.
182
- By default only LoRA updates of its in-context blocks train
183
- (`model.lora_rank`, 8; `model.lora_rank=0` trains all 219M weights), and
184
- checkpoints hold only those (33 MB with the optimizer state, against
185
- 2.6 GB for all weights). With a `checkpoint`, TabPFN is
186
- evaluated with its own forward pass, not the classifier:
187
-
188
- ```bash
189
- uv run gnn4colliders train configs/delphes_tabpfn.yaml
190
- uv run gnn4colliders evaluate configs/gamgam_tabpfn.yaml split=validation \
191
- data.train_events=1000 checkpoint=outputs/delphes_tabpfn/best.pt
192
- ```
193
-
194
- Activations are recomputed in the backward pass. On a 32 GB Apple M2 Max
195
- one task of 2048 context events and 256 queries takes about 4.5 s and
196
- 16 GiB per step with all weights trained, so the Mac is for development;
197
- meta-train on a GPU node.
198
-
199
- ### Fine-tuning
200
-
201
- `Pretrained_GNN/` holds the pretrained models of the paper, the final
202
- epoch of each: `multiclass_pretrained_model_12/model_epoch_71.pt` and
203
- `multilabel_pretrained_model_41/model_epoch_44.pt` (with their training
204
- configuration and log). With `model.pretrained` the edge network is loaded from
205
- that checkpoint and gets a new `model.out_size` classifier; `model.hid_size`,
206
- `n_layers` and `n_proc_steps` must match it (64, 4, 4). A JEPA checkpoint
207
- (`configs/delphes_jepa*.yaml`) loads the same way: its context encoder
208
- initializes the edge network or the transformer encoder.
209
-
210
- ## GPUs, Perlmutter and DDP
211
-
212
- `train.device: auto` uses CUDA, else an Apple GPU (MPS), else the CPU. MPS
213
- is for development on fixtures and small runs (no float64: metrics are
214
- computed on the CPU; no DDP, CUDA graphs or TF32).
215
-
216
- On a single GPU, `train.fast=true` is about 3x faster than float32 for the
217
- GamGam model (see [design.md](design.md)). Set `OMP_NUM_THREADS` to the CPU
218
- allocation and, on Perlmutter compute nodes, `UV_CACHE_DIR=$SCRATCH/.cache/uv`
219
- (uv cannot lock its home-directory cache there).
220
-
221
- ```bash
222
- # One training per seed, each followed by test-split evaluation:
223
- for seed in 1 2 3 4 5; do
224
- sbatch -A <account> --export=ALL,SEED=$seed scripts/train.sh train.fast=true
225
- done
226
- uv run python scripts/summarize_ensemble.py outputs/gamgam/seed* # mean +- std
227
- ```
228
-
229
- The study of in-context models and pretraining has one wrapper per kind of
230
- job, each on one GPU (the header of each script lists its variables):
231
-
232
- ```bash
233
- # Label-efficiency sweep of released in-context models and supervised references:
234
- sbatch -A <account> --export=ALL,CONFIGS="configs/gamgam_tabpfn.yaml configs/gamgam_tabicl.yaml configs/gamgam.yaml" \
235
- scripts/label_efficiency.sh
236
- # Meta-training, then GamGam in context with the meta-trained model:
237
- sbatch -A <account> --export=ALL,CONFIG=configs/delphes_tabicl.yaml,EVAL_CONFIG=configs/gamgam_tabicl.yaml \
238
- scripts/meta_train.sh task.prior_classes=[1,6,7,8,9,10,11]
239
- # Label-free pretraining, then k-NN and linear probes on GamGam:
240
- sbatch -A <account> --export=ALL,CONFIG=configs/delphes_contrastive.yaml scripts/pretrain.sh
241
- # Linear CKA between the pretrained encoders, layer by layer (a login node is enough):
242
- uv run python scripts/compare_encoders.py configs/gamgam_jepa_finetune.yaml --events 5000 \
243
- --encoders random=random jepa=outputs/delphes_jepa/last.pt \
244
- contrastive=outputs/delphes_contrastive/last.pt masked=outputs/delphes_masked/last.pt
245
- # Curves and tables of every finished run:
246
- uv run --extra plots python scripts/plot_label_efficiency.py --sweeps outputs/label_efficiency \
247
- --probes outputs/delphes_jepa outputs/delphes_contrastive outputs/delphes_masked
248
- ```
249
-
250
- Under `torchrun` with more than one process, training is data parallel:
251
- `data.batch_size` is per process, training events are sharded over ranks
252
- (padded to equal length) and metrics are computed over all ranks' events.
253
- CUDA graphs need a single process (so `train.fast=true` does too; DDP is
254
- tested in float32 eager). `scripts/train_ddp.sh` launches all GPUs of
255
- one or more nodes.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
plots/cka_layerwise.svg DELETED
plots/hyperparameter_optimization.svg DELETED
plots/trainingtime.svg DELETED
pyproject.toml DELETED
@@ -1,80 +0,0 @@
1
- [build-system]
2
- requires = ["setuptools>=68"]
3
- build-backend = "setuptools.build_meta"
4
-
5
- [project]
6
- name = "gnn4colliders"
7
- dynamic = ["version"]
8
- description = "Machine-learning tools for collider event analysis."
9
- readme = "README.md"
10
- requires-python = ">=3.14,<3.15"
11
- dependencies = [
12
- "awkward>=2.0",
13
- "huggingface-hub>=0.36,<1",
14
- "numpy>=2.1",
15
- "pyyaml>=6",
16
- "torch==2.14.1",
17
- "uproot>=5.0",
18
- ]
19
-
20
- [project.optional-dependencies]
21
- onnx = [
22
- "onnx>=1.16,<2",
23
- "onnxruntime>=1.18,<2",
24
- ]
25
- tabpfn = [
26
- "tabpfn>=9.2,<10",
27
- ]
28
- tabicl = [
29
- "tabicl>=2.2,<3",
30
- ]
31
- tabdpt = [
32
- "tabdpt>=1.3.1,<2",
33
- ]
34
- plots = [
35
- "matplotlib>=3.9,<4",
36
- ]
37
-
38
- [project.scripts]
39
- gnn4colliders = "gnn4colliders.cli:main"
40
-
41
- [dependency-groups]
42
- dev = [
43
- "pytest>=8",
44
- "ruff>=0.6",
45
- "onnx>=1.16,<2",
46
- "onnxruntime>=1.18,<2",
47
- ]
48
-
49
- [tool.setuptools.packages.find]
50
- where = ["src"]
51
-
52
- [tool.setuptools.dynamic]
53
- version = { attr = "gnn4colliders.__version__" }
54
-
55
- [tool.uv.sources]
56
- torch = [
57
- { index = "pytorch-cu130", marker = "sys_platform == 'linux' and platform_machine == 'x86_64'" },
58
- ]
59
-
60
- [[tool.uv.index]]
61
- name = "pytorch-cu130"
62
- url = "https://download.pytorch.org/whl/cu130"
63
- explicit = true
64
-
65
- [tool.pytest.ini_options]
66
- testpaths = ["tests"]
67
- addopts = "-ra"
68
- markers = [
69
- "gpu: tests requiring CUDA",
70
- ]
71
-
72
- [tool.ruff]
73
- line-length = 88
74
- target-version = "py314"
75
- src = ["src"]
76
-
77
- [tool.ruff.lint]
78
- select = ["E", "F", "I"]
79
-
80
- [tool.ruff.format]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
root_gnn_dgl/README.md ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # root_gnn_dgl
2
+
3
+ ## Data Directory (for Hackathon)
4
+ `/global/cfs/projectdirs/trn007/lbl_atlas/data/`
5
+
6
+ * `stats_all`: full statistics sample, ~10M events per process
7
+ * `stats_100K`: reduced statistics sample, 100K events per process
8
+ * `processed_graphs`: graphs that have already been processed
9
+ * `scores`: a copy of the samples along with the GNN scores for each event
10
+
11
+ ## Environment Setup
12
+
13
+ The environment dependencies for this project are listed in `setup/environment.yml`. Follow the steps below to set up the environment:
14
+
15
+ ### Step 1: Install Conda
16
+ If you don’t already have Conda installed, install either Miniconda (lightweight) or Anaconda (full version):
17
+
18
+ - **Miniconda**: Download and install from [https://docs.conda.io/en/latest/miniconda.html](https://docs.conda.io/en/latest/miniconda.html).
19
+ - **Anaconda**: Download and install from [https://www.anaconda.com/products/distribution](https://www.anaconda.com/products/distribution).
20
+
21
+ ### Step 2: Clone the Repository
22
+ Clone this repository to your local machine:
23
+ ```bash
24
+ git init
25
+ git lfs install
26
+ git clone https://huggingface.co/HWresearch/GNN4Colliders
27
+ ```
28
+ If you want to clone without large files - just their pointers
29
+ ```bash
30
+ GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/HWresearch/GNN4Colliders
31
+ ```
32
+
33
+ ### Step 3: Create the Conda Environment
34
+ Use the `environment.yml` file to create the Conda environment:
35
+ ```bash
36
+ conda env create -f setup/environment.yml -n <environment_name>
37
+ ```
38
+
39
+ ### Step 4: Activate the Environment
40
+ Activate the newly created environment:
41
+ ```bash
42
+ conda activate <environment_name>
43
+ ```
44
+ Replace <environment_name> with the name of the environment specified in Step 4.
45
+
46
+ ### Step 5: Test the Environment
47
+ Run the `setup/test_setup.py` script to confirm that all packages needed for training are properly set up.
48
+ ```bash
49
+ python setup/test_setup.py
50
+ ```
51
+ ## Running the Demo
52
+ The demo training is an example of our ML workflow, consisting of training a pretrained model, then finetuning it for an analysis task, while also training a model for the analysis task from scratch. The config files for the demo are located in the directory `configs/stats_100K/`. The demo can be run on a login node on Perlmutter (if enough GPU memory is availble).
53
+
54
+ To check login node GPU memory availability, use the command `nvidia-smi`. If there is not enough memory available, you can switch to another login node with the command `ssh login**`, where `**` is a number between 0 and 39.
55
+
56
+ For better performance, it is recommended to run the training and inference of the demo on a shared interactive node, where you have access to one exclusive GPU. An interactive node can be requested using the shell script in `jobs/interactive.sh`.
57
+
58
+ The pretraining for the demo is a multiclass classification training on 12 datasets corresponding to 12 distinct physics processes, containing 100,000 simulated collision events each. The pretraining is then fintuned on a binary classification task between two datasets containing 100,000 simulated collision events each for two different processes, called ttH CP Even and ttH CP Odd.
59
+
60
+ The entire demo can be ran with the command
61
+ ```bash
62
+ source run_demo.sh
63
+ ```
64
+
65
+ This shell script can also be used as an example to run the entire workflow.
66
+
67
+ ## Data Preparation
68
+ The first step in the process is to convert the events stored in ROOT files into DGL graph objects. This conversion is handled automatically by the Dataset objects during their creation, provided the graph data has not already been saved to disk. To accomplish this, a simple script is used to initialize the relevant Dataset object and then exit. This script needs to be executed for each data chunk in each dataset being used for training.
69
+
70
+ Below is an example of how to use the `scripts/prep_data.py` script:
71
+
72
+ ```bash
73
+ datasets=("ttH" "tHjb" "ggF" "VBF" "WH" "ZH" "ttyy" "tttt" "SingleT_schan" "ttbar" "ttW" "ttt")
74
+ chunks=3
75
+
76
+ for data in "${datasets[@]}"; do
77
+ python scripts/prep_data.py --config configs/demo/pretraining_multiclass.yaml --dataset "$data" --shuffle_mode --chunk 0
78
+ for ((i=0; i<chunks; i++)); do
79
+ python scripts/prep_data.py --config configs/demo/pretraining_multiclass.yaml --dataset "$data" --shuffle_mode --chunk "$i"
80
+ done
81
+ done
82
+ ```
83
+
84
+ The `--shuffle_mode` flag performs shuffling and pre-batches the graphs in each chunk, since holding the entire dataset in memory and shuffling it together can be prohibitive for large datasets.
85
+
86
+ You will probably see a `list index out of range error`. This is expected, and the program will still save your graphs to disk before throwing this error. Fixing this error is a WIP, but for now can be ignored
87
+ ```python
88
+ dgl.save_graphs(str(graph_path).replace('.bin', f'_{self.process_chunks[i]}.bin'), self.graph_chunks[i], {'labels': self.label_chunks[i], 'tracking': self.tracking_chunks[i], 'global': self.global_chunks[i]})
89
+ IndexError: list index out of range
90
+ ```
91
+
92
+ ## Training
93
+ Training is run by `scripts/training_script`. `--preshuffle` tells it to use the preshuffled and batched graphs rather than shuffling and batching on the fly, and `--restart` can be used to force the training to start from the beginning rather than from the last available checkpoint.
94
+
95
+ Using the `--nocompile` arguement is also recommended, as using `torch.compile()` requires padding the graphs beforehand during data processing.
96
+
97
+ ```bash
98
+ python scripts/training_script.py --config configs/stats_100K/pretraining_multiclass.yaml --preshuffle --nocompile --lazy
99
+ ```
100
+
101
+ This step should produce the training directory `trainings/stats_100K/pretraining_multiclass/` containing a copy of the config file, checkpoints (`model_epoch_*.pt`) with the model weights after each epoch of training, npz files with the GNN outputs for each event after each epoch of training, and two files `training.log` and `training.png` which summarize the model performance and convergence.
102
+
103
+ ## Inference
104
+ Inference is done by `scripts/inference.py`. This script applies the model defined by `--config` onto the samples located at `--target`. A new set of samples with the GNN scores saved as the `--branch` in the ntuples will be created at `--destination`. The `--chunks` arguement will handel the inference in specified chunks.
105
+
106
+ ```bash
107
+ python scripts/inference.py \
108
+ --target "/global/cfs/projectdirs/trn007/lbl_atlas/data/stats_100K/ttH_NLO.root" \
109
+ --destination "/global/cfs/projectdirs/trn007/lbl_atlas/data/scores/stats_100K/ttH_NLO.root" \
110
+ --config "configs/stats_100K/finetuning_ttH_CP_even_vs_odd.yaml" \
111
+ --chunks 1 \
112
+ --chunkno 0 \
113
+ --write \
114
+ --branch 'GNN_Score'
115
+ ```
116
+
117
+ You can also input a list as the `--config` and the `--branch` to simultaneously apply multiple models onto the same set of samples. An example on how to do this in shell script is in the `run_demo.sh` file.
118
+
119
+ ## Running Jobs + Parallelization
120
+
121
+ Perlmutter job scripts are located in `jobs/`. Job scripts are separated into 3 categories: `prep_data`, `training`, and `inference`.
122
+
123
+ The different shell scripts show how to request GPU or CPU nodes from Perlmutter, which are reqired for running jobs.
124
+
125
+ ### Data Prep Parallelization
126
+
127
+ The preparation of data can be parallelized across several threads on a CPU. The parallelization is handled by python's `concurrent.futures.ThreadPoolExecutor`.
128
+
129
+ ### Training Parallelization
130
+
131
+ Parallelization of GNN training is implemented with `torch.DistributedDataParallel`. The job submission script is in `jobs/training/multinode/submit.sh`.
132
+
133
+ When running a multinode training, remember to use the `--multinode` run-time arguement for the training script.
134
+
135
+ ### Inference Parallelization
136
+
137
+ Model inference parallelization is done with `mpi4py` (currently not listed in the conda environment requirements). You can run the parallel inference script with `mpirun -np <num_nodes> python jobs/inference/run_inference.py`.
root_gnn_dgl/configs/attention/ttH_CP_even_vs_odd.yaml ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Training_Name: ttH_CP_even_vs_odd
2
+ Training_Directory: trainings/attention/ttH_CP_even_vs_odd
3
+ Model:
4
+ module: models.GCN
5
+ class: Attention_Edge_Network
6
+ args:
7
+ hid_size: 64
8
+ in_size: 7
9
+ out_size: 1
10
+ n_layers: 4
11
+ n_proc_steps: 4
12
+ dropout: 0
13
+ num_heads: 2
14
+ Training:
15
+ epochs: 500
16
+ batch_size: 1024
17
+ learning_rate: 0.0001
18
+ gamma: 0.99
19
+ Datasets:
20
+ ttH_CP_even: &dataset_defn
21
+ module: root_gnn_base.dataset
22
+ class: LazyDataset
23
+ shuffle_chunks: 3
24
+ batch_size: 1024
25
+ padding_mode: NODE
26
+ args: &dataset_args
27
+ name: ttH_CP_even
28
+ label: 0
29
+ # weight_var: weight
30
+ chunks: 3
31
+ buffer_size: 2
32
+ file_names: ttH_NLO.root
33
+ tree_name: output
34
+ fold_var: Number
35
+ raw_dir: /global/cfs/projectdirs/trn007/lbl_atlas/data/stats_100K/
36
+ save_dir: /global/cfs/projectdirs/trn007/lbl_atlas/data/processed_graphs/attention/ttH_CP_even_vs_odd/
37
+ node_branch_names:
38
+ - [jet_pt, ele_pt, mu_pt, ph_pt, MET_met]
39
+ - [jet_eta, ele_eta, mu_eta, ph_eta, 0]
40
+ - [jet_phi, ele_phi, mu_phi, ph_phi, MET_phi]
41
+ - CALC_E
42
+ - [jet_btag, 0, 0, 0, 0]
43
+ - [0, ele_charge, mu_charge, 0, 0]
44
+ - NODE_TYPE
45
+ node_branch_types: [vector, vector, vector, vector, single]
46
+ node_feature_scales: [1e-1, 1, 1, 1e-1, 1, 1, 1]
47
+ folding:
48
+ n_folds: 4
49
+ test: [0]
50
+ # validation: 1
51
+ train: [1, 2, 3]
52
+ ttH_CP_odd:
53
+ <<: *dataset_defn
54
+ args:
55
+ <<: *dataset_args
56
+ name: ttH_CP_odd
57
+ label: 1
58
+ file_names: ttH_CPodd.root
root_gnn_dgl/configs/stats_100K/finetuning_ttH_CP_even_vs_odd.yaml ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Training_Name: finetuning_ttH_CP_even_vs_odd
2
+ Training_Directory: trainings/stats_100K/finetuning_ttH_CP_even_vs_odd
3
+ Model:
4
+ module: models.GCN
5
+ class: Transferred_Learning_Finetuning
6
+ args:
7
+ pretraining_path: trainings/stats_100K/pretraining_multiclass/model_epoch_100.pt # update to the last epoch of the pretraining
8
+ pretraining_model:
9
+ module: models.GCN
10
+ class: Edge_Network
11
+ args:
12
+ hid_size: 64
13
+ in_size: 7
14
+ out_size: 12
15
+ n_layers: 4
16
+ n_proc_steps: 4
17
+ hid_size: 64
18
+ in_size: 7
19
+ out_size: 1
20
+ n_layers: 4
21
+ n_proc_steps: 4
22
+ dropout: 0
23
+ Training:
24
+ epochs: 500
25
+ batch_size: 1024
26
+ learning_rate: 0.0001
27
+ gamma: 0.99
28
+ Datasets:
29
+ ttH_CP_even: &dataset_defn
30
+ module: root_gnn_base.dataset
31
+ class: LazyDataset
32
+ shuffle_chunks: 3
33
+ batch_size: 1024
34
+ padding_mode: NONE #one of STEPS, FIXED, or NONE
35
+ args: &dataset_args
36
+ name: ttH_CP_even
37
+ label: 0
38
+ # weight_var: weight
39
+ chunks: 3
40
+ buffer_size: 2
41
+ file_names: ttH_NLO.root
42
+ tree_name: output
43
+ fold_var: Number
44
+ raw_dir: /global/cfs/projectdirs/trn007/lbl_atlas/data/stats_100K/
45
+ save_dir: /global/cfs/projectdirs/trn007/lbl_atlas/data/processed_graphs/stats_100K/ttH_CP_even_vs_odd/
46
+ node_branch_names:
47
+ - [jet_pt, ele_pt, mu_pt, ph_pt, MET_met]
48
+ - [jet_eta, ele_eta, mu_eta, ph_eta, 0]
49
+ - [jet_phi, ele_phi, mu_phi, ph_phi, MET_phi]
50
+ - CALC_E
51
+ - [jet_btag, 0, 0, 0, 0]
52
+ - [0, ele_charge, mu_charge, 0, 0]
53
+ - NODE_TYPE
54
+ node_branch_types: [vector, vector, vector, vector, single]
55
+ node_feature_scales: [1e-1, 1, 1, 1e-1, 1, 1, 1]
56
+ folding:
57
+ n_folds: 4
58
+ test: [0]
59
+ # validation: 1
60
+ train: [1, 2, 3]
61
+ ttH_CP_odd:
62
+ <<: *dataset_defn
63
+ args:
64
+ <<: *dataset_args
65
+ name: ttH_CP_odd
66
+ label: 1
67
+ file_names: ttH_CPodd.root
root_gnn_dgl/configs/stats_100K/pretraining_multiclass.yaml ADDED
@@ -0,0 +1,134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Training_Name: pretraining_multiclass
2
+ Training_Directory: trainings/stats_100K/pretraining_multiclass/
3
+ Model:
4
+ module: models.GCN
5
+ class: Edge_Network
6
+ args:
7
+ hid_size: 64
8
+ in_size: 7
9
+ out_size: 12
10
+ n_layers: 4
11
+ n_proc_steps: 4
12
+ dropout: 0
13
+ Loss:
14
+ module: torch.nn
15
+ class: CrossEntropyLoss
16
+ args: {}
17
+ finish:
18
+ module: torch.nn
19
+ class: Softmax
20
+ args: {dim: 1}
21
+ Training:
22
+ epochs: 500
23
+ batch_size: 1024
24
+ learning_rate: 0.0001
25
+ gamma: 0.99
26
+ Datasets:
27
+ ttH: &dataset_defn
28
+ module: root_gnn_base.dataset
29
+ class: LazyDataset
30
+ shuffle_chunks: 3
31
+ padding_mode: NONE #one of STEPS, FIXED, or NONE
32
+ args: &dataset_args
33
+ name: ttH
34
+ label: 0
35
+ # weight_var: weight
36
+ chunks: 3
37
+ buffer_size: 2
38
+ file_names: ttH_NLO_inc.root
39
+ tree_name: output
40
+ fold_var: Number
41
+ raw_dir: /global/cfs/projectdirs/trn007/lbl_atlas/data/stats_100K/
42
+ save_dir: /global/cfs/projectdirs/trn007/lbl_atlas/data/processed_graphs/stats_100K/pretraining_multiclass/
43
+ node_branch_names:
44
+ - [jet_pt, ele_pt, mu_pt, ph_pt, MET_met]
45
+ - [jet_eta, ele_eta, mu_eta, ph_eta, 0]
46
+ - [jet_phi, ele_phi, mu_phi, ph_phi, MET_phi]
47
+ - CALC_E
48
+ - [jet_btag, 0, 0, 0, 0]
49
+ - [0, ele_charge, mu_charge, 0, 0]
50
+ - NODE_TYPE
51
+ node_branch_types: [vector, vector, vector, vector, single]
52
+ node_feature_scales: [1e-1, 1, 1, 1e-1, 1, 1, 1]
53
+ folding:
54
+ n_folds: 4
55
+ test: [0]
56
+ # validation: [1]
57
+ train: [1, 2, 3]
58
+ tHjb:
59
+ <<: *dataset_defn
60
+ args:
61
+ <<: *dataset_args
62
+ name: tHjb
63
+ label: 1
64
+ file_names: tHjb_NLO_inc.root
65
+ ggF:
66
+ <<: *dataset_defn
67
+ args:
68
+ <<: *dataset_args
69
+ name: ggF
70
+ label: 2
71
+ file_names: ggF_NLO_inc.root
72
+ VBF:
73
+ <<: *dataset_defn
74
+ args:
75
+ <<: *dataset_args
76
+ name: VBF
77
+ label: 3
78
+ file_names: VBF_NLO_inc.root
79
+ WH:
80
+ <<: *dataset_defn
81
+ args:
82
+ <<: *dataset_args
83
+ name: WH
84
+ label: 4
85
+ file_names: WH_NLO_inc.root
86
+ ZH:
87
+ <<: *dataset_defn
88
+ args:
89
+ <<: *dataset_args
90
+ name: ZH
91
+ label: 5
92
+ file_names: ZH_NLO_inc.root
93
+ ttyy:
94
+ <<: *dataset_defn
95
+ args:
96
+ <<: *dataset_args
97
+ name: ttyy_ch
98
+ label: 6
99
+ file_names: 'ttyy.root'
100
+ tttt:
101
+ <<: *dataset_defn
102
+ args:
103
+ <<: *dataset_args
104
+ name: tttt
105
+ label: 7
106
+ file_names: 'tttt.root'
107
+ SingleT_schan:
108
+ <<: *dataset_defn
109
+ args:
110
+ <<: *dataset_args
111
+ name: SingleT_schan
112
+ label: 8
113
+ file_names: 'SingleT_schan.root'
114
+ ttbar:
115
+ <<: *dataset_defn
116
+ args:
117
+ <<: *dataset_args
118
+ name: ttbar
119
+ label: 9
120
+ file_names: 'ttbar.root'
121
+ ttW:
122
+ <<: *dataset_defn
123
+ args:
124
+ <<: *dataset_args
125
+ name: ttW
126
+ label: 10
127
+ file_names: 'ttW.root'
128
+ ttt:
129
+ <<: *dataset_defn
130
+ args:
131
+ <<: *dataset_args
132
+ name: ttt
133
+ label: 11
134
+ file_names: 'ttt.root'
root_gnn_dgl/configs/stats_100K/ttH_CP_even_vs_odd.yaml ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Training_Name: ttH_CP_even_vs_odd
2
+ Training_Directory: trainings/stats_100K/ttH_CP_even_vs_odd
3
+ Model:
4
+ module: models.GCN
5
+ class: Edge_Network
6
+ args:
7
+ hid_size: 64
8
+ in_size: 7
9
+ out_size: 1
10
+ n_layers: 4
11
+ n_proc_steps: 4
12
+ dropout: 0
13
+ Training:
14
+ epochs: 500
15
+ batch_size: 1024
16
+ learning_rate: 0.0001
17
+ gamma: 0.99
18
+ Datasets:
19
+ ttH_CP_even: &dataset_defn
20
+ module: root_gnn_base.dataset
21
+ class: LazyDataset
22
+ shuffle_chunks: 3
23
+ batch_size: 1024
24
+ padding_mode: NONE #one of STEPS, FIXED, or NONE
25
+ args: &dataset_args
26
+ name: ttH_CP_even
27
+ label: 0
28
+ # weight_var: weight
29
+ chunks: 3
30
+ buffer_size: 2
31
+ file_names: ttH_NLO.root
32
+ tree_name: output
33
+ fold_var: Number
34
+ raw_dir: /global/cfs/projectdirs/trn007/lbl_atlas/data/stats_100K/
35
+ save_dir: /global/cfs/projectdirs/trn007/lbl_atlas/data/processed_graphs/stats_100K/ttH_CP_even_vs_odd/
36
+ node_branch_names:
37
+ - [jet_pt, ele_pt, mu_pt, ph_pt, MET_met]
38
+ - [jet_eta, ele_eta, mu_eta, ph_eta, 0]
39
+ - [jet_phi, ele_phi, mu_phi, ph_phi, MET_phi]
40
+ - CALC_E
41
+ - [jet_btag, 0, 0, 0, 0]
42
+ - [0, ele_charge, mu_charge, 0, 0]
43
+ - NODE_TYPE
44
+ node_branch_types: [vector, vector, vector, vector, single]
45
+ node_feature_scales: [1e-1, 1, 1, 1e-1, 1, 1, 1]
46
+ folding:
47
+ n_folds: 4
48
+ test: [0]
49
+ # validation: 1
50
+ train: [1, 2, 3]
51
+ ttH_CP_odd:
52
+ <<: *dataset_defn
53
+ args:
54
+ <<: *dataset_args
55
+ name: ttH_CP_odd
56
+ label: 1
57
+ file_names: ttH_CPodd.root
root_gnn_dgl/configs/stats_all/finetuning_ttH_CP_even_vs_odd.yaml ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Training_Name: finetuning_ttH_CP_even_vs_odd
2
+ Training_Directory: trainings/stats_all/finetuning_ttH_CP_even_vs_odd
3
+ Model:
4
+ module: models.GCN
5
+ class: Transferred_Learning_Finetuning
6
+ args:
7
+ pretraining_path: trainings/stats_100K/pretraining_multiclass/model_epoch_100.pt # update to the last epoch of the pretraining
8
+ pretraining_model:
9
+ module: models.GCN
10
+ class: Edge_Network
11
+ args:
12
+ hid_size: 64
13
+ in_size: 7
14
+ out_size: 12
15
+ n_layers: 4
16
+ n_proc_steps: 4
17
+ hid_size: 64
18
+ in_size: 7
19
+ out_size: 1
20
+ n_layers: 4
21
+ n_proc_steps: 4
22
+ dropout: 0
23
+ Datasets:
24
+ ttH_CP_even: &dataset_defn
25
+ module: root_gnn_base.dataset
26
+ class: LazyDataset
27
+ shuffle_chunks: 10
28
+ batch_size: 1024
29
+ padding_mode: NONE #one of STEPS, FIXED, or NONE
30
+ args: &dataset_args
31
+ name: ttH_CP_even
32
+ label: 0
33
+ # weight_var: weight
34
+ chunks: 10
35
+ buffer_size: 3
36
+ file_names: ttH_NLO.root
37
+ tree_name: output
38
+ fold_var: Number
39
+ raw_dir: /global/cfs/projectdirs/trn007/lbl_atlas/data/stats_all/
40
+ save_dir: /global/cfs/projectdirs/trn007/lbl_atlas/data/processed_graphs/stats_all/ttH_CP_even_vs_odd/
41
+ node_branch_names:
42
+ - [jet_pt, ele_pt, mu_pt, ph_pt, MET_met]
43
+ - [jet_eta, ele_eta, mu_eta, ph_eta, 0]
44
+ - [jet_phi, ele_phi, mu_phi, ph_phi, MET_phi]
45
+ - CALC_E
46
+ - [jet_btag, 0, 0, 0, 0]
47
+ - [0, ele_charge, mu_charge, 0, 0]
48
+ - NODE_TYPE
49
+ node_branch_types: [vector, vector, vector, vector, single]
50
+ node_feature_scales: [1e-1, 1, 1, 1e-1, 1, 1, 1]
51
+ folding:
52
+ n_folds: 4
53
+ test: [0]
54
+ # validation: 1
55
+ train: [1, 2, 3]
56
+ ttH_CP_odd:
57
+ <<: *dataset_defn
58
+ args:
59
+ <<: *dataset_args
60
+ name: ttH_CP_odd
61
+ label: 1
62
+ file_names: ttH_CPodd.root
root_gnn_dgl/configs/stats_all/pretraining_multiclass.yaml ADDED
@@ -0,0 +1,134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Training_Name: pretraining_multiclass
2
+ Training_Directory: trainings/stats_all/pretraining_multiclass/
3
+ Model:
4
+ module: models.GCN
5
+ class: Edge_Network
6
+ args:
7
+ hid_size: 64
8
+ in_size: 7
9
+ out_size: 12
10
+ n_layers: 4
11
+ n_proc_steps: 4
12
+ dropout: 0
13
+ Loss:
14
+ module: torch.nn
15
+ class: CrossEntropyLoss
16
+ args: {}
17
+ finish:
18
+ module: torch.nn
19
+ class: Softmax
20
+ args: {dim: 1}
21
+ Training:
22
+ epochs: 500
23
+ batch_size: 1024
24
+ learning_rate: 0.0001
25
+ gamma: 0.99
26
+ Datasets:
27
+ ttH: &dataset_defn
28
+ module: root_gnn_base.dataset
29
+ class: LazyDataset
30
+ shuffle_chunks: 10
31
+ padding_mode: NONE #one of STEPS, FIXED, or NONE
32
+ args: &dataset_args
33
+ name: ttH
34
+ label: 0
35
+ # weight_var: weight
36
+ chunks: 10
37
+ buffer_size: 3
38
+ file_names: ttH_NLO_inc.root
39
+ tree_name: output
40
+ fold_var: Number
41
+ raw_dir: /global/cfs/projectdirs/trn007/lbl_atlas/data/stats_all/
42
+ save_dir: /global/cfs/projectdirs/trn007/lbl_atlas/data/processed_graphs/stats_all/pretraining_multiclass/
43
+ node_branch_names:
44
+ - [jet_pt, ele_pt, mu_pt, ph_pt, MET_met]
45
+ - [jet_eta, ele_eta, mu_eta, ph_eta, 0]
46
+ - [jet_phi, ele_phi, mu_phi, ph_phi, MET_phi]
47
+ - CALC_E
48
+ - [jet_btag, 0, 0, 0, 0]
49
+ - [0, ele_charge, mu_charge, 0, 0]
50
+ - NODE_TYPE
51
+ node_branch_types: [vector, vector, vector, vector, single]
52
+ node_feature_scales: [1e-1, 1, 1, 1e-1, 1, 1, 1]
53
+ folding:
54
+ n_folds: 4
55
+ test: [0]
56
+ # validation: [1]
57
+ train: [1, 2, 3]
58
+ tHjb:
59
+ <<: *dataset_defn
60
+ args:
61
+ <<: *dataset_args
62
+ name: tHjb
63
+ label: 1
64
+ file_names: tHjb_NLO_inc.root
65
+ ggF:
66
+ <<: *dataset_defn
67
+ args:
68
+ <<: *dataset_args
69
+ name: ggF
70
+ label: 2
71
+ file_names: ggF_NLO_inc.root
72
+ VBF:
73
+ <<: *dataset_defn
74
+ args:
75
+ <<: *dataset_args
76
+ name: VBF
77
+ label: 3
78
+ file_names: VBF_NLO_inc.root
79
+ WH:
80
+ <<: *dataset_defn
81
+ args:
82
+ <<: *dataset_args
83
+ name: WH
84
+ label: 4
85
+ file_names: WH_NLO_inc.root
86
+ ZH:
87
+ <<: *dataset_defn
88
+ args:
89
+ <<: *dataset_args
90
+ name: ZH
91
+ label: 5
92
+ file_names: ZH_NLO_inc.root
93
+ ttyy:
94
+ <<: *dataset_defn
95
+ args:
96
+ <<: *dataset_args
97
+ name: ttyy_ch
98
+ label: 6
99
+ file_names: 'ttyy.root'
100
+ tttt:
101
+ <<: *dataset_defn
102
+ args:
103
+ <<: *dataset_args
104
+ name: tttt
105
+ label: 7
106
+ file_names: 'tttt.root'
107
+ SingleT_schan:
108
+ <<: *dataset_defn
109
+ args:
110
+ <<: *dataset_args
111
+ name: SingleT_schan
112
+ label: 8
113
+ file_names: 'SingleT_schan.root'
114
+ ttbar:
115
+ <<: *dataset_defn
116
+ args:
117
+ <<: *dataset_args
118
+ name: ttbar
119
+ label: 9
120
+ file_names: 'ttbar.root'
121
+ ttW:
122
+ <<: *dataset_defn
123
+ args:
124
+ <<: *dataset_args
125
+ name: ttW
126
+ label: 10
127
+ file_names: 'ttW.root'
128
+ ttt:
129
+ <<: *dataset_defn
130
+ args:
131
+ <<: *dataset_args
132
+ name: ttt
133
+ label: 11
134
+ file_names: 'ttt.root'
root_gnn_dgl/configs/stats_all/ttH_CP_even_vs_odd.yaml ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Training_Name: ttH_CP_even_vs_odd
2
+ Training_Directory: trainings/stats_all/ttH_CP_even_vs_odd
3
+ Model:
4
+ module: models.GCN
5
+ class: Edge_Network
6
+ args:
7
+ hid_size: 64
8
+ in_size: 7
9
+ out_size: 1
10
+ n_layers: 4
11
+ n_proc_steps: 4
12
+ dropout: 0
13
+ Training:
14
+ epochs: 500
15
+ batch_size: 1024
16
+ learning_rate: 0.0001
17
+ gamma: 0.99
18
+ Datasets:
19
+ ttH_CP_even: &dataset_defn
20
+ module: root_gnn_base.dataset
21
+ class: LazyDataset
22
+ shuffle_chunks: 10
23
+ batch_size: 1024
24
+ padding_mode: NONE #one of STEPS, FIXED, or NONE
25
+ args: &dataset_args
26
+ name: ttH_CP_even
27
+ label: 0
28
+ # weight_var: weight
29
+ chunks: 10
30
+ buffer_size: 3
31
+ file_names: ttH_NLO.root
32
+ tree_name: output
33
+ fold_var: Number
34
+ raw_dir: /global/cfs/projectdirs/trn007/lbl_atlas/data/stats_all/
35
+ save_dir: /global/cfs/projectdirs/trn007/lbl_atlas/data/processed_graphs/stats_all/ttH_CP_even_vs_odd/
36
+ node_branch_names:
37
+ - [jet_pt, ele_pt, mu_pt, ph_pt, MET_met]
38
+ - [jet_eta, ele_eta, mu_eta, ph_eta, 0]
39
+ - [jet_phi, ele_phi, mu_phi, ph_phi, MET_phi]
40
+ - CALC_E
41
+ - [jet_btag, 0, 0, 0, 0]
42
+ - [0, ele_charge, mu_charge, 0, 0]
43
+ - NODE_TYPE
44
+ node_branch_types: [vector, vector, vector, vector, single]
45
+ node_feature_scales: [1e-1, 1, 1, 1e-1, 1, 1, 1]
46
+ folding:
47
+ n_folds: 4
48
+ test: [0]
49
+ # validation: 1
50
+ train: [1, 2, 3]
51
+ ttH_CP_odd:
52
+ <<: *dataset_defn
53
+ args:
54
+ <<: *dataset_args
55
+ name: ttH_CP_odd
56
+ label: 1
57
+ file_names: ttH_CPodd.root
root_gnn_dgl/jobs/cpu.sh ADDED
@@ -0,0 +1 @@
 
 
1
+ salloc --nodes=1 --ntasks=64 --cpus-per-task=1 --qos=interactive --time=04:00:00 --constraint=cpu --account=trn007
root_gnn_dgl/jobs/inference/run_inference.py ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import subprocess
3
+ from mpi4py import MPI
4
+
5
+ # Define the number of GPUs per node
6
+ GPUS_PER_NODE = 4
7
+
8
+ # Define your files, configs, and branch namesfiles = [
9
+ files = [
10
+ "merged_aMCPy8_tHjb125_CP_0_AF3_had_scaled.root",
11
+ "merged_aMCPy8_tHjb125_CP_0_AF3_lep_scaled.root",
12
+ "merged_aMCPy8_tHjb125_CP_0_FullSim_had_scaled.root",
13
+ "merged_aMCPy8_tHjb125_CP_0_FullSim_lep_scaled.root",
14
+ "merged_aMCPy8_tHjb125_CP_15_AF3_had_scaled.root",
15
+ "merged_aMCPy8_tHjb125_CP_15_AF3_lep_scaled.root",
16
+ "merged_aMCPy8_tHjb125_CP_30_AF3_had_scaled.root",
17
+ "merged_aMCPy8_tHjb125_CP_30_AF3_lep_scaled.root",
18
+ "merged_aMCPy8_tHjb125_CP_45_AF3_had_scaled.root",
19
+ "merged_aMCPy8_tHjb125_CP_45_AF3_lep_scaled.root",
20
+ "merged_aMCPy8_tHjb125_CP_45_FullSim_had_scaled.root",
21
+ "merged_aMCPy8_tHjb125_CP_45_FullSim_lep_scaled.root",
22
+ "merged_aMCPy8_tHjb125_CP_60_AF3_had_scaled.root",
23
+ "merged_aMCPy8_tHjb125_CP_60_AF3_lep_scaled.root",
24
+ "merged_aMCPy8_tHjb125_CP_75_AF3_had_scaled.root",
25
+ "merged_aMCPy8_tHjb125_CP_75_AF3_lep_scaled.root",
26
+ "merged_aMCPy8_tHjb125_CP_90_AF3_had_scaled.root",
27
+ "merged_aMCPy8_tHjb125_CP_90_AF3_lep_scaled.root",
28
+ "merged_aMCPy8_ttH125_CP_0_AF3_had_scaled.root",
29
+ "merged_aMCPy8_ttH125_CP_0_AF3_lep_scaled.root",
30
+ "merged_aMCPy8_ttH125_CP_0_FullSim_had_scaled.root",
31
+ "merged_aMCPy8_ttH125_CP_0_FullSim_lep_scaled.root",
32
+ "merged_aMCPy8_ttH125_CP_15_AF3_had_scaled.root",
33
+ "merged_aMCPy8_ttH125_CP_15_AF3_lep_scaled.root",
34
+ "merged_aMCPy8_ttH125_CP_30_AF3_had_scaled.root",
35
+ "merged_aMCPy8_ttH125_CP_30_AF3_lep_scaled.root",
36
+ "merged_aMCPy8_ttH125_CP_45_AF3_had_scaled.root",
37
+ "merged_aMCPy8_ttH125_CP_45_AF3_lep_scaled.root",
38
+ "merged_aMCPy8_ttH125_CP_45_FullSim_had_scaled.root",
39
+ "merged_aMCPy8_ttH125_CP_45_FullSim_lep_scaled.root",
40
+ "merged_aMCPy8_ttH125_CP_60_AF3_had_scaled.root",
41
+ "merged_aMCPy8_ttH125_CP_60_AF3_lep_scaled.root",
42
+ "merged_aMCPy8_ttH125_CP_75_AF3_had_scaled.root",
43
+ "merged_aMCPy8_ttH125_CP_75_AF3_lep_scaled.root",
44
+ "merged_aMCPy8_ttH125_CP_90_AF3_had_scaled.root",
45
+ "merged_aMCPy8_ttH125_CP_90_AF3_lep_scaled.root",
46
+ "merged_aMCPy8_tWH125_CP_0_AF3_had_scaled.root",
47
+ "merged_aMCPy8_tWH125_CP_0_AF3_lep_scaled.root",
48
+ "merged_aMCPy8_tWH125_CP_0_FullSim_had_scaled.root",
49
+ "merged_aMCPy8_tWH125_CP_0_FullSim_lep_scaled.root",
50
+ "merged_aMCPy8_tWH125_CP_15_AF3_had_scaled.root",
51
+ "merged_aMCPy8_tWH125_CP_15_AF3_lep_scaled.root",
52
+ "merged_aMCPy8_tWH125_CP_30_AF3_had_scaled.root",
53
+ "merged_aMCPy8_tWH125_CP_30_AF3_lep_scaled.root",
54
+ "merged_aMCPy8_tWH125_CP_45_AF3_had_scaled.root",
55
+ "merged_aMCPy8_tWH125_CP_45_AF3_lep_scaled.root",
56
+ "merged_aMCPy8_tWH125_CP_45_FullSim_had_scaled.root",
57
+ "merged_aMCPy8_tWH125_CP_45_FullSim_lep_scaled.root",
58
+ "merged_aMCPy8_tWH125_CP_60_AF3_had_scaled.root",
59
+ "merged_aMCPy8_tWH125_CP_60_AF3_lep_scaled.root",
60
+ "merged_aMCPy8_tWH125_CP_75_AF3_had_scaled.root",
61
+ "merged_aMCPy8_tWH125_CP_75_AF3_lep_scaled.root",
62
+ "merged_aMCPy8_tWH125_CP_90_AF3_had_scaled.root",
63
+ "merged_aMCPy8_tWH125_CP_90_AF3_lep_scaled.root",
64
+ "merged_hadnti_data.root",
65
+ "merged_hadti_data.root",
66
+ "merged_lepnti_data.root",
67
+ "merged_lepti_data.root",
68
+ "merged_MGPy8_ttyy_combined_FullSim_had_scaled.root",
69
+ "merged_MGPy8_ttyy_combined_FullSim_lep_scaled.root",
70
+ "merged_PhPy8_4FS_A14NNPDF_bbH125_FullSim_had_scaled.root",
71
+ "merged_PhPy8_4FS_A14NNPDF_bbH125_FullSim_lep_scaled.root",
72
+ "merged_PhPy8_ggH125_NNLOPS_FullSim_had_scaled.root",
73
+ "merged_PhPy8_ggH125_NNLOPS_FullSim_lep_scaled.root",
74
+ "merged_PhPy8_ggZH125_FullSim_had_scaled.root",
75
+ "merged_PhPy8_ggZH125_FullSim_lep_scaled.root",
76
+ "merged_PhPy8_VBFH125_FullSim_had_scaled.root",
77
+ "merged_PhPy8_VBFH125_FullSim_lep_scaled.root",
78
+ "merged_PhPy8_WmH125J_MINLO_FullSim_had_scaled.root",
79
+ "merged_PhPy8_WmH125J_MINLO_FullSim_lep_scaled.root",
80
+ "merged_PhPy8_WpH125J_MINLO_FullSim_had_scaled.root",
81
+ "merged_PhPy8_WpH125J_MINLO_FullSim_lep_scaled.root",
82
+ "merged_PhPy8_ZH125J_MINLO_FullSim_had_scaled.root",
83
+ "merged_PhPy8_ZH125J_MINLO_FullSim_lep_scaled.root",
84
+ ]
85
+ # Configurations for each type of file
86
+ config = [
87
+ "configs/model_configs/run_3_ttH/v06/sb_yukawa_no_weights.yaml",
88
+ "configs/model_configs/run_3_ttH/v06/sb_yukawa_weights.yaml",
89
+ "configs/model_configs/run_3_ttH/v06/tHjb_CP_no_weights.yaml",
90
+ "configs/model_configs/run_3_ttH/v06/tHjb_CP_weights.yaml",
91
+ "configs/model_configs/run_3_ttH/v06/ttH_CP_no_weights.yaml",
92
+ "configs/model_configs/run_3_ttH/v06/ttH_CP_weights.yaml",
93
+ "configs/model_configs/run_3_ttH/v06/ttH_tHjb_tWH_CP_no_weights.yaml",
94
+ "configs/model_configs/run_3_ttH/v06/ttH_tHjb_tWH_CP_weights.yaml",
95
+ "configs/model_configs/run_3_ttH/v06/tWH_CP_no_weights.yaml",
96
+ "configs/model_configs/run_3_ttH/v06/tWH_CP_weights.yaml",
97
+
98
+ ]
99
+
100
+ # Branch names for each type of file
101
+ branch_name = [
102
+ "sb_yukawa_no_weights_score",
103
+ "sb_yukawa_weights_score",
104
+ "tHjb_CP_no_weights_score",
105
+ "tHjb_CP_weights_score",
106
+ "ttH_CP_no_weights_score",
107
+ "ttH_CP_weights_score",
108
+ "ttH_tHjb_tWH_CP_no_weights_score",
109
+ "ttH_tHjb_tWH_CP_weights_score",
110
+ "tWH_CP_no_weights_score",
111
+ "tWH_CP_weights_score",
112
+ ]
113
+
114
+ # MPI Initialization
115
+ comm = MPI.COMM_WORLD
116
+ rank = comm.Get_rank() # Process rank (unique ID for each process)
117
+ size = comm.Get_size() # Total number of processes across all nodes
118
+
119
+ # Master process manages the task queue
120
+ def master():
121
+ num_workers = size - 1 # Exclude the master process
122
+ task_queue = files[:] # Copy the list of files
123
+ workers_busy = [False] * num_workers # Track if workers are busy
124
+
125
+ print(f"Master process starting with {num_workers} workers.")
126
+
127
+ # Distribute initial tasks to workers
128
+ for worker_rank in range(1, size):
129
+ if task_queue:
130
+ # Send a file to the worker
131
+ file = task_queue.pop(0)
132
+ comm.send(file, dest=worker_rank, tag=0)
133
+ workers_busy[worker_rank - 1] = True
134
+ else:
135
+ # No tasks left, send termination signal
136
+ comm.send(None, dest=worker_rank, tag=1)
137
+
138
+ # Process results and assign new tasks dynamically
139
+ while any(workers_busy):
140
+ # Receive results from workers
141
+ status = MPI.Status()
142
+ result = comm.recv(source=MPI.ANY_SOURCE, tag=MPI.ANY_TAG, status=status)
143
+ worker_rank = status.Get_source()
144
+ workers_busy[worker_rank - 1] = False # Worker is now free
145
+
146
+ # Assign a new task if available
147
+ if task_queue:
148
+ file = task_queue.pop(0)
149
+ comm.send(file, dest=worker_rank, tag=0)
150
+ workers_busy[worker_rank - 1] = True
151
+ else:
152
+ # No tasks left, send termination signal
153
+ comm.send(None, dest=worker_rank, tag=1)
154
+
155
+ print("Master process: All tasks completed.")
156
+
157
+ # Worker processes handle tasks dynamically
158
+ def worker():
159
+ gpu_id = (rank - 1) % GPUS_PER_NODE # Assign GPU ID based on rank
160
+ print(f"Worker {rank} starting, GPU ID: {gpu_id}", flush=True)
161
+
162
+ while True:
163
+ # Receive a task from the master
164
+ file = comm.recv(source=0, tag=MPI.ANY_TAG)
165
+ if file is None:
166
+ # Termination signal received
167
+ print(f"Worker {rank}: Termination signal received.")
168
+ break
169
+
170
+ # Initialize config and branch_name for each file
171
+ local_config = config[:] # Create a copy of the global config
172
+ local_branch_name = branch_name[:] # Create a copy of the global branch_name
173
+
174
+ # Determine file type and append appropriate configurations
175
+ if "had" in file:
176
+ local_config += had_config # Append had-specific configurations
177
+ local_branch_name += had_branch_name # Append had-specific branch names
178
+ elif "lep" in file:
179
+ local_config += lep_config # Append lep-specific configurations
180
+ local_branch_name += lep_branch_name # Append lep-specific branch names
181
+
182
+ # Process the file
183
+ print(f"Worker {rank}: Processing file {file} on GPU {gpu_id}", flush=True)
184
+ print(f"branches = {local_branch_name}")
185
+ target = f"/global/cfs/projectdirs/atlas/joshua/ttHCP/ntuples/v02/preselection/merged/{file}"
186
+ destination = f"/global/cfs/projectdirs/atlas/joshua/ttHCP/ntuples/scores/gnn_v06/{file}"
187
+
188
+ # Set the GPU for this process
189
+ os.environ["CUDA_VISIBLE_DEVICES"] = str(gpu_id)
190
+
191
+ # Build the command
192
+ command = [
193
+ "python", "scripts/inference.py",
194
+ "--target", target,
195
+ "--destination", destination,
196
+ "--config", *local_config,
197
+ "--branch_name", *local_branch_name,
198
+ "--chunks", "1",
199
+ "--chunkno", "0",
200
+ "--write"
201
+ ]
202
+
203
+ # Execute the command
204
+ subprocess.run(command)
205
+
206
+ # Notify the master that the task is complete
207
+ comm.send(f"Worker {rank}: Finished {file}", dest=0, tag=0)
208
+
209
+ # Main function
210
+ if __name__ == "__main__":
211
+ if rank == 0:
212
+ master()
213
+ else:
214
+ worker()
root_gnn_dgl/jobs/interactive.sh ADDED
@@ -0,0 +1 @@
 
 
1
+ salloc --nodes 1 --qos shared_interactive --time 04:00:00 --constraint gpu --account=trn007 --gres=gpu:1
root_gnn_dgl/jobs/prep_data/prep_data.sh ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # Arguments
4
+ config=$1 # YAML configuration file
5
+ dataset=$2 # Dataset name
6
+ CHUNKS=$3 # Number of chunks
7
+
8
+ args=$4 # Additional arguments to pass to prep_data.py
9
+
10
+ # Prepare the initial command for chunk 0
11
+ command="scripts/prep_data.py --dataset $dataset --shuffle_mode --chunk 0 --config $config $args"
12
+ echo "$command"
13
+ python $command
14
+
15
+ # Loop through all chunks
16
+ for ((i=0; i<$CHUNKS; i++)); do
17
+ command="scripts/prep_data.py --dataset $dataset --shuffle_mode --chunk $i --config $config $args"
18
+ echo "$command"
19
+ python $command
20
+ done
root_gnn_dgl/jobs/prep_data/run_processing.py ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from concurrent.futures import ThreadPoolExecutor, as_completed
2
+ import yaml
3
+ import os
4
+ import subprocess
5
+
6
+ def extract_dataset_keys_and_chunks(yaml_file):
7
+ """
8
+ Extract keys and shuffle_chunks under the 'Datasets' section from a YAML file.
9
+ """
10
+ try:
11
+ # Open and parse the YAML file
12
+ with open(yaml_file, 'r') as file:
13
+ config = yaml.safe_load(file)
14
+
15
+ # Check if 'Datasets' exists in the YAML file
16
+ if 'Datasets' in config:
17
+ datasets = config['Datasets']
18
+ results = []
19
+ for key, value in datasets.items():
20
+ # Extract shuffle_chunks if available
21
+ shuffle_chunks = value.get('shuffle_chunks', None)
22
+ results.append((key, shuffle_chunks))
23
+ return results
24
+ else:
25
+ print(f"No 'Datasets' section found in {yaml_file}.")
26
+ return []
27
+ except Exception as e:
28
+ print(f"Error reading {yaml_file}: {e}")
29
+ return []
30
+
31
+ def call_bash_script(config, dataset_key, shuffle_chunks, bash_script):
32
+ """
33
+ Call a bash script with dataset_key and shuffle_chunks as arguments.
34
+ """
35
+ try:
36
+ # Construct the command to call the bash script
37
+ command = f"{bash_script} {config} {dataset_key} {shuffle_chunks}"
38
+
39
+ print(f"Executing command: {command}") # Debugging: Print the command being executed
40
+
41
+ # Run the command
42
+ result = subprocess.run(command, shell=True, check=True)
43
+ return f"Success: {dataset_key}"
44
+ except subprocess.CalledProcessError as e:
45
+ return f"Error executing bash script for dataset {dataset_key}: {e.stderr.decode()}"
46
+
47
+ def process_yaml_file(config, base_directory, bash_script):
48
+ """
49
+ Process a single YAML file by extracting datasets and calling the bash script in parallel.
50
+ """
51
+ yaml_file = os.path.join(base_directory, config) # Construct full path
52
+ if os.path.exists(yaml_file):
53
+ print(f"Processing file: {config}")
54
+ datasets = extract_dataset_keys_and_chunks(yaml_file)
55
+
56
+ # Use ThreadPoolExecutor to parallelize bash script calls for datasets
57
+ max_workers = min(len(datasets), os.cpu_count()) # Limit workers to number of datasets or CPU cores
58
+ with ThreadPoolExecutor(max_workers=max_workers) as executor:
59
+ futures = [
60
+ executor.submit(call_bash_script, config, key, shuffle_chunks, bash_script)
61
+ for key, shuffle_chunks in datasets
62
+ ]
63
+
64
+ # Collect and print results as they complete
65
+ results = []
66
+ for future in as_completed(futures):
67
+ results.append(future.result())
68
+ return results
69
+ else:
70
+ return [f"File not found: {yaml_file}"]
71
+
72
+ def main():
73
+ # Base directory containing the YAML files
74
+ base_directory = os.getcwd() + "/"
75
+
76
+ # List of YAML configuration files (relative to the base directory)
77
+ configs = [
78
+ # "configs/stats_100K/pretraining_multiclass.yaml",
79
+ # "configs/stats_100K/ttH_CP_even_vs_odd.yaml",
80
+ # "configs/stats_all/pretraining_multiclass.yaml",
81
+ # "configs/stats_all/ttH_CP_even_vs_odd.yaml",
82
+ "configs/attention/ttH_CP_even_vs_odd.yaml",
83
+ ]
84
+
85
+ # Path to the bash script to be called
86
+ bash_script = base_directory + "jobs/prep_data/prep_data.sh"
87
+
88
+ # Use ThreadPoolExecutor to process YAML files concurrently
89
+ max_workers = os.cpu_count() # Use all available CPU cores
90
+ with ThreadPoolExecutor(max_workers=max_workers) as executor:
91
+ futures = [
92
+ executor.submit(process_yaml_file, config, base_directory, bash_script)
93
+ for config in configs
94
+ ]
95
+
96
+ # Collect and print results as they complete
97
+ for future in as_completed(futures):
98
+ results = future.result()
99
+ for result in results:
100
+ print(result)
101
+
102
+ if __name__ == "__main__":
103
+ main()
root_gnn_dgl/jobs/salloc.sh ADDED
@@ -0,0 +1 @@
 
 
1
+ salloc --nodes 4 --qos interactive --time 04:00:00 --constraint gpu --account=trn007 --gres=gpu:4