CoolFace
Modelpublic

Synthefy/Nori-30M

sourceHugging Faceapache-2.0updated 1mo agoView on Hugging Face
7likes160kdownloads
Model Card

<p align="center"> <img src="synthefynoribanner.png" alt="Nori" width="100%"> </p>

Nori-30M

Nori-30M is the ~29.2M-parameter variant of Nori, a tabular foundation model for regression via in-context learning (ICL). Given a few labeled rows as context, it predicts on new query rows in a single forward pass, with no task-specific training or fine-tuning. The model is trained entirely on synthetic data.

  • —Documentation: https://docs.synthefy.com/nori/
  • —Repository: https://github.com/Synthefy/synthefy-nori
  • —Library: pip install synthefy-nori
  • —Checkpoint: nori.pt (this repo)
  • —Parameters: ~29.2M
  • —License: Apache-2.0

Results

Mean and median R² across 96 regression tasks from three public benchmark suites, on the same protocol as the base Nori:

SuiteDatasetsMean R²Median R²
TabArena130.81480.8834
TALENT720.75750.8844
OpenML110.64590.6212
Overall960.75250.8745

Stronger than the ~6M base on every suite. Evaluated with the bundled default inference config and the large-GPU protocol (up to 50k context rows per dataset).

Use it from your AI coding assistant

Paste this into Claude Code, Cursor, or any AI coding assistant and it will wire Nori into your own project:

`text
Look at my code/task/report here and figure out where Nori would best fit — it's
Synthefy's tabular foundation model, a drop-in scikit-learn estimator that predicts
a continuous target by in-context learning: no training loop, no hyperparameters,
and it uses the GPU automatically when one's available (CPU otherwise).

1. Install it with this project's package manager
   (e.g. `uv add synthefy-nori`, or `pip install -U synthefy-nori`).

2. Use it wherever a tabular regression / prediction step fits:

from synthefy_nori import NoriRegressor

reg = NoriRegressor(model="nori-30m") # downloads these weights from the Hub on first predict reg.fit(Xtrain, ytrain) # stores your rows as context — no training happens ypred = reg.predict(Xtest) # point predictions (predictive-distribution mean)

# Prediction intervals come free — no conformal/quantile add-ons: lo, mid, hi = reg.predict(Xtest, outputtype="quantiles", quantiles=[0.1, 0.5, 0.9])


X is a numeric feature matrix (encode categoricals as ordinals/one-hot, leave
missing values as NaN, no scaling needed); y is a finite continuous target. If I
already have a model, wire Nori up alongside it on the same train/test split and
metric so I can compare them. If the best place to plug Nori in isn't obvious,
show me where you'd put it and confirm with me before making changes.

Going deeper: synthefy-nori ships a ready-made nori-regression skill for AI coding
assistants with vetted recipes — calibrated prediction intervals, honest baseline
comparison under fixed CV, SHAP/PDP interpretability, and leak-safe one-step
time-series forecasting. Read and follow it if relevant:
https://github.com/Synthefy/synthefy-nori/tree/main/.claude/skills/nori-regression

Usage

bash
pip install synthefy-nori
python
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
from synthefy_nori import NoriRegressor

X, y = load_diabetes(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

model = NoriRegressor(model="nori-30m")   # downloads these weights from the Hub on first use
model.fit(X_train, y_train)               # "fit" just stores the labeled rows as context
pred = model.predict(X_test)              # predictions in a single forward pass, no training

It uses a GPU when one is available and falls back to CPU. A one-shot helper skips the object entirely:

python
from synthefy_nori import predict
pred = predict(X_train, y_train, X_test, task="regression", model="nori-30m")

predict follows the TabPFNRegressor.predict contract: pass output_type="mean" (default), "median", or "mode" to choose the point estimate drawn from the model's predictive distribution.

To run from a local checkpoint instead of the Hub, pass a path: NoriRegressor(model_path="path/to/nori.pt").

This model is public: the first call downloads and caches it automatically, with no token and no access request. A Hugging Face token (read scope) is only worth setting if you hit anonymous download rate limits — provide it via export HF_TOKEN=hf_..., hf auth login, or NoriRegressor(model="nori-30m", token="hf_...").

Intended use & limitations

  • —Intended for small-to-medium tabular regression where in-context learning is attractive (no per-task training).
  • —Limitations: dense O(N²) sample attention bounds practical context size, so the current gap vs the best baselines is on large-N / long-context tables. Trained entirely on synthetic data; no benchmark data is used in training.

Citation

bibtex
@software{synthefy_2026_20710462,
  author       = {Synthefy and
                  Li, Po-han and
                  Narayanan, Aditya and
                  Narasimhan, Sai Shankar and
                  Mallampalli, Raghav and
                  Agrawal, Aahan and
                  Ajan, Bekzat and
                  Shah, Raimi and
                  Agarwal, Shubhankar},
  title        = {Synthefy Nori: Tabular Foundation Model for Regression},
  month        = jun,
  year         = 2026,
  publisher    = {Zenodo},
  version      = {0.6.0},
  doi          = {10.5281/zenodo.20710462},
  url          = {https://doi.org/10.5281/zenodo.20710462},
}

License

Apache-2.0. See LICENSE and NOTICE.