--- license: mit pipeline_tag: tabular-classification library_name: tabum tags: - tabular - tabular-classification - tabular-regression - in-context-learning - foundation-model - safetensors --- # tabUM v1.1 A small tabular in-context-learning foundation model: **14.31M parameters**, zero-shot classification and regression on any table, native missing-value handling, up to **100 classes** and **2,000 features**. MIT licensed, built clean-room (no third-party model code). **Code, notebook, and full results:** [github.com/heldernoid/tabum](https://github.com/heldernoid/tabum) ## What it does tabUM never trains on your data. `fit(X, y)` stores your rows; `predict(X_test)` runs a single forward pass in which every test row attends to every training row (in-context learning). Pretraining happened once, on millions of synthetic tasks sampled from causal graphs, Gaussian processes, and random tree ensembles. - prediction in seconds, no tuning, no preprocessing pipelines - `NaN` is a first-class value: missingness is signal, never imputed - calibrated probabilities; full regression distributions (any quantile) in one pass - up to 100 classes (most tabular foundation models cap at 10) - optional `finetune()` (~15s per-dataset adaptation) and `explain()` (feature importances + the exact training rows the prediction attended to) ## Usage ```bash pip install git+https://github.com/heldernoid/tabum ``` ```python from huggingface_hub import snapshot_download from tabum.model import TabUM from tabum.inference import TabUMClassifier, TabUMRegressor model = TabUM.from_pretrained(snapshot_download("helmo/tabum-v1.1"), device="cuda") clf = TabUMClassifier(model=model, n_ensemble=8).fit(X_train, y_train) proba = clf.predict_proba(X_test) reg = TabUMRegressor(model=model, n_ensemble=8).fit(X_train, y_train) p90 = reg.predict_quantile(X_test, 0.9) ``` ## Evaluation TabArena-v0.1, all 51 datasets, identical protocol for every model (at most 2,000 train / 1,000 test rows, single split, seed 0; competitors run as black-box pip packages on the same splits). Per-dataset numbers are in the GitHub repository. | model | params | cls accuracy (38) | reg R² (13) | |---|---|---|---| | logistic / linear regression (fitted) | | 0.8417 | 0.5597 | | tabUM zero-shot, 1 pass | 14M | 0.8523 | 0.6284 | | tabUM zero-shot, `n_ensemble=8` | 14M | 0.8581 | 0.6519 | | **tabUM `finetune()` + `n_ensemble=8`** | 14M | **0.8635** | **0.6907** | | HistGradientBoosting (fitted, default) | | 0.8669 | 0.7091 | | TabPFN v2 (zero-shot) | ~11M | 0.8768 | 0.7471 | | TabICL (zero-shot) | ~500M | 0.8801 | n/a | Strengths and honest limitations: - beats fitted linear baselines everywhere, zero-shot - finetuned, it ties default gradient boosting on classification (20/38 wins) and trails it by 1.8 R² points on regression - 1.3 to 1.7 accuracy points behind TabPFN v2 and TabICL (the state of the art in this class), at 14M parameters and MIT license - many-class is a differentiator: letter (26 classes) scores 0.79 vs 0.74 for fitted logistic regression; TabPFN-class models cap at 10 classes - strongest regime: small noisy tables (under ~1,000 rows), where the learned prior beats boosting; on Titanic with 12% missing cells fed raw it beats an imputed+scaled logistic regression pipeline - context lengths validated to 64k rows (accuracy keeps improving with more context) ## Model details | | | |---|---| | architecture | 3-stage tabular ICL transformer: Fourier cell embeddings with inducing-point column attention, per-row CLS aggregation, 10-block row transformer (train rows bidirectional, test rows attend train-only), retrieval-attention classification head, bar-distribution regression head | | parameters | 14,306,051 | | training | 20,000 steps of continued pretraining from tabUM v1 (50,000 steps), on synthetic tasks only, streamed on the fly (no task seen twice), 50/50 classification/regression, up to 16,384 rows / 2,000 features / 100 classes | | hardware | one NVIDIA DGX Spark (GB10, 128GB unified memory), ~7h | | data | 100% synthetic (causal graphs / Gaussian processes / random trees); no real-world data, no OpenML data, and no other model's outputs were used in training | | license | MIT (weights and code) | ## Intended use and limitations Intended for tabular prediction on datasets from roughly 50 to tens of thousands of rows, up to 2,000 features, up to 100 classes. Not a language model: free-text columns should be dropped or encoded upstream. Regression on large, low-noise datasets is better served by gradient boosting; tabUM's edge is speed-to-first-prediction, small data, many classes, missing values, and built-in explanations.