Skip to main content

TabDPT: Scaling Tabular Foundation Models on Real Data

arxiv huggingface pypi

TabDPT is an open-source foundation model for tabular data based on in-context learning (ICL). It is trained on real-world data and can generalize to new tasks without additional training or hyperparameter tuning.

This repository provides lightweight interface code to generate predictions on new tabular datasets. Full training code is available here.

News

September 8, 2026: TabDPT v1.3

After minor architectural tweaks and improvements to our training recipe, we're releasing TabDPT v1.3, which is similar to v1.2 but with improved predictive performance. We've also added an option for full probabilistic regression outputs, with helper functions for calculating quantiles and other statistics of the output distributions. See the release notes for full details.

June 17, 2026: TabDPT v1.2

We're pleased to announce TabDPT v1.2, or TabDPT-Turbo! This release accelerates TabDPT fitting and inference by multiple orders of magnitude (~120x on average on TabArena) while improving predictive performance. In our experiments, TabDPT-Turbo is the fastest model overall among leading foundation models.

More details and experimental results are provided in our TabDPT-Turbo paper. As part of this release, we have made some API changes and changed some default hyperparameter values; see the release notes for full details.

Usage

TabDPT is available on PyPI, and can be installed with:

pip install tabdpt

Model weights are available on Hugging Face. They will be automatically downloaded on first use.

We currently update the minor version number when a new model version is released, while the patch version number is used for library changes that don't involve changes to the underlying model. To install a previous model version, use pip install tabdpt==x.y.* where x.y is the model version, e.g., pip install tabdpt==1.1.*.

Installation From Source

To set up this repo, first ensure you have Python 3.10 or newer. Then, run the following:

git clone git@github.com:layer6ai-labs/TabDPT.git
cd TabDPT
pip install -e .
pip install --group dev

Alternatively, if you are using a package manager such as uv, you can run

uv sync

You may also need a C++ compiler such as g++ for building dependencies. On Ubuntu, you can install it with:

sudo apt-get update
sudo apt-get install g++

Lastly, you will need a python-dev system package. On Ubuntu, it can be installed with:

sudo apt-get update
sudo apt-get install python-dev

Tips

If you experience errors caused by torch compile (e.g., InductorError), try updating package versions and system drivers.

For better runtime performance, adjust context_size or n_ensembles to trade off speed and accuracy.

Working Examples

See the scripts in examples/ for how to use TabDPT once installed:

  • examples/cls_example.py — classification with a point prediction and accuracy
  • examples/reg_example.py — regression with a point prediction and R²
  • examples/reg_probabilistic_example.py — regression with full distributional outputs (logits, quantiles, intervals, calibration)

Unit Tests

Unit tests are in the tests/ directory and can be run using pytest.

Overview

TabDPT uses retrieval and self-supervised learning to remove constraints on dataset size and to enable effective generalization from pre-training on real data. We find this to be competitive with existing ICL training approaches, and outperform leading deep learning and tree-based models:

Algorithm CC18 CTR23
AUC Accuracy Correlation R2
TabDPT v1.3 0.980 [0.978, 0.982] 0.934 [0.931, 0.937] 0.926 [0.922, 0.930] 0.860 [0.853, 0.866]
TabDPT v1.2 0.978 [0.976, 0.980] 0.930 [0.926, 0.933] 0.924 [0.918, 0.928] 0.855 [0.846, 0.863]
TabDPT v1.1 0.976 [0.974, 0.978] 0.928 [0.926, 0.931] 0.920 [0.918, 0.922] 0.847 [0.843, 0.851]
TabDPT v1.0 0.972 [0.971, 0.973] 0.917 [0.915, 0.919] 0.911 [0.908, 0.913] 0.831 [0.826, 0.835]
TabPFN v2 0.972 [0.970, 0.974] 0.917 [0.915, 0.919] 0.917 [0.911, 0.921] 0.841 [0.831, 0.848]
TabPFN 0.939 [0.935, 0.943] 0.852 [0.849, 0.856] N/A N/A
TabR 0.967 [0.965, 0.969] 0.923 [0.920, 0.926] 0.909 [0.905, 0.912] 0.825 [0.817, 0.831]
MLP-PLR 0.967 [0.965, 0.968] 0.914 [0.911, 0.917] 0.907 [0.904, 0.910] 0.827 [0.822, 0.832]
MLP 0.915 [0.909, 0.920] 0.865 [0.860, 0.870] N/A N/A
XGBoost 0.965 [0.963, 0.967] 0.910 [0.906, 0.913] 0.904 [0.900, 0.907] 0.820 [0.814, 0.825]
LightGBM 0.964 [0.962, 0.967] 0.906 [0.902, 0.909] 0.900 [0.896, 0.904] 0.809 [0.803, 0.815]
CatBoost 0.964 [0.962, 0.967] 0.908 [0.905, 0.910] 0.897 [0.890, 0.903] 0.802 [0.794, 0.810]

