Fiorino

INTRODUCING FIORINO
nano quattrocento tabular fondamento model with synthetic and real-data priors.
Tabular in-context-learning model, ~4.5M params: labeled context rows in, query-row predictions out, one forward pass, no fine-tuning. A nano lab build (single 8GB GPU) — priors and efficiency over volume: 226,000 tables in the record run (≈400,000 across the lineage) vs 100,000,000+ at the big labs. Pretrained on real historical ledger tasks (Borromei, ICMA Crown loans, Bristol customs, Irish Exchequer — 30,514 rows / 460 tasks, plus audit-passed derived value-standing tasks) and a world-profiled synthetic diet (linear/additive, smooth, piecewise/threshold, tree, interaction, heteroskedastic worlds + NanoTabICL graphs, macro series, masked-column SSL).
This repo holds two files off one shared trunk:
fiorino-classification-bifronte (classifier) and
fiorino-regression-bifronte (bucket readout). The alfa release
(fiorino-classification-alfa) was the classification-only prototype.
Architecture
Grouped cell tokens, feature+sample dual-axis attention, 24 thinking
rows, learned column-identity/type embeddings, missingness channel,
CHPT-style target conditioning, 64-channel shared decoder, Muon + AdamW,
LAWA-averaged, CE-heavy loss with MSE aux, patience-20 selection.
Full technical paper: WHITEPAPER.md in this repo (also in the sister
GitHub repo frankiethull/fiorino).
Honest benchmarks (deploy-realistic masked protocol, same folds)
- TabArena-38 classification, mean macro ROC-AUC: nano 0.818 vs RandomForest 0.815 (27/38 wins) with 8 test-time estimators.
- TabArena-13 regression, mean R²: nano +0.619 vs RandomForest +0.717 (1/11 wins) — competitive and in-progress: 1 win plus seven near-draws (within 0.05). The Gamma release (synth-dataset adjustment, more derived tables, possible transformer tweaks) is scoped to turn competitive into winning. Gap stated to three decimals either way; no inflated claims.
- Fresh-task ICL probe: 0.87 acc (chance 0.50).
Fiorino is, to our knowledge, the smallest competitive tabular foundation model — 4.5M params on 226,000 tables against 100,000,000+ at the big labs.
Usage
Sister GitHub metarepo frankiethull/fiorino (packages python/ and
r/fiorino, both named fiorino):
from fiorino import FiorinoClassifier, FiorinoRegressor
clf = FiorinoClassifier() # loads fiorino-classification-bifronte
clf.fit(X_train, y_train)
proba = clf.predict_proba(X_test) # one forward pass
reg = FiorinoRegressor() # loads fiorino-regression-bifronte
reg.fit(X_train, y_train)
pred = reg.predict(X_test) # one forward pass
library(fiorino) # r/fiorino
clf <- fiorino_classifier()
clf <- fio_fit(clf, X_train, y_train)
fio_predict_proba(clf, X_test)
Limitations
- Small prior (~4.5M, 8GB-GPU training); diet over volume.
- Regression trails RF on heavy tails; the outer deciles are the gap.
- Context caps: 2048 rows (subsampled), ~44 features.
- Corpus stays local-only (archive/publication licenses); weights are MIT.