- Add TabICLv2 pre-training code (
python -m tabicl.train): quantile regression training via a pinball loss (--regression_method quantile) in addition to classification, and the Muon optimizer (--muon True) alongside AdamW. The training CLI now also exposes thegraph_scmprior options, layernorm-without-bias (--norm_type layernorm_nobias), SSMax (--col_ssmax/--icl_ssmaxwith--ssmax_type), feature grouping and target-aware embeddings (--col_feature_group,--col_target_aware,--col_affine), the RoPE variant (--row_rope_interleaved; v1 interleaved by default, v2 usesFalse), residual initialization (--zero_init; v2 usesFalse), and FlashAttention-3 during training (--use_flash_attn3; the v2 recipe enables it for stages 2 and 3 only). All CLI defaults reproduce the TabICLv1 model configuration; resuming a run re-seeds the data stream with the current step. Ships the three-stage TabICLv2 curriculum scripts, separately for the classifier and regressor checkpoints (scripts/train_v2_{clf,reg}_stage{1,2,3}.sh).
-
When unpickling a TabICL estimator, the fitted attributes
device_,model_, etc. are only state if the pickled model was fitted. (PR#121) -
Improve non-CUDA GPU inference reliability and performance (including XPU): inference now consistently runs on the configured backend device, uses backend-appropriate autocast, and queries available memory plus async stream/event primitives through backend-agnostic
torch.<backend>APIs (with safe synchronous fallbacks when async is unavailable). This fixes pathological auto-batch sizing (e.g. batch size forced to 1) and restores expected accelerated inference behavior on supported non-CUDA GPU backends. Whendevice=None, estimators now default to CUDA when available, otherwise XPU, then MPS, and then CPU. (PR#144) -
Improve Apple Silicon MPS inference: MPS now uses the same AMP, auto-batching, and memory-aware inference path as other accelerators instead of falling back to the CPU path.
use_amp="auto"is device-aware (off on CPU; size heuristic on CUDA/XPU/MPS), and float16 KV caches are kept on MPS when AMP is enabled. MPS is included in the default device order (CUDA → XPU → MPS → CPU). (PR#144)
-
Add SHAP and ShapIQ support with NaN-based feature masking to explain TabICL predictions, plus a dedicated tutorial and a faster SHAP path. (PR#90)
-
Add support for some unsupervised learning tasks. (PR#82)
-
Add support for raw quantiles (direct outputs of TabICL) in regression, enabling native quantile regression without post-hoc calibration. (PR#42)
-
Add preprocessing for NumPy array inputs, consistent with existing behavior for Pandas inputs: ordinal encoding for categorical features, mean imputation for numerical features, and encoding missing values as a separate category for categorical columns. (PR#51)
- Clarify the public vs. private API boundary following scikit-learn conventions. Internal modules are now prefixed with an underscore (
_model,_sklearn,_unsupervised, etc.); import public estimators (TabICLClassifier,TabICLRegressor,TabICLForecaster) from the top-leveltabiclpackage. (PR#84)
- Replace broadcasting with
searchsortedinQuantileDistributionfor faster quantile evaluation.
-
New documentation site built with Sphinx + Sphinx Gallery and published on Read the Docs, including a redesigned landing page. (PR#52, PR#54, PR#58, PR#60, PR#67, PR#81)
-
Add a project logo. (PR#74)
-
New tutorials: quantile regression (PR#61), probabilistic classification (PR#73), time series forecasting (PR#77), and skrub integration with string-handling fixes (PR#78).
-
Tweak dependency management and test against the development versions of dependencies in CI. (PR#53, PR#63)
-
Set explicit read permissions in CI workflows. (PR#76)
-
Drop Python 3.9 support and now requires Python >= 3.10
-
kv_cachemoved fromfit()to__init__()following scikit-learn convention.kv_cacheis now a constructor parameter for bothTabICLClassifierandTabICLRegressor. -
TabICLForecasterAPI changes —output_selectionrenamed topoint_estimate -
Fix KV cache dtype mismatch. When AMP is enabled, cached projections stored in float16 caused errors when loaded on CPU/MPS/CUDA without AMP. The cache is now auto-upcast to float32 during loading.
-
Refactor time series forecasting module