New Features
* Added `dynamic_stacking` predictor fit argument to mitigate [stacked overfitting](https://github.com/autogluon/autogluon/issues/2779#issuecomment-1736468165) LennartPurucker Innixma (3616)
* Added [zeroshot-HPO learned portfolio](https://github.com/autogluon/autogluon/blob/master/tabular/src/autogluon/tabular/configs/zeroshot/zeroshot_portfolio_2023.py) as new hyperparameters for `best_quality` and `high_quality` presets. Innixma geoalgo (#3750)
* Added experimental scikit-learn API compatible wrappers to TabularPredictor. You can access them via `from autogluon.tabular.experimental import TabularClassifier, TabularRegressor`. Innixma (3769)
* Added `predictor.model_failures()` Innixma (3421)
* Added enhanced FT-Transformer taoyang1122 Innixma (3621, 3644, 3692)
* Added `predictor.simulation_artifact()` to support integration with [TabRepo](https://github.com/autogluon/tabrepo) Innixma (#3555)
Performance Improvements
* Enhanced FastAI model quality on regression via output clipping LennartPurucker Innixma (3597)
* Added Skip-connection Weighted Ensemble LennartPurucker (3598)
* Fix memory leaks by using ray processes for sequential fitting LennartPurucker (3614)
* Added dynamic parallel folds support to better utilize compute in low memory scenarios yinweisu Innixma (3511)
* Fixed linear model crashes during HPO and added search space for linear models Innixma (3571, 3720)
Other Enhancements
* Multi-layer stacking now produces deterministic results LennartPurucker (3573)
* Various model dependency updates mglowacki100 (3373)
* Various code cleanup and logging improvements Innixma (3408, 3570, 3652, 3734)
Bug Fixes / Code and Doc Improvements
* Fixed incorrect model memory usage calculation Innixma (3591)
* Fixed `infer_limit` being used incorrectly when bagging Innixma (3467)
* Fixed rare edge-case FastAI model crash Innixma (3416)
* Various minor bug fixes Innixma (3418, 3480)
AutoMM
[AutoGluon Multimodal (AutoMM)](https://auto.gluon.ai/stable/tutorials/multimodal/index.html) is designed to simplify the fine-tuning of foundation models for downstream applications with just three lines of code. It seamlessly integrates with popular model zoos such as [HuggingFace Transformers](https://github.com/huggingface/transformers), [TIMM](https://github.com/huggingface/pytorch-image-models), and [MMDetection](https://github.com/open-mmlab/mmdetection), providing support for a diverse range of data modalities,
including image, text, tabular, and document data, whether used individually or in combination.
New Features
* Semantic Segmentation
* Introducing the new problem type `semantic_segmentation`, for fine-tuning [Segment Anything Model (SAM)](https://segment-anything.com/) with three lines of code. Harry-zzh zhiqiangdon (#3645, 3677, 3697, 3711, 3722, 3728)
* Added comprehensive benchmarks from diverse domains, including natural images, agriculture, remote sensing, and healthcare.
* Utilizing parameter-efficient finetuning (PEFT) [LoRA](https://arxiv.org/abs/2106.09685), showcasing consistent superior performance over alternatives ([VPT](https://arxiv.org/abs/2203.12119), [adaptor](https://arxiv.org/abs/1902.00751), [BitFit](https://arxiv.org/abs/2106.10199), [SAM-adaptor](https://arxiv.org/abs/2304.09148), and [LST](https://arxiv.org/abs/2206.06522)) in the extensive benchmarks.
* Added one [semantic segmentation tutorial](https://auto.gluon.ai/stable/tutorials/multimodal/image_segmentation/beginner_semantic_seg.html) zhiqiangdon (#3716).
* Using [SAM-ViT Huge](https://huggingface.co/facebook/sam-vit-huge) by default (GPU memory > 25GB required).
* Few Shot Classification
* Added the new `few_shot_classification` problem type for training few shot classifiers on images or texts. zhiqiangdon (3662, 3681, 3695)
* Leveraging image/text foundation models to extract features and train SVM classifiers.
* Added one [few shot classification tutorial](https://auto.gluon.ai/stable/tutorials/multimodal/advanced_topics/few_shot_learning.html). zhiqiangdon (#3662)
* Supported [torch.compile](https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html) for faster training (experimental and torch >=2.2 required) zhiqiangdon (#3520).
Performance Improvements
* Improved default image backbones, achieving a 100% win-rate on the image benchmark. taoyang1122 (3738)
* Replaced MLPs with FT-Transformer as the default tabular backbones, resulting in a 67% win-rate on the text+tabular benchmark. taoyang1122 (3732)
* Using both the improved default image backbones and FT-Transformer achieves a 62% win-rate on the text+tabular+image benchmark. taoyang1122 (3732, 3738)
Stability Enhancements
* Enabled rigorous multi-GPU CI testing. prateekdesai04 (3566)
* Fixed multi-GPU issues. FANGAreNotGnu (3617 3665 3684 3691, 3639, 3618)
Enhanced Usability
* Supported custom evaluation metrics, which allows defining custom [metric object](https://auto.gluon.ai/dev/tutorials/tabular/advanced/tabular-custom-metric.html) and passing it to the `eval_metric` argument taoyang1122 (#3548)
* Supported multi-GPU training in notebooks (experimental) zhiqiangdon (3484)
* Improved logging with system info zhiqiangdon (3735)
Improved Scalability
* The introduction of the new learner class design facilitates easier support for new tasks and data modalities within AutoMM, enhancing overall scalability. zhiqiangdon (3650, 3685, 3735)
Other Enhancements
* Added the option `hf_text.use_fast` for customizing fast tokenizer usage in `hf_text` models. zhiqiangdon (3379)
* Added fallback evaluation/validation metric, supporting `f1_macro` `f1_micro`, and `f1_weighted`. FANGAreNotGnu (3696)
* Supported multi-GPU inference with the DDP strategy. zhiqiangdon (3445, 3451)
* Upgraded torch to 2.0. zhiqiangdon (3404)
* Upgraded lightning to 2.0 zhiqiangdon (3419)
* Upgraded torchmetrics to 1.0 zhiqiangdon (3422)
Code Improvements
* Refactored AutoMM with the learner class for improved design. zhiqiangdon (3650, 3685, 3735)
* Refactored FT-Transformer. taoyang1122 (3621, 3700)
* Refactored the visualizers of object detection, semantic segmentation, and NER. zhiqiangdon (3716)
* Other code refactor/clean-up: zhiqiangdon FANGAreNotGnu (3383 3399 3434 3667 3684 3695)
Bug Fixes/Doc Improvements
* Fixed HPO for focal loss. suzhoum (3739)
* Fixed one ONNX export issue. AnirudhDagar (3725)
* Improved AutoMM introduction for clarity. zhiqiangdon (3388 3726)
* Improved AutoMM API doc. zhiqiangdon AnirudhDagar (3772 3777)
* Other bug fixes zhiqiangdon FANGAreNotGnu taoyang1122 tonyhoo rsj123 AnirudhDagar (3384, 3424, 3526, 3593, 3615, 3638, 3674, 3693, 3702, 3690, 3729, 3736, 3474, 3456, 3590, 3660)
* Other doc improvements zhiqiangdon FANGAreNotGnu taoyang1122 (3397, 3461, 3579, 3670, 3699, 3710, 3716, 3737, 3744, 3745, 3680)
TimeSeries
Highlights
AutoGluon 1.0 features numerous usability and performance improvements to the TimeSeries module. These include automatic handling of missing data and irregular time series, new forecasting metrics (including custom metric support), advanced time series cross-validation options, and new forecasting models. AutoGluon produces state-of-the-art results in forecast accuracy, achieving [70%+ win rate](https://openreview.net/forum?id=XHIY3cQ8Tew) compared to other popular forecasting frameworks.
New features
- Support for custom forecasting metrics shchur (3760, 3602)
- New forecasting metrics `WAPE`, `RMSSE`, `SQL` + improved [documentation for metrics](https://auto.gluon.ai/dev/tutorials/timeseries/forecasting-metrics.html) melopeo shchur (#3747, 3632, 3510, 3490)
- Improved robustness: `TimeSeriesPredictor` can now handle data with all [pandas frequencies](https://pandas.pydata.org/docs/user_guide/timeseries.html#offset-aliases), irregular timestamps, or missing values represented by `NaN` shchur (3563, 3454)
- New models: intermittent demand forecasting models based on conformal prediction (`ADIDA`, `CrostonClassic`, `CrostonOptimized`, `CrostonSBA`, `IMAPA`); `WaveNet` and `NPTS` from GluonTS; new baseline models (`Average`, `SeasonalAverage`, `Zero`) canerturkmen shchur (3706, 3742, 3606, 3459)
- Advanced cross-validation options: avoid retraining the models for each validation window with `refit_every_n_windows` or adjust the step size between validation windows with `val_step_size` arguments to `TimeSeriesPredictor.fit` shchur (3704, 3537)
Enhancements
- Enable Ray Tune for deep-learning forecasting models canerturkmen (3705)
- Support passing multiple evaluation metrics to `TimeSeriesPredictor.evaluate` shchur (3646)
- Static features can now be passed directly to `TimeSeriesDataFrame.from_path` and `TimeSeriesDataFrame.from_data_frame` constructors shchur (3635)
Performance improvements
- Much more accurate forecasts at low time limits thanks to new presets and updated logic for splitting the training time across models shchur (3749, 3657, 3741)
- Faster training and prediction + lower memory usage for `DirectTabular` and `RecursiveTabular` models (3740, 3620, 3559)
- Enable early stopping and improve inference speed for GluonTS models shchur (3575)
- Reduce import time for `autogluon.timeseries` by moving import statements inside model classes (3514)
Bug Fixes / Code and Doc Improvements
- Improve log messages shchur (3721)
- Add reference to the publication on AutoGluon-TimeSeries to README shchur (3482)
- Align API of `TimeSeriesPredictor` with `TabularPredictor`, remove deprecated methods shchur (3714, 3655, 3396)
- General bug fixes and improvements shchur(3758, 3756, 3755, 3754, 3746, 3743, 3727, 3698, 3654, 3653, 3648, 3628, 3588, 3560, 3558, 3536, 3533, 3523, 3522, 3476, 3463)
EDA
The EDA module will be released at a later time, as it requires additional development effort before it is ready for 1.0.
We will make an announcement when EDA is ready for release. For now, please continue to use `"autogluon.eda==0.8.2"`.
Deprecations
General
* `autogluon.core.spaces` has been deprecated. Please use `autogluon.common.spaces` instead Innixma (3701)
Tabular
Tabular will log warnings if using the deprecated methods. Deprecated methods are planned to be removed in AutoGluon 1.2 Innixma (3701)
* `autogluon.tabular.TabularPredictor`
* `predictor.get_model_names()` -> `predictor.model_names()`
* `predictor.get_model_names_persisted()` -> `predictor.model_names(persisted=True)`
* `predictor.compile_models()` -> `predictor.compile()`
* `predictor.persist_models()` -> `predictor.persist()`
* `predictor.unpersist_models()` -> `predictor.unpersist()`
* `predictor.get_model_best()` -> `predictor.model_best`
* `predictor.get_pred_from_proba()` -> `predictor.predict_from_proba()`
* `predictor.get_oof_pred_proba()` -> `predictor.predict_proba_oof()`
* `predictor.get_oof_pred()` -> `predictor.predict_oof()`
* `predictor.get_model_full_dict()` -> `predictor.model_refit_map()`
* `predictor.get_size_disk()` -> `predictor.disk_usage()`
* `predictor.get_size_disk_per_file()` -> `predictor.disk_usage_per_file()`
* `predictor.leaderboard()` `silent` argument deprecated, replaced by `display`, defaults to False
* Same for `predictor.evaluate()` and `predictor.evaluate_predictions()`
AutoMM
* Deprecated the `FewShotSVMPredictor` in favor of the new `few_shot_classification` problem type zhiqiangdon (3699)
* Deprecated the `AutoMMPredictor` in favor of `MultiModalPredictor` zhiqiangdon (3650)
* `autogluon.multimodal.MultiModalPredictor`
* Deprecated the `config` argument in the fit API. zhiqiangdon (3679)
* Deprecated the `init_scratch` and `pipeline` arguments in the init API zhiqiangdon (3668)
TimeSeries
* `autogluon.timeseries.TimeSeriesPredictor`
* Deprecated argument `TimeSeriesPredictor(ignore_time_index: bool)`. Now, if the data contains irregular timestamps, either convert it to regular frequency with `data = data.convert_frequency(freq)` or provide frequency when creating the predictor as `TimeSeriesPredictor(freq=freq)`.
* `predictor.evaluate()` now returns a dictionary (previously returned a float)
* `predictor.score()` -> `predictor.evaluate()`
* `predictor.get_model_names()` -> `predictor.model_names()`
* `predictor.get_model_best()` -> `predictor.model_best`
* Metric `"mean_wQuantileLoss"` has been renamed to `"WQL"`
* `predictor.leaderboard()` `silent` argument deprecated, replaced by `display`, defaults to False
* When setting `hyperparameters` to a string in `predictor.fit()`, supported values are now `"default"`, `"light"` and `"very_light"`
* `autogluon.timeseries.TimeSeriesDataFrame`
- `df.to_regular_index()` -> `df.convert_frequency()`
- Deprecated method `df.get_reindexed_view()`. Please see deprecation notes for `ignore_time_index` under `TimeSeriesPredictor` above for information on how to deal with irregular timestamps
- Models
- All models based on MXNet (`DeepARMXNet`, `MQCNNMXNet`, `MQRNNMXNet`, `SimpleFeedForwardMXNet`, `TemporalFusionTransformerMXNet`, `TransformerMXNet`) have been removed
- Statistical models from Statmodels (`ARIMA`, `Theta`, `ETS`) have been replaced by their counterparts from StatsForecast (3513). Note that these models now have different hyperparameter names.
- `DirectTabular` is now implemented using `mlforecast` backend (same as `RecursiveTabular`), most hyperparameter names for the model have changed.
- `autogluon.timeseries.TimeSeriesEvaluator` has been deprecated. Please use metrics available in `autogluon.timeseries.metrics` instead.
- `autogluon.timeseries.splitter.MultiWindowSplitter` and `autogluon.timeseries.splitter.LastWindowSplitter` have been deprecated. Please use `num_val_windows` and `val_step_size` arguments to `TimeSeriesPredictor.fit` instead (alternatively, use `autogluon.timeseries.splitter.ExpandingWindowSplitter`).
Papers
AutoGluon-TimeSeries: AutoML for Probabilistic Time Series Forecasting
We have published a paper on AutoGluon-TimeSeries at AutoML Conference 2023 ([Paper Link](https://openreview.net/forum?id=XHIY3cQ8Tew), [YouTube Video](https://www.youtube.com/watch?v=niLmfjXeHnE)). In the paper, we benchmarked AutoGluon and popular open-source forecasting frameworks (including DeepAR, TFT, AutoARIMA, AutoETS, AutoPyTorch). AutoGluon produces SOTA results in point and probabilistic forecasting, and even **achieves 65% win rate against the best-in-hindsight combination of models**.
TabRepo: A Large Scale Repository of Tabular Model Evaluations and its AutoML Applications
We have published a paper on Tabular Zeroshot-HPO ensembling simulation to arXiv ([Paper Link](https://arxiv.org/pdf/2311.02971.pdf), [GitHub](https://github.com/autogluon/tabrepo)). This paper is key to achieving the performance improvements seen in AutoGluon 1.0, and we plan to continue to develop the code-base to support future enhancements.
XTab: Cross-table Pretraining for Tabular Transformers
We have published a paper on tabular Transformer pre-training at ICML 2023 ([Paper Link](https://arxiv.org/abs/2305.06090), [GitHub](https://github.com/BingzhaoZhu/XTab)). In the paper we demonstrate state-of-the-art performance for tabular deep learning models, including being able to match the performance of XGBoost and LightGBM models. While the pre-trained transformer is not yet incorporated into AutoGluon, we plan to integrate it in a future release.
Learning Multimodal Data Augmentation in Feature Space
Our paper on learning multimodal data augmentation was accepted at ICLR 2023 ([Paper Link](https://arxiv.org/pdf/2212.14453.pdf), [GitHub](https://github.com/lzcemma/LeMDA/)). This paper introduces a plug-and-play module to learn multimodal data augmentation in feature space, with no constraints on the identities of the modalities or the relationship between modalities. We show that it can (1) improve the performance of multimodal deep learning architectures, (2) apply to combinations of modalities that have not been previously considered, and (3) achieve state-of-the-art results on a wide range of applications comprised of image, text, and tabular data. This work is not yet incorporated into AutoGluon, but we plan to integrate it in a future release.
Data Augmentation for Object Detection via Controllable Diffusion Models
Our paper on generative object detection data augmentation has been accepted at WACV 2024 (Paper and GitHub link will be available soon). This paper proposes a data augmentation pipeline based on controllable diffusion models and CLIP, with visual prior generation to guide the generation and post-filtering by category-calibrated CLIP scores to control its quality. We demonstrate that the performance improves across various tasks and settings when using our augmentation pipeline with different detectors. Although diffusion models are currently not integrated into AutoGluon, we plan to incorporate the data augmentation techniques in a future release.
Adapting Image Foundation Models for Video Understanding
We have published a paper on how to efficiently adapt image foundation models for video understanding at ICLR 2023 ([Paper Link](https://arxiv.org/pdf/2302.03024.pdf), [GitHub](https://github.com/taoyang1122/adapt-image-models)). This paper introduces spatial adaptation, temporal adaptation and joint adaptation to gradually equip a frozen image model with spatiotemporal reasoning capability. The proposed method achieves competitive or even better performance than traditional full finetuning while largely saving the training cost of large foundation models.