Releases: PriorLabs/TabPFN
v7.1.1
Added
- Add modular experiment logging for finetuning with
experiment_loggerparameter, includingWandbLoggerfor W&B tracking and aFinetuningLoggerprotocol 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)
- Optimize regressor predict method for memory efficiency
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_precisionflag was not applied correctly. (#852)
v7.1.0
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
v7.0.1
v7.0.0
Added
- Introduce TabPFN-2.6 model and use as default (#831)
- Added argument
use_fixed_preprocessing_seedtoFinetunedTabPFNClassifierandFinetunedTabPFNRegressorfor 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_cardinalityoption 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()anddefault_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
v6.4.0
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_FRACTIONenvironment variable. (#773) - Added
TabPFNCUDAOutOfMemoryErrorandTabPFNMPSOutOfMemoryErrorfor 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
FeatureSchemasystem to track column metadata through transformations, replacing raw categorical index lists. - Added
PreprocessingPipelineandPreprocessingStepinterfaces for modular transformations and updated all preprocessing steps. - Added
TabPFNLabelEncoderfor centralized label validation and metadata extraction.
(#767)
- Introduced
-
- 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.pymodule
(#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_stateparameter fromAddFingerprintFeaturesStep; 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_nameinPreprocessorConfig(#768)
v6.3.2
Added
-
- Moved preprocessing-related code to dedicated modules inside
src/tabpfn/preprocessing/ - Renamed public functions:
validate_X_predict→ensure_compatible_predict_input_sklearnvalidate_Xy_fit→ensure_compatible_fit_inputs_sklearn
(#720)
- Moved preprocessing-related code to dedicated modules inside
-
- Add new features to finetuning (metric selection, time limit, passing validation data)
- Added
eval_metricandtime_limitparameters toFinetunedTabPFNClassifierandFinetunedTabPFNRegressor - Added
X_val,y_valparameters to.fit()ofFinetunedTabPFNClassifierandFinetunedTabPFNRegressor
- Added
- 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)
- Add new features to finetuning (metric selection, time limit, passing validation data)
-
- Ensure
TabPFNValidationErrorwraps both custom and sklearn's validate_data() errors (#732)
- Ensure
-
Refactor of model encoder. Move imports from
tabpfn.architectures.base.encoderstotabpfn.architectures.encoders(#733) -
Renamed the estimator's
preprocessor_attribute toordinal_encoder_(#756)
v6.0.6
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_versionandmodel_pathby @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
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_jobsoption 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...
V2.1.3
What's Changed
- Bump mypy from 1.17.0 to 1.17.1 by @dependabot[bot] in #434
- fix saving and loading model including weights by @spirousschuh in #420
- raise an error if the model in TabPFNClassifier doesn't have encoder … by @LeoGrin in #439
- Fix GQA api detection on PyTorch<2.5. by @oscarkey in #438
- Adding GPU testing to our CI pipeline by @noahho in #440
- Gpu runner #2 by @noahho in #441
- Fix validation error when .env file contains settings from other apps. by @oscarkey in #446
- Ignore notebooks in the Ruff linter. by @oscarkey in #450
- Make the Gemini review bot less verbose by disabling the summary. by @oscarkey in #452
- Enable type annotation rules in the Ruff linter. by @oscarkey in #451
- Test all models by @noahho in #449
- Add additional finetuned model checkpoints to model loading by @anuragg1209 in #462
- Update CHANGELOG.md by @noahho in #463
- bump package version by @noahho in #464
- CPU attention mechanism using PyTorch implementation by @benraha in #459
New Contributors
- @spirousschuh made their first contribution in #420
Full Changelog: v2.1.1...v2.1.3