Replace the 14 subpackages with 13 flat modules (6.7k -> 2.7k lines),
the Hydra config groups with typed dataclasses and one self-contained
YAML file per experiment (configs/), and the docs with docs/usage.md and
docs/design.md. All capabilities stay: GamGam, ttH CP, Delphes, binary
and multiclass tasks, transformer, fine-tuning from Pretrained_GNN, DDP,
torch.compile/CUDA graphs/bfloat16, predict and ONNX export.
Behavior: prepared caches, pretrained-model logits and two CPU training
epochs are bit-identical to the previous code on the fixtures and a 60k
event GamGam subset. Energies are now computed with one vectorized cosh
(<= 2.4e-7 relative difference on 969 of the full GamGam objects). The
ttH and Delphes configs now use Number % 10 as the fold (the raw event
index selected only the first 10 events), and use the paper recipe
(64/4/4, Adam 1e-4, decay 0.99). The ROOT score writer handles jagged
trees. Prediction files store source file and entry instead of sample
ids, and checkpo…
chore: remove legacy parity, validation harness, benchmarks and release tooling
The rewrite is complete; the frozen DGL/legacy references, the validation
harness, benchmarks, CI, agent skills, release tooling, migration history
and changelog are no longer needed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
feat: upgrade to Python 3.14 and PyTorch 2.14; add torch.compile and bfloat16
- Python 3.14, torch 2.14.1 (cu130 wheels), NumPy 2; frozen parity
references pass unchanged
- trainer.compile (dynamic-shape torch.compile) and trainer.precision
(bfloat16 autocast; graph sums, loss, optimizer in float32)
- CUDA graph steps use device-tensor learning rates, so one capture per
bucket follows the schedule; checkpoints store portable optimizer state
- trainer=paper_fast: compile + CUDA graphs + bfloat16, 5.9 vs 19.2 ms per
GamGam batch for float32 eager on an A100
- loader workers fork explicitly (Python 3.14 defaults to forkserver);
ONNX export keeps the TorchScript exporter
Correction to 5b73bcb: the pre-change float32 eager step was 21.3 ms per
batch (not ~29 ms; that profile used unshuffled ttH-only batches), so the
default path improved by about 1.2x and the large gains are opt-in.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
feat: add the ATLAS Open Data GamGam 5-class task and faster training
Add the Higgs production multiclass task of Ho et al. (2026), Table 3:
ttH, ggF, VBF, WH, ZH from the ATLAS Open Data 13 TeV GamGam MC, pinned to
a Hugging Face dataset revision.
Data:
- derived branches split ``lep_*`` into electrons and muons and apply the
MV2c10 70% working point, so the pretraining node schema applies
- ``fold_modulus`` derives folds from event numbers in exact integers
- 64-event fixtures of the five samples and an end-to-end workflow test
Training:
- paper recipe (Adam 1e-4, 0.99 decay, stop after 5 epochs without
training-loss improvement) and ``best.pt`` selection by validation AUC
- checkpoint save_every_epochs/save_best/save_last are now honored;
per-epoch history.jsonl; evaluate can write metrics JSON
- macro precision/recall/F1 for multiclass tasks
- O(n log n) weighted ROC AUC on the metric device (was O(P*N) pairs)
Speed (A100, GamGam, batch 1024): about 56 s -> 35 s per epoch by default,
18 s with the opt-in paper_fast preset:
- loader worker pr…
2 days ago
feat: replace DGL with shared packed events and native PyTorch graphs
Track the documented Slurm wrappers that an unanchored slurm/ ignore rule
excluded, move graph-cache preparation from config.application into
graphs.preparation (outputs verified identical to main), archive rewrite
task specs under docs/history, move the paper source under docs/paper,
remove empty scaffolding, and refresh stale transformer documentation.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- validation: use pinned public Hugging Face fixture (528346c0a2dcf57bc6f47e0e929113ae0f5ec47a)
- data: resolve training sources from Hugging Face (02920c2576f35911f7068c0379c06585ae9c8b57)