Ephris
Ephris is a pretrained graph foundation model from Nums AI Inc. for node classification through graph in-context learning. It predicts query-node labels from graph features, edges and labeled context nodes, with no task-specific training.
This repository provides the 1.0.0 model weights, configuration and integrity manifest. The inference package and documentation are available on GitHub.
Installation
Use standard CPython 3.11–3.14 on Linux:
python -m pip install ephris
The first prediction downloads and caches the model weights automatically. No Hugging Face account or access token is required. See the installation instructions for CPU-only setup and source installation.
Quick start
import torch
from ephris import EphrisClassifier
x = torch.tensor([[0.1, 0.2], [0.8, 0.9], [0.2, 0.1], [0.9, 0.8]])
edge_index = torch.tensor([[0, 1, 2, 3], [2, 3, 0, 1]])
context_indices = torch.tensor([0, 1])
query_indices = torch.tensor([2, 3])
context_labels = torch.tensor([0, 1])
model = EphrisClassifier(random_state=42, device="auto")
labels = model.predict(
x, edge_index,
context_indices=context_indices, context_labels=context_labels,
)
print(labels[query_indices])
No fit() call is required. Pass the graph and the labels of the context nodes;
query labels are never prediction inputs. predict() returns original class
labels for all nodes, including context nodes, as a CPU tensor [N].
Select query nodes with labels[query_indices].
Use predict_proba() for FP32 probabilities or predict_log_proba() for
natural-log probabilities. Each probability column corresponds to the label in
model.classes_. Features, edges and all prediction methods are described in
the input contract.
Checkpoint
The first prediction or prepare() downloads the package's pinned revision and
caches it. Weights are distributed separately from the Python package.
| Property | Value |
|---|---|
| Package release | 1.0.0 |
| Parameters | 50,163,900 |
| File | ephris.pt |
| Checkpoint format | 2 |
| SHA256 | c6dff2bda414d1ba75e2024d4c166bd3c6ea868c97a43eabf2d40160824bb853 |
The manifest records the file and individual tensor hashes. An explicit local file bypasses Hub downloads:
model = EphrisClassifier(checkpoint="/path/to/ephris.pt", device="cpu")
Evaluation
The executed demo compares Ephris with GCN and GAT on Cornell, Reed98, Cora and CityNetwork Paris. Binary tasks use ROC-AUC and multiclass tasks use accuracy on one seeded split. See the saved demo results and the separate paper benchmarks.
License & contact
Code is licensed under Apache-2.0; model weights are separately licensed under Ephris License v1.0. Non-commercial research and free research redistribution are permitted under its conditions. Commercial or production use, and hosted/API/SaaS services whether paid or free, require separate licenses. Contact contact@nums.world.
Third-party dependencies and datasets keep their own terms.
Citation
If you use Ephris in research, please cite:
@misc{lee2026messagepassingdoesincontext,
title={Message Passing Does More with Less for In-Context Learning on Graphs},
author={Dooho Lee and Jinmo Lee and Minho Jeong and Kijung Shin and Jaemin Yoo},
year={2026},
eprint={2609.37057},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2609.37057},
}