Skip to main content
TabFORGE

[NeurIPS 2026] TabFORGE: A Tabular Foundation Model for Generative Modelling

Docs PyPI CI Hugging Face License

Related tools: TabCamel for tabular data preparation · TabEval for synthetic-data evaluation · TabStruct for tabular generator benchmarking.

🌐 Overview

TabFORGE learns contextual representations of mixed-type tables with its Structure-aware Feature Encoder, models them with the Score-based Diffusion Transformer, and reconstructs them with the Denoising-aligned Latent Decoder. Its estimator API supports synthetic data generation, classification, regression, embedding, imputation, clustering, and anomaly detection.

TabFORGE: one tabular foundation model for generation, classification, regression, embedding, imputation, clustering, and anomaly detection

Model architecture

Original paper architecture: Structure-aware Feature Encoder, Score-based Diffusion Transformer, and Denoising-aligned Latent Decoder

✨ Key features

  • One estimator interface for pandas DataFrames and NumPy arrays, with schema-aware numerical, categorical, and target handling.
  • Pretrained Structure-aware Feature Encoder and leakage-aware held-out-fold embeddings for supervised training rows.
  • Latent diffusion with EDM preconditioning, Karras-style schedules, and Euler/Heun sampling.
  • Canonical checkpoints for complete estimator restoration or data-free backbone transfer.
  • CPU-friendly mock embeddings, single-device execution, and torchrun distributed execution.

🚀 Installation

TabFORGE requires Python 3.10 or later. Install the PyPI distribution tabforge-ml:

pip install tabforge-ml

The Python import name and command-line entry point are both tabforge. For notebooks or optional Weights & Biases logging:

pip install 'tabforge-ml[tutorials]'
pip install 'tabforge-ml[wandb]'

For development, clone the source repository and install it in editable mode:

git clone https://github.com/SilenceX12138/TabFORGE.git
cd TabFORGE
pip install -e .

You can also download the source ZIP.

The default feature encoder and checkpoint="pretrained" use pretrained weights downloaded on first use. For offline examples, configure TabFORGEEmbeddingConfig(model_path="mock") and use checkpoint=None to train all TabFORGE components from scratch.

📊 Logging with W&B

Install tabforge-ml[wandb], authenticate with wandb login, and pass an online logging configuration to an estimator:

from tabforge import TabFORGERuntimeConfig

runtime = TabFORGERuntimeConfig(
    log_wandb=True,
    wandb_project="tabforge",
    wandb_dir="./logs/wandb",
)

Use the estimator's runtime_config=runtime argument, or pass an existing run through logger to keep metrics in your surrounding experiment.

⚡ Quick sanity check

This small CPU example uses deterministic mock embeddings and initializes the TabFORGE model from scratch:

import pandas as pd

from tabforge import (
    TabFORGEArchitectureConfig,
    TabFORGEEmbeddingConfig,
    TabFORGEGenerator,
    TabFORGERuntimeConfig,
    TabFORGETrainingConfig,
)

X = pd.DataFrame({
    "age": [21.0, 35.0, 48.0, 62.0],
    "city": ["Cambridge", "London", "Cambridge", "Oxford"],
})

model = TabFORGEGenerator(
    task="unsupervision",
    embedding_config=TabFORGEEmbeddingConfig(model_path="mock", n_folds=0),
    architecture_config=TabFORGEArchitectureConfig(
        embedding_dimension=8,
        decoder_layers=1,
        decoder_heads=2,
        decoder_ffn_factor=2,
        denoiser_layers=1,
        denoiser_heads=2,
        denoiser_ffn_factor=2,
    ),
    training_config=TabFORGETrainingConfig(max_steps=2, batch_size=4),
    runtime_config=TabFORGERuntimeConfig(device="cpu"),
    random_state=7,
).fit(X, checkpoint=None)

synthetic = model.generate(5, random_state=7)
print(synthetic)

🧩 Example workflows

Prepare train.csv with feature columns in their original order. Categorical DataFrame columns are inferred from their dtypes; pass categorical_features explicitly for integer-coded categories.

import pandas as pd

from tabforge import TabFORGEGenerator

