| # ROOT-GNN ONNX export |
|
|
| ONNX export is an inference-only adapter for prepared ROOT-GNN graph batches. |
| It does not read ROOT files or move feature construction into the deployment |
| model. Install the optional dependencies with: |
|
|
| ```bash |
| uv sync --extra root-gnn --extra onnx |
| ``` |
|
|
| Export a checkpoint with the project CLI: |
|
|
| ```bash |
| uv run gnn4colliders export \ |
| export.checkpoint=/path/to/checkpoint.pt \ |
| export.output=model.onnx \ |
| data.cache.path=/path/to/graph-cache.pt |
| ``` |
|
|
| The exported model accepts six tensor inputs: `node_features`, |
| `edge_features`, `edge_src`, `edge_dst`, `node_batch`, and `global_features`. |
| `node_batch` identifies the graph for each node; edge membership is derived |
| from `node_batch[edge_src]`. Graph, node, edge, and batch dimensions are |
| dynamic. The model returns raw `logits`; task postprocessing and metadata stay |
| outside ONNX. |
|
|
| The exporter uses ONNX opset 17, validates the structure with `onnx.checker`, |
| and writes compact provenance/schema metadata to `model.onnx.json`. It |
| supports `EdgeNetwork` multiclass models and `FineTunedEdgeNetwork` binary |
| models. Empty graphs are invalid; single-node graphs (zero edges) are |
| represented and pooled with a zero edge contribution. |
|
|
| Direct DGL export was not retained: the active model uses DGL graph mutation |
| and reductions (`apply_edges`, `update_all`, and graph pooling) that are not a |
| portable ONNX contract. The adapter expresses those operations with standard |
| tensor indexing, `index_add`, and per-graph means. |
|
|