Added
TabPFNRegressornow acceptseval_metricandtuning_configarguments: passingtuning_config={"calibrate_temperature": True}makesfit()calibrate the temperature of the aggregated ensemble distribution on a holdout, sharpening or widening the predicted distribution as the data demands and improving everypredict()output type, including the predicted quantiles. Seteval_metricto"nll"(the default, negative log-likelihood),"crps"(continuous ranked probability score, the same implementation used by the finetuning loss) to choose which quantity the calibration optimises; they weight the predicted distribution differently and pick noticeably different temperatures, so pick the metric you will be judged by. (#1172)- In the previous setup, all GPUs in finetuning with DDP held all activations of all estimators in memory. This PR divides estimator activations across the available GPUs. (#1182)
Changed
- The temperature grid searched when calibrating
TabPFNClassifier's softmax temperature now contains 1.0 exactly, so calibration can leave a distribution untouched. Previously the grid straddled 1.0 without including it, meaning a calibrated model always applied some correction even when none was warranted. Calibrated temperatures may therefore differ slightly from previous releases. (#1172) fit()cleans large tables with far less memory and time: the redundant float64 copies are gone, cutting both transient memory and wall time by about two thirds on a 5.3 GB all-numeric table. (#1173)fit()uses less memory on tables with categorical columns: the encoded array is now assembled in place instead of being stacked and then reordered, cutting transient memory by about a quarter on a half-string table. (#1174)fit()no longer slows to a crawl on wide tables with categorical columns under pandas < 3: the dtype casts no longer rebuild the frame one column at a time, which took minutes on a 333,333 x 400 table and now takes seconds. (#1180)- Reduce peak GPU memory during KV-cache construction by quantizing layers as they are built and temporarily staging completed estimator caches on CPU in memory-saving mode. (#1183)
Fixed
TabPFNRegressor.predict_batchednow raisesNotImplementedErrorwhen the estimator was constructed with atuning_config, instead of silently returning uncalibrated predictions. The ensemble temperature is calibrated on each dataset's own holdout, so a fused batch has no single temperature to apply; score such datasets individually withpredict. This matches the existing guard inTabPFNClassifier.predict_proba_batched. (#1172)