Skip to content

Releases: PriorLabs/TabPFN

v7.1.1

09 Apr 12:05
0be2a61

Choose a tag to compare

Added

  • Add modular experiment logging for finetuning with experiment_logger parameter, including WandbLogger for W&B tracking and a FinetuningLogger protocol for custom integrations. (#815)
  • Add three-tier authentication flow: browser-based login for graphical environments, headless interactive login with clipboard copy for SSH/cluster sessions, and clear step-by-step instructions for fully non-interactive environments. (#862)

Changed

    • Optimize regressor predict method for memory efficiency
      • Average ensemble outputs on-the-fly instead of accumulating all outputs
      • Reduces memory usage by avoiding storage of all intermediate outputs, especially beneficial for large n_estimators (#745)

Fixed

  • Fix bugs where fit_mode="fit_with_cache" produced slightly incorrect predictions in v2.5 (but not v2): thinking tokens were added twice, inference_precision flag was not applied correctly. (#852)

v7.1.0

02 Apr 10:00
0bca7e5

Choose a tag to compare

Added

  • More informative Out-Of-Memory error message. (#805)
  • Add multi-GPU DDP support for finetuning via torchrun (auto-detected, no code changes needed) (#812)
  • Add task_type to forward. (#844)
  • Exclude very recent package release in environment (#847)

Changed

  • Switch from Hugging Face to Prior Labs website for model license acceptance (#798)
  • "auto" device selection now uses all available CUDA GPUs instead of only the first one (#808)
  • Optimize fingerprint hashing in preprocessing: round feature matrix once instead of per-row, avoid redundant SHA-256 calls. Speeds up fit by up to 2x for large datasets. (#818)

Fixed

  • Fix the pdf() in FullSupportBarDistribution to actually compute the probability density. (#799)
  • Fix float overflow in Yeo-Johnson inverse transform that produced inf values and silently degraded regression border resolution. (#838)
  • Fix differentiable input for v2.6 (#843)

v7.0.1

26 Mar 09:35
7b1153a

Choose a tag to compare

Added

  • Remove the n_out parameter from get_architecture. (#839)

Changed

  • Make TabPFN-2.6 the default model (#840)

v7.0.0

24 Mar 19:53
124a923

Choose a tag to compare

Added

  • Introduce TabPFN-2.6 model and use as default (#831)
  • Added argument use_fixed_preprocessing_seed to FinetunedTabPFNClassifier and FinetunedTabPFNRegressor for improved finetuning performance.
  • This PR changes the random seeds used in the preprocessing, which may cause slight differences in final outcomes compared to previous versions.
    (#771)
  • More informative Out-Of-Memory error message. (#805)
  • Added max_onehot_cardinality option to cap one-hot encoding expansion for high-cardinality categorical features. (#833)

Changed

  • Introduces TabPFN-2.6 as the new default model for TabPFNClassifier and TabPFNRegressor (#831)
  • Remove unused functions default_classifier_preprocessor_configs() and default_regressor_preprocessor_configs() (#831)
  • "auto" device selection now uses all available CUDA GPUs instead of only the first one (#808)
  • Optimize fingerprint hashing in preprocessing: round feature matrix once instead of per-row, avoid redundant SHA-256 calls. Speeds up fit by up to 2x for large datasets. (#818)
  • Bump minimum torch version from 2.1 to 2.5 (#823)
  • Cache loaded checkpoints across fit calls: skip redundant disk I/O when the same model is loaded repeatedly (e.g. cross-validation, hyperparameter search). (#832)

Fixed

  • Fix the pdf() in FullSupportBarDistribution to actually compute the probability density. (#799)

v6.4.1

19 Feb 15:11
8848704

Choose a tag to compare

Changed

  • Download lock is now scoped to the target file path, allowing concurrent downloads of different model files to proceed in parallel instead of serializing all downloads behind a single global lock. (#790)

v6.4.0

19 Feb 14:02
1dd10bc

Choose a tag to compare

Added

  • Introduces dedicated method for fitting with differentiable input called fit_with_differentiable_input() (#752)
  • Pass through kwargs in FinetunedTabPFNClassifier and FinetunedTabPFNRegressor predict and predict_proba methods to allow additional options like output_type='full' (#772)
  • Add MPS memory limiting to prevent macOS system crashes when using Apple Silicon GPUs. Memory is automatically limited to 70% of recommended max on import. Configurable via TABPFN_MPS_MEMORY_FRACTION environment variable. (#773)
  • Added TabPFNCUDAOutOfMemoryError and TabPFNMPSOutOfMemoryError for GPU out-of-memory errors during prediction with large test sets, providing helpful guidance on batching predictions. (#774)

Changed

  • Remove upper version limits on dependencies (#764)

  • Refactored preprocessing pipeline:

    • Introduced FeatureSchema system to track column metadata through transformations, replacing raw categorical index lists.
    • Added PreprocessingPipeline and PreprocessingStep interfaces for modular transformations and updated all preprocessing steps.
    • Added TabPFNLabelEncoder for centralized label validation and metadata extraction.

    (#767)

    • Introduces AddSVDFeaturesStep as a dedicated preprocessing step for SVD feature generation
    • Removes SVD-related functionality from ReshapeFeatureDistributionsStep
    • Extracts utility functions to a new tabpfn/preprocessing/steps/utils.py module

    (#768)

  • SVD preprocessing is now applied after categorical encoding for more robustness. Note that this may result in slight variations in final outcomes compared to previous versions. (#779)

  • Remove random_state parameter from AddFingerprintFeaturesStep; fingerprint hashing is now fully deterministic and no longer uses a random salt. Predictions will differ slightly from previous versions due to the changed fingerprint values. (#780)

  • Fix bug related to column ordering in ordinal encoder by introducing OrderPreservingColumnTransformer. Note that this change can cause slight differences in final outcomes compared to previous versions. (#788)

Fixed

  • Fix race condition when model is downloaded simultaneously by multiple processes (#738)
  • Fix infinite loop in fingerprint hashing when rows contain inf or very large floats (#780)

Deprecated

  • Removes "scaler" as an option for global_transformer_name in PreprocessorConfig (#768)

v6.3.2

30 Jan 09:25
97ae01e

Choose a tag to compare

Added

    • Moved preprocessing-related code to dedicated modules inside src/tabpfn/preprocessing/
    • Renamed public functions:
      • validate_X_predictensure_compatible_predict_input_sklearn
      • validate_Xy_fitensure_compatible_fit_inputs_sklearn

    (#720)

    • Add new features to finetuning (metric selection, time limit, passing validation data)
      • Added eval_metric and time_limit parameters to FinetunedTabPFNClassifier and FinetunedTabPFNRegressor
      • Added X_val, y_val parameters to .fit() of FinetunedTabPFNClassifier and FinetunedTabPFNRegressor
    • Fix bug in finetuning for splitting very small datasets
    • Ensure finetuning compares to the default checkpoint and does not accept worse models after finetuning

    (#730)

    • Ensure TabPFNValidationError wraps both custom and sklearn's validate_data() errors (#732)
  • Refactor of model encoder. Move imports from tabpfn.architectures.base.encoders to tabpfn.architectures.encoders (#733)

  • Renamed the estimator's preprocessor_ attribute to ordinal_encoder_ (#756)

v6.0.6

01 Dec 00:47

Choose a tag to compare

What's Changed

  • New memory saving mode heuristic that takes account of inference speed. by @oscarkey in #605
  • Bump version to 6.0.1 to include improved memory saving auto selection. by @oscarkey in #609
  • Add seed=42 embeddings, read them from file to match cpu and gpu embeddings. by @priorphil in #612
  • Anonymously track model_version and model_path by @safaricd in #611
  • Add a link to the gated model docs to the error message. by @oscarkey in #613

Full Changelog: v6.0.0...v6.0.6

v6.0.0

01 Dec 00:43
2487f5a

Choose a tag to compare

What's Changed

  • Bump actions/checkout from 4.2.2 to 5.0.0 by @dependabot[bot] in #454
  • Bump astral-sh/setup-uv from 6.4.3 to 6.5.0 by @dependabot[bot] in #456
  • Bump astral-sh/ruff-action from 3.5.0 to 3.5.1 by @dependabot[bot] in #455
  • Finetuning rergression debugging - Renaming bar distributions by @rosenyu304 in #410
  • Fix infer cat nans by @noahho in #432
  • Improve column selection in RemoveEmptyFeaturesEncoderStep by @benraha in #468
  • Ensure tests parameters are in deterministic order. by @oscarkey in #472
  • Rename public methods to remove "_" prefix. And fix typo in method name. by @oscarkey in #476
  • Bump astral-sh/setup-uv from 6.5.0 to 6.6.0 by @dependabot[bot] in #467
  • Use generated data instead of "California housing" in tests. by @oscarkey in #481
  • Declare joblib dependency. by @oscarkey in #477
  • Handle arbitrary CI environment variable values by @LeoGrin in #483
  • Add support for uneven splits for large data by @anuragg1209 in #494
  • Forward cache_trainset_representation to load_model. by @priorphil in #492
  • Add note to softmax_temperature for the classifier by @brendan-priorlabs in #497
  • Add consistency checks for the low_memory and fit_with_cache modes. by @oscarkey in #498
  • Bump actions/setup-python from 5.6.0 to 6.0.0 by @dependabot[bot] in #489
  • Bump astral-sh/setup-uv from 6.6.0 to 6.6.1 by @dependabot[bot] in #490
  • Set up methods for anonymous usage analytics by @safaricd in #499
  • QKV calculation improvements in attention mechanism by @benraha in #488
  • Select multiple gpus for inference, if available. Don't use them yet. by @oscarkey in #496
  • Evaluate the estimators in parallel. by @oscarkey in #484
  • Increase versioning for TabPFN by @safaricd in #504
  • refactor preprocessors by @bejaeger in #503
  • Update classifier model file link in README by @anuragg1209 in #500
  • Increase versioning from 2.1.4 to 2.2.0 by @safaricd in #505
  • Update README to test workflow by @bejaeger in #511
  • Add TELEMETRY.md file by @safaricd in #512
  • Resolved issue saving & loading the predictor (Regressor/Classifier) model on different devices (cuda / cpu) by @MagnusBuehler in #486
  • If device="auto" and multiple GPUs are present, only select the first. by @oscarkey in #517
  • Increase tolerance for test_normalize_data_basic test by @MagnusBuehler in #515
  • Fix synchronisation bug in multi-gpu inference. by @oscarkey in #524
  • Run the tests on merge to main in addition to in PRs. by @oscarkey in #519
  • relax type for features_per_group by @LeoGrin in #529
  • Disable all telemetry in pytest by @safaricd in #527
  • Workflow Image by @klemens-floege in #532
  • [Resolved Merge Conflicts from PR 312] Remove shell download script and fix fallback URLs by @MagnusBuehler in #520
  • Add global seed fixture for reproducible tests by @MagnusBuehler in #516
  • Bump max Sklearn version to < 1.8 by @klemens-floege in #534
  • Switch to uv's "--resolution" option to install minimum dependency set. by @oscarkey in #535
  • Re-enable onnx tests. by @oscarkey in #526
  • Manage CI dependencies in pyproject and specify numpy dependency. by @oscarkey in #541
  • Use a Generator object to specify the seed for the random embeddings. by @oscarkey in #525
  • Add CODEOWNERS file for review team assignment by @noahho in #540
  • Bump mypy from 1.17.1 to 1.18.2 by @dependabot[bot] in #522
  • Fixed a formatting issue in README.md by @azurechen97 in #542
  • Fix potential race condition in InferenceEngineOnDemand. by @oscarkey in #543
  • Bump astral-sh/setup-uv from 6.6.1 to 7.1.0 by @dependabot[bot] in #547
  • Enable MPS devices on the CI, and fix associated bugs. by @oscarkey in #518
  • Add a note on creating/linking issues before opening a PR in the PR template. by @priorphil in #548
  • Update Ruff to 0.14. by @oscarkey in #549
  • Introduce method that returns raw logits for individual estimators by @bejaeger in #550
  • Add KV cache example for fast predictions by @noahho in #553
  • Update README.md by @noahho in #552
  • Explicitly disable Dynamo onnx exports to fix CI. by @oscarkey in #554
  • Add an n_preprocessing_jobs option to the classifier and regressor. by @oscarkey in #555
  • Fix build error on Python 3.9 by @brendan-priorlabs in #562
  • Bugfix: improve logics for handling regression on constant target values by @liam-sbhoo in #564
  • Bump astral-sh/setup-uv from 7.1.0 to 7.1.2 by @dependabot[bot] in #566
  • Fix column reordering in process_text_na_dataframe with nan and missing values due to Columntransformer by @MagnusBuehler in #539
  • Update pyobjc-framework-metal requirement from <12.0 to <13.0 by @dependabot[bot] in #567
  • Check for incompatible licenses by @brendan-priorlabs in #561
  • Fix cuda configuration error. by @oscarkey in #570
  • Fix precision of output in temperature=1.0 case by @bejaeger in #569
  • Allow to run Classifier and Regressor with multiple models by @bejaeger in #557
  • Rename _resolve_model_path to resolve_model_path by @bejaeger in #573
  • Loading files from UCI instead of openml now for stability by @noahho in #572
  • Fix KDITransformerWithNaN.fit in case of all-nan column. by @priorphil in #574
  • Add concurrency control to CI workflow by @noahho in #568
  • Rename ModelInterfaceConfig to InferenceConfig. by @oscarkey in #575
  • Load the inference config from the checkpoint, if present. by @oscarkey in #576
  • Add unit tests for inference config. by @oscarkey in #578
  • Add kdi transform to deps. by @priorphil in #580
  • Update huggingface-hub requirement from <1,>=0.0.1 to >=0.0.1,<2 by @dependabot[bot] in #581
  • Changes to support TabPFN 2.5, once it is released. by @oscarkey in #579
  • Check that inference_config is actually set when loading. by @priorphil in #586
  • Introduce option to calibrate temperature and tune decision thresholds by @bejaeger in #584
  • Remove type restriction on REGRESSION_Y_PREPROCESS_TRANSFORMS. by @oscarkey in #587
  • More robust performance test by @bejaeger in #588
  • Update 'balance probabilities test' and 'get_embeddings' test by @bejaeger in #589
  • Fix seed for random embeddings on CPU & MPS by @bejaeger in #592
  • Changed OrderPreservingColumnTransformer back to ColumnTransformer by @magnus-priorlabs in #596
  • Increase the default and v2.5 pretraining limits. by @oscarkey in #597
  • Update the device doc string to include multi-gpu inference. by @oscarkey in #599
  • Parse model version from model_path by @brendan-priorlabs in #585
  • Forward HF errors as they explain gating / missing tokens nicely. by @priorphil in #600
  • Set `ensure_y...
Read more

V2.1.3

22 Aug 10:13
95c50a0

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v2.1.1...v2.1.3