Table 1: Model performance comparison on the CC18 and CTR23 benchmarks, with 95% confidence intervals. Tree-based models are taken from McElfresh et al., MLP-PLR and TabR are taken from the official implementation. TabPFN-v2 was run with the default setting SUBSAMPLE_SAMPLES = 10000 for inference. TabDPT has context size 2048 and ensemble size 8.

TabDPT is trained on real-world tabular data and we observe scaling laws similar to LLMs opening the door to training Internet-scale tabular foundation models:


Figure 1: Increasing model or pre-training data size (number of cells) leads to consistent improvements predictable by power laws (fitted solid lines).

TabDPT also stands out in head-to-head model comparisons and is significantly faster than other models in total time taken to generate a prediction:


Figure 2: (left) Pairwise win-rate comparison in terms of classification/regression accuracy/R2. (right) Total runtime vs performance. TabDPT models are ordered by context size.

For full details, please see our paper TabDPT: Scaling Tabular Foundation Models on Real Data.

Reproducing TabDPT Paper Numbers

It is impossible to exactly replicate the results of TabDPT between runs, but this section describes how to generate results using the same evaluation approach as in the paper.

To install the dependency versions used in the paper, run

pip install .[reproduce-results]

This requires Python 3.11.

Running the paper_evaluation.py script will enable calculation of results similar to the paper. Run the following two commands:

python paper_evaluation.py --fold 0
python paper_evaluation.py --fold 1

and then use notebooks/analysis.ipynb with the resulting CSV outputs to reproduce the numbers (including confidence intervals) from the Appendix.

You can do something similar to get the ranked table from this README and the paper but will need to also compute the baseline results beforehand (code not provided in this repository).

Citation

@inproceedings{
    ma2025tabdpt,
    title={Tab{DPT}: Scaling Tabular Foundation Models on Real Data},
    author={Junwei Ma and Valentin Thomas and Rasa Hosseinzadeh and Alex Labach and Hamidreza Kamkari and Jesse C. Cresswell and Keyvan Golestan and Guangwei Yu and Anthony L. Caterini and Maksims Volkovs},
    booktitle={The Thirty-ninth Annual Conference on Neural Information Processing Systems},
    year={2025},
    url={https://openreview.net/forum?id=pIZxEOZCId}
}

© Copyright 2024-2026 The Toronto-Dominion Bank and/or its affiliates

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tabdpt-1.3.0.tar.gz (33.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tabdpt-1.3.0-py3-none-any.whl (26.9 kB view details)

Uploaded Python 3

File details

Details for the file tabdpt-1.3.0.tar.gz.

File metadata

  • Download URL: tabdpt-1.3.0.tar.gz
  • Upload date:
  • Size: 33.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for tabdpt-1.3.0.tar.gz
Algorithm Hash digest
SHA256 06aaeb5c930120098b85fedf08aa278cc6fac9c786bd198035854d6a3568c09c
MD5 ddea9f1ee4b6a5426e7bd2596d05fae2
BLAKE2b-256 aff172e14ea6f9738284e029a7bb282d9291e914afa77ee024b2fe8318757604

See more details on using hashes here.

File details

Details for the file tabdpt-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: tabdpt-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 26.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for tabdpt-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 28b5493380157a70d413673175e065dd70542f4e5df193f6e92e3e26a25e27f6
MD5 9be12b19b49a0cb79e40cb3ec724d911
BLAKE2b-256 2dcfb98735ce9e7dec414c9268c2ef659bf6e61e97fbc925424ff8229db9f36e

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.3.0 This release

2 files

1.2.0

2 files

1.1.14

2 files

1.1.13

2 files

1.1.12

2 files

1.1.11

2 files

1.1.10

2 files

1.1.9

2 files

1.1.8

2 files

1.1.7

2 files

1.1.6

2 files

1.1.5

2 files

1.1.4

2 files

1.1.3

2 files

1.1.2

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page