Nori V1 — Replaces XGBoost

Product UpdatesAI & Machine Learning4 min read

Nori on Mac, Nori-Rel, Explainability, and Scaling Beyond a Million Rows

Nori now runs on Apple Silicon GPUs, leads RelArena with Nori-Rel, adds feature importance, and scales beyond a million rows.

#Apple Silicon#Relational Data#RelArena#Explainability#Permutation Importance#Long Tables#Cluster Routing

Nori on Mac

We’ve added support for GPU-accelerated inference through Apple’s Metal Performance Shaders (MPS) backend. This lets Nori run accelerated inference on personal compute, roughly 3x faster than on CPU alone in our benchmark.

Warm Nori inference latency on Apple Silicon using MPS and CPU across table sizes, showing up to 3.3x speedup for Nori-6M and 3.1x for Nori-100M
Figure 1MPS reached up to a 3.3x speedup for Nori-6M and 3.1x for Nori-100M over CPU inference.

Nori-Rel for Relational Databases

Nori-Rel brings Synthefy’s Nori tabular foundation model to relational databases and ranks first on the aggregate leaderboard across RelArena’s nine regression tasks. RelArena is an independent, open-source benchmark for relational learning.

Nori-Rel uses standard relational featurization with the exact released Nori-30M model, available on Hugging Face. The relational featurization produces a tabular representation for Nori without changing the model itself. There was no training or fine-tuning involved in Synthefy’s solution to RelArena; the released Nori-30M weights were used unchanged.

Aggregate Elo leaderboard across nine RelArena regression tasks, with Nori-Rel 30M ranking first and Nori-Rel 6M ranking third among the models shown
Figure 2Across nine RelArena regression tasks, Nori-Rel 30M ranks first on the displayed aggregate Elo leaderboard; Nori-Rel 6M ranks third.

Feature Importance in Nori

We’ve added Nori Permutation Importance to the open-source package, a major addition to our support for explainability and interpretability through Nori.

Nori Permutation Importance, derived from general permutation importance, is an algorithm for computing feature importance scores with Nori. The method measures the importance of each feature in a dataset by measuring the drop in accuracy when that feature is shuffled while all other features are held fixed. Features that incur the largest drops in accuracy when shuffled are the most important for predicting the target.

Nori also supports Shapley Additive Explanations (SHAP). Unlike the imputation-based SHAP baseline used in this experiment, Nori Permutation Importance shuffles the observed values of one feature. This preserves that feature’s empirical marginal distribution while breaking its relationship with the target and other features; Nori’s fitted context and all remaining columns stay fixed. The resulting drop in accuracy is measured through Nori’s own contextualized predictions.

Across a 14-dataset benchmark, identical downstream models trained on the top 20%, 40%, and 60% of features ranked by Nori Permutation Importance achieved higher mean test R² than models trained on the features ranked by SHAP at every reported cutoff.

Mean test R-squared across 14 datasets using the top 20%, 40%, and 60% of features ranked by Nori Permutation Importance and SHAP, with Nori higher at every cutoff
Figure 3Across 14 datasets, models using the top 20%, 40%, and 60% of features ranked by Nori Permutation Importance achieved higher mean test R² than models using SHAP-ranked features.

Scaling Beyond a Million Rows

Nori can process tables larger than a single GPU-resident context window through three targeted methods. Context Chunking lowers the amount of GPU memory needed to process a long table. Cluster Routing is our tabular foundation model analog of classical bagging. Finally, SafeBoost is our analog of classical boosting.

Context Chunking

Context Chunking is a memory management technique that lowers the necessary GPU memory to process a long table with Nori. Context Chunking builds the attention cache iteratively, a few rows at a time, never exceeding a safe memory limit. The cache can then be either kept in GPU memory or streamed from CPU to GPU memory layer by layer. Context Chunking is only a memory management technique; it still processes the full dataset at full precision. In a benchmark on a 1M-row table, streamed Context Chunking used 27.4 GiB of GPU memory and 225.4 GiB of system memory, compared with 107.4 GiB of GPU memory and 8.0 GiB of system memory with the attention cache disabled—a 75% reduction in GPU memory.

Cluster Routing

Cluster Routing is a context-retrieval method that spends compute on the context we most need to predict a particular query. When cluster routing, we select fixed-size subsets of context for each “cluster” of query rows based on Nori embedding similarity. Intuitively, Cluster Routing picks the best subset of context for each cluster of query rows. On the Airlines Delay 10M benchmark, Nori-6M test R² rose from approximately zero with 10K training-context rows to 0.036 with 1M rows. Accuracy continued improving at the largest context size tested.

SafeBoost

SafeBoost is an analog of classical boosting, or fitting on previous errors, where we progressively use more and more context to “boost.” We first create a sequence of disjoint context windows. The first one predicts the raw target for the query, and each subsequent context window predicts the existing residual. When a context window shrinks the error in a validation sample by at least a certain threshold, it is deemed “safe” and added to an ensemble of predictors. SafeBoost trades compute time for processed context: with fixed GPU memory, it can process effectively unbounded context by adding windows, while compute grows with additional rows.

