Skip to content

v2.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 20 Oct 20:43
· 109 commits to main since this release
11d350f

DeepTab 2.1.0

DeepTab 2.1 focuses on PreTab 1.0 integration, estimator reliability, persistence, training correctness, dependency security, and a stronger release pipeline.

This release also moves the supported Python range to 3.11–3.13 and includes fixes across preprocessing, metrics, HPO, retrieval models, LSS distributions, and model configuration.

Highlights

  • Integrated PreTab 1.0 with preprocessing presets, a representation registry, canonical configuration, and dense/block output support.
  • Improved save/load and estimator lifecycle reliability, including preprocessing state, loss functions, retrieval data, and architecture state.
  • Fixed several silent correctness issues affecting training, metrics, HPO, LSS, TabR, ModernNCA, and architecture configuration.
  • Strengthened CI/CD with release-branch CI, an aggregate CI Success gate, dependency endpoint testing, installed-wheel validation, and release-tag ancestry checks.
  • Updated Python and dependency support to improve compatibility and security.

Added

  • PreTab presets and a representation registry for selecting preprocessing strategies.
  • Canonical PreprocessingConfig fields with legacy alias resolution and actionable errors for unsupported settings or missing optional dependencies.
  • Block and dense output options in build_preprocessor.
  • Saved preprocessor specifications, fingerprints, and feature widths for inspecting and restoring fitted preprocessing.

Changed

Python and dependency support

  • DeepTab now requires Python 3.11–3.13 (>=3.11,<3.14). Python 3.10 reached end of life on 2026-10-01 and is no longer supported.
  • Users requiring Python 3.10 should remain on DeepTab 2.0.x with compatible dependencies.
  • Require pandas >=2.2.2,<3 and SciPy >=1.16,<2. The SciPy minimum avoids a reproduced native loader failure on Apple Silicon.
  • Documentation builds require Python 3.12 or 3.13.

Preprocessing

  • Integrated PreTab 1.0.
  • New fits default numerical output_dim to 7; explicitly configured widths remain unchanged.
  • Resolve preprocessing tasks automatically from estimator type.
  • Propagate ObservabilityConfig.verbosity to preprocessing.
  • Historical DeepTab 2.0 PLE artifacts require their original dependency environment and are not automatically converted.

Optional retrieval

  • Moved FAISS and delu to the explicit tabr extra.
  • The default installation and all observability bundle no longer install native retrieval packages.
  • Native TabR remains unsupported on macOS arm64 and now fails before conflicting native imports.

Logging

  • Model save/load status messages now use configured logging instead of print().

Fixed

Estimator state and persistence

  • Preserve an existing fitted estimator when refit input validation fails, while correctly invalidating state when rebuilding has already started (#424, #426, #449).
  • Apply set_params() overrides to the actual model configuration and reject unsupported parameters correctly (#410, #449).
  • Refresh supplied data, validation splits, and loaders during rebuild=False continuation while retaining compatible weights and fitted preprocessing.
  • Continue from pretrained weights by default in fit() (#446).
  • Persist and restore fitted loss functions and NDTF's generated tree architecture (#444, #445).
  • Default load() to CPU rather than automatically selecting hardware (#465).
  • Preserve TabR and ModernNCA candidate data across save/load and loaded continuation.
  • Prevent retrieval query-label leakage in TabR and ModernNCA (#413).
  • Correct ModernNCA regression and binary-classification reload behavior and convert binary votes to real logits (#268).

Training, metrics, and HPO

  • Preserve string class labels in Accuracy and F1Score, including explicit pos_label support for binary string labels.
  • Respect fit-level arguments, optimizer settings, and custom regression losses instead of silently overriding them (#415, #430, #442).
  • Respect checkpoint paths and requested monitor/mode settings, resolve best_epoch, and timestamp default checkpoint directories (#411, #425).
  • Correct seeding, callbacks, fit-state transitions, and inference device handling (#452).
  • Encode classification labels consistently and route metrics to labels, probabilities, or raw outputs as required (#409, #443).
  • Aggregate training and validation metrics over complete epochs and correctly reset metric state.
  • Correct expected calibration error handling and include confidence 1.0 in calibration bins (#421).
  • Correct HPO trial selection, pruning, and winner refitting (#420).

Data and preprocessing

  • Correct encoding output, categorical-feature metadata, input-dimension typing, and PreTab preprocessing compatibility (#422, #451).
  • Cast concatenated features to floating point for non-embedding architectures.
  • Normalize None to np.nan in object columns.
  • Reject duplicate columns and correctly impute all-NaN columns.
  • Reject categorical_method="none" with a clear configuration error.
  • Correct regression target-shape handling (#441).

Architectures and distributions

  • Correct architecture configuration options and neural-block behavior (#423, #450).
  • Preserve strict custom architecture constructor signatures when supplying binary task metadata.
  • Correct MLP bias handling and NDTF backward computation on MPS without changing saved parameter layouts.
  • Apply the Mamba block correctly in MambaTab.forward (#435).
  • Apply pre-normalization and dropout correctly around RowColTransformer attention (#436).
  • Align contrastive pretraining anchors with their corresponding pairs (#437).
  • Preserve parameter axes in ensemble LSS outputs (#447).
  • Correct LSS scoring, distribution handling, and persistence (#419).
  • Fix multinomial softmax, JohnsonSU naming, and singleton-dimension handling (#453).
  • Use PyTorch's probability convention in NegativeBinomial (#429).
  • Correct the inverted log-term sign in GammaDeviance (#427).

Security

  • Require Torch >=2.13,<2.15.
  • Require setuptools >=83,<84.
  • Require Lightning >=2.6.6,<3.
  • Require Accelerate >=1.15,<2.
  • Require TensorBoard >=2.21,<3 for TensorBoard and tracking extras.
  • Updated vulnerable locked dependencies.
  • Removed blanket security-audit ignores.
  • Updated the separately installed documentation HTML cleaner to 0.4.5.

CI, documentation, and maintenance

  • Run CI automatically on release/** branches.
  • Added the aggregate CI Success release and branch-protection gate.
  • Validate release-tag ancestry before packaging, testing, and publication.
  • Validate independently resolved minimum and newest supported dependency profiles.
  • Test installed-wheel training and save/load workflows in CI.
  • Correct CI dependency installation, runner-cache scope, and NumPy typing checks.
  • Enable Prettier through pre-commit hooks and expand regression coverage.
  • Clarify installation profiles, preprocessing widths, historical artifact limitations, supported environments, and the maintainer release process (#454).
  • Centralize preprocessor construction and neural-block imports and remove unused helpers and stub modules.

Contributors

DeepTab 2.1.0 was primarily developed and coordinated by @mkumar73, with additional architecture, training, metric, and distribution fixes contributed by @ChrisW09.

Special thanks contributors:

  • @ChrisW09 for MambaTab forward-path fixes (#435), contrastive pretraining alignment (#437), RowColTransformer attention fixes (#436), GammaDeviance correction (#427), and NegativeBinomial probability handling (#429).
  • @mkumar73 for the broader DeepTab 2.1 integration and stabilization, including PreTab 1.0 integration, estimator lifecycle and persistence improvements, preprocessing, training, metrics, HPO, CI/CD, dependency compatibility, security updates, documentation, and release preparation (#477, #480).

Upgrade notes

Upgrade with:

pip install -U deeptab