X_train = pd.read_csv("train.csv")
generator = TabFORGEGenerator(task="unsupervision", random_state=7)
generator.fit(X_train)  # Uses the pretrained TabFORGE backbone by default.
synthetic = generator.generate(1_000, random_state=7)
generator.save_checkpoint("checkpoints/generator")

For supervised tasks, fit a classifier or regressor with X_train, y_train, then call predict (and predict_proba for classification, or predict_std and predict_interval for regression). TabFORGEEmbedder.transform extracts embeddings, TabFORGEImputer.transform fills missing values, and the clusterer and anomaly detector expose predict and score_samples respectively. See the linked tutorials for complete examples.

📓 Tutorials

Open a notebook with its Open in Colab badge and follow the tutorial setup guide to install tabforge-ml[tutorials] in the runtime. Select a GPU for practical pretrained workloads; the sanity check above is designed for CPU.

Workflow Notebook
Unconditional generation Unconditional generation · Open in Colab
Pretrained and scratch training Pretrained and scratch training · Open in Colab
Devices and distributed execution Device and distributed execution · Open in Colab
Classification Classification · Open in Colab
Regression Regression · Open in Colab
Feature embeddings Feature embeddings · Open in Colab
Missing-value imputation Missing-value imputation · Open in Colab
Clustering Clustering · Open in Colab
Anomaly detection Anomaly detection · Open in Colab

💾 Checkpoints and data privacy

The official pretrained backbone is available from the TabFORGE Hugging Face repository. Estimator fitting uses checkpoint="pretrained" by default; use checkpoint=None to train from scratch or pass a canonical checkpoint path to restore model components.

save_checkpoint(path) stores a complete fitted estimator, including preprocessing state and the fitted context required for inference. save_backbone_checkpoint(path) stores reusable model weights without preprocessing state or training rows. Complete fitted checkpoints can contain provider training context; handle them as dataset data. Use a backbone checkpoint for data-free distribution.

📚 Documentation

📖 Citation

@inproceedings{jiang2026tabforge,
  title     = {TabFORGE: A Tabular Foundation Model for Generative Modelling},
  author    = {Jiang, Xiangjian and Liu, Mingxuan and Simidjievski, Nikola
               and Klein, Tassilo and Jamnik, Mateja},
  booktitle = {Advances in Neural Information Processing Systems},
  year      = {2026}
}

@inproceedings{jiang2026generative,
  title     = {A Generative Foundation Model for Heterogeneous Tabular Data},
  author    = {Jiang, Xiangjian and Liu, Mingxuan and Simidjievski, Nikola
               and Klein, Tassilo and Jamnik, Mateja},
  booktitle = {2nd ICML Workshop on Foundation Models for Structured Data},
  year      = {2026},
  url       = {https://openreview.net/forum?id=RcsaxrdpfE}
}

Metadata

Release files for tabforge-ml 2026.8.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tabforge-ml 2026.8.9
File Size Uploaded
tabforge_ml-2026.8.9.tar.gz 2.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for tabforge-ml 2026.8.9
File Interpreter ABI Platform
tabforge_ml-2026.8.9-py3-none-any.whl Python 3 none any Details

Total release size: 3.2 MB

Release files / tabforge_ml-2026.8.9.tar.gz

Download URL tabforge_ml-2026.8.9.tar.gz
Size 2.5 MB
Tags Source
SHA-256 checksum
How to use checksums
1404a65e5b9bbc8416c0e938f93005c6d27d8181c1018da61eb2ded858c99627
BLAKE2b-256 checksum
How to use checksums
1cc5b28281e20a3d30b1bfcbc22d12c7bcf453ce01cd5fbca53e37cbf5609fea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Release files / tabforge_ml-2026.8.9-py3-none-any.whl

Download URL tabforge_ml-2026.8.9-py3-none-any.whl
Size 633.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
49b5a4ac504932665ffa5015dadc6e2d60035746637dddfaef5325896419c10e
BLAKE2b-256 checksum
How to use checksums
23abdfcc97813dc1dc287948396a67825be6b62d3419dcbe674c6fb7b76f873f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2026.8.9 This release

2 release 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