Enable SafeBoost with NoriRegressor(model="nori-6m", large_context_policy="safeboost").

Peak GPU memory for Nori-6M on an H200 from 10K to 1M training rows, comparing a chunked RAM-backed cache with the cache disabled; at 1M rows, peak GPU memory is 27.4 GiB versus 107.4 GiB
Figure 4At 1M rows, streamed Context Chunking reduced peak GPU memory from 107.4 GiB to 27.4 GiB while using 225.4 GiB of system memory.
Test R-squared for Nori-6M with Cluster Routing on Airlines Delay 10M as training context increases from 10K to 1M rows, rising from approximately zero to 0.036
Figure 5On the Airlines Delay 10M benchmark, Nori-6M’s test R² increased from approximately zero at 10K training-context rows to 0.036 at 1M rows.
Benchmark details

Apple Silicon inference. This is an internal Synthefy benchmark comparing CPU and MPS inference for Nori-6M and Nori-100M. It uses scikit-learn’s Friedman #1 regression generator with 10 features, Gaussian noise of 1.0, and an 80/20 train/test split. Each configuration was warmed before timing, the device was synchronized around MPS measurements, and no context rows were dropped. The supplied results cover tables from 100 to 5,000 rows for Nori-6M and 100 to 2,500 rows for Nori-100M.

Nori-Rel. Results come from RelArena, an independent benchmark that applies a shared evaluation protocol to relational-learning methods. The figure aggregates mean absolute error outcomes across nine regression tasks into Elo ratings anchored to the global constant predictor at 1,000. Nori-Rel uses standard relational featurization with the released Nori-6M and Nori-30M weights and no training or fine-tuning. The release leaderboard includes the publicly available Nori model sizes; unreleased variants are not eligible for the release ranking.

Feature importance. This is an internal Synthefy benchmark across 14 regression datasets. Nori Permutation Importance and the imputation-based SHAP baseline rank the same raw input features; the same Nori model is then refit on the top 20%, 40%, and 60% of each ranking using the same train/test split. The figure reports mean test R² across the 14 datasets. Nori Permutation Importance measures the accuracy drop after shuffling one raw feature, while the SHAP comparison uses imputation-based Shapley values.

Long-table memory. This is an internal Synthefy benchmark using Nori-6M on an NVIDIA H200. It compares inference with the attention cache disabled against Context Chunking with the cache streamed through system memory at training-context sizes from 10K to 1M rows. Both modes process every context row without subsampling; the figure reports peak GPU memory, and the 1M-row caption also reports peak system memory for the streamed cache.

Long-table accuracy. This is an internal Synthefy benchmark using Nori-6M with Cluster Routing on the OpenML Airlines Delay 10M dataset. Training context was increased from 10K to 1M rows, with one recorded run at each context size, and predictive quality was measured as test R². The reported curve rises from −0.0002 at 10K rows to 0.0356 at 1M rows.

Frequently asked questions
Can Nori run on Apple Silicon GPUs?
Yes. Nori supports GPU-accelerated inference on Mac through Apple’s Metal Performance Shaders (MPS) backend. In our internal benchmark, MPS inference was roughly 3x faster than CPU inference.
Can Nori work with relational databases?
Yes. Nori-Rel converts relational context into a standard tabular representation for Nori. With the released Nori-30M weights and no training or fine-tuning, Nori-Rel ranks first across RelArena’s nine regression tasks.
How do I get feature importance scores from Nori, and how does this compare with SHAP?
Use Nori Permutation Importance, which ranks raw features by the drop in held-out accuracy after each feature is shuffled. Unlike the imputation-based SHAP baseline in this post, it preserves the shuffled feature’s observed marginal distribution and measures importance through Nori’s fixed contextualized predictions. Nori-ranked feature subsets achieved higher mean test R² at every reported cutoff in our 14-dataset benchmark.
Does Nori have a context or GPU memory limit?
Nori does not have one fixed row-count limit, although a single GPU-resident context window is constrained by available memory. Context Chunking processes the full table while moving attention state to system memory, while Cluster Routing and SafeBoost spend compute across selected or successive context windows.
How do I enable effectively unlimited context in Nori?
Set NoriRegressor(model="nori-6m", large_context_policy="safeboost"). With fixed GPU memory, SafeBoost can keep processing additional disjoint context windows while compute time grows with context. For full-data inference rather than windowed residual boosting, use Context Chunking when system RAM can hold the streamed cache.

Try Nori Today

Grab the code, weights, and docs:

If you build something interesting, tell us on Discord or at insights@synthefy.com.

Want to try Nori on your own data? Contact us or email insights@synthefy.com, and we'll help you get set up.