版本 1.0.0

今天终于到来了……AutoGluon 1.0 已发布!经过四年多的开发111 位贡献者的 2061 次提交,我们很高兴与您分享我们努力创造并普及世界上最强大、易用且功能丰富的自动化机器学习系统的成果。AutoGluon 1.0 带来了预测质量的变革性增强,这得益于多种新颖集成创新的结合,如下所示。除了性能提升之外,还在各个模块部分详细介绍了许多其他改进。

注意:不支持加载在旧版本 AutoGluon 上训练的模型。请使用 AutoGluon 1.0 重新训练模型。

此版本支持 Python 3.8、3.9、3.10 和 3.11 版本。

此版本包含来自 17 位贡献者的 223 次提交!

全部贡献者列表(按提交次数排序)

@shchur, @zhiqiangdon, @Innixma, @prateekdesai04, @FANGAreNotGnu, @yinweisu, @taoyang1122, @LennartPurucker, @Harry-zzh, @AnirudhDagar, @jaheba, @gradientsky, @melopeo, @ddelange, @tonyhoo, @canerturkmen, @suzhoum

加入社区:
获取最新动态:Twitter

亮点

表格数据性能增强

AutoGluon 1.0 提供了预测质量的重大增强,在表格数据建模领域树立了新的标杆。据我们所知,AutoGluon 1.0 是自 2020 年 3 月发布原始 AutoGluon 论文以来,表格数据领域最重大的技术飞跃。这些增强主要来自两个特性:动态堆叠 (Dynamic stacking)缓解堆叠过拟合,以及通过 Zeroshot-HPO 获得的新学习到的模型超参数组合 (Learned model hyperparameters portfolio),后者来自新发布的 TabRepo 集成模拟库。总而言之,这些改进使得 AutoGluon 1.0 与 AutoGluon 0.8 相比,胜率提高了 75%,同时推理速度更快,磁盘占用更低,稳定性更高。

AutoML 基准测试结果

OpenML 于 2023 年 11 月 16 日发布了官方 2023 年 AutoML 基准测试结果。他们的结果显示,AutoGluon 0.8 在各种任务中是 AutoML 系统领域的最新技术:“总体而言,在模型性能方面,AutoGluon 在我们的基准测试中始终具有最高的平均排名。”现在我们展示 AutoGluon 1.0 甚至比 AutoGluon 0.8 取得了更优异的结果!

下面是针对 OpenML AutoML 基准测试的 1040 个任务进行的比较。LightGBM、XGBoost 和 CatBoost 的结果是通过 AutoGluon 获得的,其他方法来自官方 2023 年 AutoML 基准测试结果。AutoGluon 1.0 相对于传统表格模型具有 95% 以上的胜率,其中对 LightGBM 的胜率为 99%,对 XGBoost 的胜率为 100%。AutoGluon 1.0 对其他 AutoML 系统的胜率在 82% 到 94% 之间。对于所有方法,AutoGluon 都能实现 >10% 的平均损失改进(例如:从 90% 的准确率提高到 91% 的准确率就是 10% 的损失改进)。AutoGluon 1.0 在 63% 的任务中排名第一,而 lightautoml 排名第二,占 12%(AutoGluon 0.8 此前排名第一的比例为 48%)。AutoGluon 1.0 甚至比 AutoGluon 0.8 平均损失改进了 7.4%!

方法

AG 胜率

AG 损失改进

缩放损失

排名

最佳

AutoGluon 1.0 (最佳, 4h8c)

-

-

0.04

1.95

63%

lightautoml (2023, 4h8c)

84%

12.0%

0.2

4.78

12%

H2OAutoML (2023, 4h8c)

94%

10.8%

0.17

4.98

1%

FLAML (2023, 4h8c)

86%

16.7%

0.23

5.29

5%

MLJAR (2023, 4h8c)

82%

23.0%

0.33

5.53

6%

autosklearn (2023, 4h8c)

91%

12.5%

0.22

6.07

4%

GAMA (2023, 4h8c)

86%

15.4%

0.28

6.13

5%

CatBoost (2023, 4h8c)

95%

18.2%

0.28

6.89

3%

TPOT (2023, 4h8c)

91%

23.1%

0.4

8.15

1%

LightGBM (2023, 4h8c)

99%

23.6%

0.4

8.95

0%

XGBoost (2023, 4h8c)

100%

24.1%

0.43

9.5

0%

RandomForest (2023, 4h8c)

97%

25.1%

0.53

9.78

1%

AutoGluon 1.0 不仅更准确,而且由于我们在低内存训练期间使用了新的 Ray 子进程,稳定性也更高,在 AutoML 基准测试中实现了 0 次任务失败

AutoGluon 1.0 能够实现任何 AutoML 系统中最快的推理吞吐量,同时仍能获得最先进的结果。通过指定 infer_limit fit 参数,用户可以在准确性和推理速度之间进行权衡,以满足他们的需求。

如下图所示,AutoGluon 1.0 在质量和推理吞吐量方面设定了帕累托前沿,相对于所有其他 AutoML 系统实现了帕累托支配。AutoGluon 1.0 High 以 8 倍的推理速度和 8 倍低的磁盘使用量实现了优于 AutoGluon 0.8 Best 的性能!

AutoGluon 1.0 AutoML Benchmark Plot

您可以在这里获取结果的更多详细信息。

我们很高兴看到我们的用户可以利用 AutoGluon 1.0 的增强性能取得哪些成就。一如既往,我们将在未来的版本中继续改进 AutoGluon,为所有人推动 AutoML 的界限。

AutoGluon 多模态 (AutoMM) 亮点一览

AutoMM highlights

AutoMM 的独特性

AutoGluon 多模态 (AutoMM) 与其他主要关注表格数据分类或回归的开源 AutoML 工具箱(如 AutosSklearnLightAutoMLH2OAutoMLFLAMLMLJARTPOTGAMA)不同。AutoMM 旨在对图像、文本、表格和文档等多种模态的基础模型进行微调,无论是单独使用还是组合使用。它为分类、回归、目标检测、命名实体识别、语义匹配和图像分割等任务提供了广泛的功能。相比之下,其他 AutoML 系统对图像或文本的支持通常有限,通常使用少数预训练模型(如 EfficientNet)或手工规则(如 词袋模型)作为特征提取器。它们通常依赖于传统模型或简单的神经网络。AutoMM 提供了一种独特的全面且通用的 AutoML 方法,是唯一支持灵活多模态和广泛任务的 AutoML 系统。下面提供了详细说明对各种数据模态、任务和模型类型支持的比较表。

数据

任务

模型

图像

文本

表格数据

文档

任意组合

分类

回归

目标检测

语义匹配

命名实体识别

图像分割

传统模型

深度学习模型

基础模型

LightAutoML

H2OAutoML

FLAML

MLJAR

AutoSklearn

GAMA

TPOT

AutoMM

特别感谢

在本亮点部分结束之际,我们要感谢 Pieter Gijsbers、Sébastien Poirier、Erin LeDell、Joaquin Vanschoren 以及其他 AutoML Benchmark 作者,他们为提供一个共享且广泛的基准测试平台,以监测 AutoML 领域的进展发挥了关键作用。他们的支持对 AutoGluon 项目的持续发展至关重要。

我们还要感谢 Frank Hutter,他仍然是 AutoML 领域的领导者,感谢他在 2022 年和 2023 年组织了 AutoML 会议,将社区聚集在一起分享想法并就共同的愿景达成一致。

最后,我们要感谢 Alex Smola 和 Mu Li 在亚马逊倡导开源软件,使这个项目成为可能。

额外特别感谢

  • 特别感谢 @LennartPurucker 领导动态堆叠 (dynamic stacking) 的开发

  • 特别感谢 @geoalgo 合作编写 TabRepo 以支持 Zeroshot-HPO

  • 特别感谢 @ddelange 帮助添加 Python 3.11 支持

  • 特别感谢 @mglowacki100 提供了大量反馈和建议

  • 特别感谢 @Harry-zzh 贡献了新的语义分割问题类型

通用

亮点

其他增强

依赖更新

表格数据

亮点

AutoGluon 1.0 提供了预测质量的重大增强,在表格数据建模领域树立了新的标杆。详情请参阅上方的亮点部分!

新功能

性能提升

其他增强功能

错误修复/代码和文档改进

AutoMM

AutoGluon 多模态 (AutoMM) 旨在通过仅三行代码即可简化基础模型用于下游应用的微调过程。它与流行的模型动物园无缝集成,例如 HuggingFace TransformersTIMMMMDetection,支持多种数据模态,包括图像、文本、表格和文档数据,无论是单独使用还是组合使用。

新特性

性能提升

  • 改进了默认图像骨干网络,在图像基准测试中取得了 100% 的胜率。 @taoyang1122 (#3738)

  • 将 MLP 替换为 FT-Transformer 作为默认表格骨干网络,在文本+表格基准测试中取得了 67% 的胜率。 @taoyang1122 (#3732)

  • 同时使用改进的默认图像骨干网络和 FT-Transformer,在文本+表格+图像基准测试中取得了 62% 的胜率。 @taoyang1122 (#3732, #3738)

稳定性增强

可用性增强

可伸缩性改进

  • 新的 Learner 类设计的引入,使得 AutoMM 更容易支持新的任务和数据模态,增强了整体可伸缩性。 @zhiqiangdon (#3650, #3685, #3735)

其他增强功能

代码改进

错误修复/文档改进

时间序列 (TimeSeries)

亮点

AutoGluon 1.0 为 TimeSeries 模块带来了众多可用性和性能改进。其中包括对缺失数据和不规则时间序列的自动处理、新的预测指标(包括自定义指标支持)、高级时间序列交叉验证选项以及新的预测模型。AutoGluon 在预测准确性方面取得了最先进的结果,与其他流行的预测框架相比,胜率超过 70%

新特性

  • 支持自定义预测指标 @shchur (#3760, #3602)

  • 新的预测指标 WAPERMSSESQL + 改进的指标文档 @melopeo @shchur (#3747, #3632, #3510, #3490)

  • 提高了鲁棒性:TimeSeriesPredictor 现在可以处理包含所有 pandas 频率、不规则时间戳或由 NaN 表示的缺失值的数据 @shchur (#3563, #3454)

  • 新模型:基于共形预测 (conformal prediction) 的间歇需求预测模型(ADIDA, CrostonClassic, CrostonOptimized, CrostonSBA, IMAPA);来自 GluonTS 的 WaveNetNPTS;新的基线模型(Average, SeasonalAverage, Zero@canerturkmen @shchur (#3706, #3742, #3606, #3459)

  • 高级交叉验证选项:通过 refit_every_n_windows 参数避免为每个验证窗口重新训练模型,或者通过 TimeSeriesPredictor.fitval_step_size 参数调整验证窗口之间的步长 @shchur (#3704, #3537)

增强功能

  • 为深度学习预测模型启用 Ray Tune @canerturkmen (#3705)

  • 支持将多个评估指标传递给 TimeSeriesPredictor.evaluate @shchur (#3646)

  • 静态特征现在可以直接传递给 TimeSeriesDataFrame.from_pathTimeSeriesDataFrame.from_data_frame 构造函数 @shchur (#3635)

性能改进

  • 由于新的预设和更新的模型训练时间分配逻辑,在低时间限制下实现更准确的预测 @shchur (#3749, #3657, #3741)

  • 加快 DirectTabularRecursiveTabular 模型的训练和预测速度 + 降低内存使用 (#3740, #3620, #3559)

  • 为 GluonTS 模型启用早停并提高推理速度 @shchur (#3575)

  • 通过将导入语句移到模型类内部来减少 autogluon.timeseries 的导入时间 (#3514)

错误修复/代码和文档改进

探索性数据分析 (EDA)

EDA 模块将在稍后发布,因为它需要额外的开发工作才能为 1.0 做好准备。当 EDA 准备好发布时,我们将发布公告。目前,请继续使用 "autogluon.eda==0.8.2"

弃用

通用

  • autogluon.core.spaces 已被弃用。请改用 autogluon.common.spaces @Innixma (#3701)

表格 (Tabular)

如果使用已弃用的方法,Tabular 将记录警告。计划在 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 参数已弃用,替换为 display,默认为 False

      • predictor.evaluate()predictor.evaluate_predictions() 也一样

AutoMM

  • 弃用了 FewShotSVMPredictor,推荐使用新的 few_shot_classification 问题类型 @zhiqiangdon (#3699)

  • 弃用了 AutoMMPredictor,推荐使用 MultiModalPredictor @zhiqiangdon (#3650)

  • autogluon.multimodal.MultiModalPredictor

时间序列 (TimeSeries)

  • autogluon.timeseries.TimeSeriesPredictor

    • 弃用参数 TimeSeriesPredictor(ignore_time_index: bool)。现在,如果数据包含不规则时间戳,可以通过 data = data.convert_frequency(freq) 将其转换为规则频率,或者在创建预测器时提供频率,例如 TimeSeriesPredictor(freq=freq)

    • predictor.evaluate() 现在返回一个字典(之前返回一个浮点数)

    • predictor.score() -> predictor.evaluate()

    • predictor.get_model_names() -> predictor.model_names()

    • predictor.get_model_best() -> predictor.model_best

    • 指标 "mean_wQuantileLoss" 已重命名为 "WQL"

    • predictor.leaderboard()silent 参数已弃用,替换为 display,默认为 False

    • predictor.fit() 中将 hyperparameters 设置为字符串时,现在支持的值为 "default""light""very_light"

  • autogluon.timeseries.TimeSeriesDataFrame

    • df.to_regular_index() -> df.convert_frequency()

    • 弃用方法 df.get_reindexed_view()。请参阅上面 TimeSeriesPredictor 下关于 ignore_time_index 的弃用说明,了解如何处理不规则时间戳。

  • 模型

    • 所有基于 MXNet 的模型(DeepARMXNetMQCNNMXNetMQRNNMXNetSimpleFeedForwardMXNetTemporalFusionTransformerMXNetTransformerMXNet)已被移除。

    • 来自 Statmodels 的统计模型(ARIMAThetaETS)已被来自 StatsForecast 的对应模型取代 (#3513)。请注意,这些模型的超参数名称现在不同。

    • DirectTabular 现在使用 mlforecast 后端实现(与 RecursiveTabular 相同),模型的大多数超参数名称已更改。

  • 已弃用 autogluon.timeseries.TimeSeriesEvaluator。请改用 autogluon.timeseries.metrics 中提供的指标。

  • 已弃用 autogluon.timeseries.splitter.MultiWindowSplitterautogluon.timeseries.splitter.LastWindowSplitter。请改用 TimeSeriesPredictor.fitnum_val_windowsval_step_size 参数(或者使用 autogluon.timeseries.splitter.ExpandingWindowSplitter)。

论文

AutoGluon-TimeSeries:面向概率时间序列预测的 AutoML

我们在 AutoML Conference 2023 上发表了一篇关于 AutoGluon-TimeSeries 的论文(论文链接YouTube 视频)。在论文中,我们对 AutoGluon 和流行的开源预测框架(包括 DeepAR、TFT、AutoARIMA、AutoETS、AutoPyTorch)进行了基准测试。AutoGluon 在点预测和概率预测方面都取得了 SOTA 结果,甚至相对于最优模型组合(事后来看)取得了 65% 的胜率

TabRepo:大规模表格模型评估库及其 AutoML 应用

我们在 arXiv 上发表了一篇关于表格零样本 HPO 集成仿真的论文(论文链接GitHub)。这篇论文是实现 AutoGluon 1.0 中性能改进的关键,我们计划继续开发代码库以支持未来的增强功能。

XTab:表格 Transformer 的跨表预训练

我们在 ICML 2023 上发表了一篇关于表格 Transformer 预训练的论文(论文链接GitHub)。在论文中,我们展示了表格深度学习模型的最先进性能,包括能够匹敌 XGBoost 和 LightGBM 模型的性能。虽然预训练的 Transformer 尚未集成到 AutoGluon 中,但我们计划在未来的版本中集成。

在特征空间中学习多模态数据增强

我们关于学习多模态数据增强的论文已被 ICLR 2023 接受(论文链接GitHub)。这篇论文引入了一个即插即用模块,用于在特征空间中学习多模态数据增强,对模态的身份或模态之间的关系没有约束。我们展示了它可以 (1) 提高多模态深度学习架构的性能,(2) 应用于以前未曾考虑过的模态组合,以及 (3) 在包含图像、文本和表格数据的广泛应用中实现最先进的结果。这项工作尚未集成到 AutoGluon 中,但我们计划在未来的版本中集成。

基于可控扩散模型的目标检测数据增强

我们关于生成式目标检测数据增强的论文已被 WACV 2024 接受(论文和 GitHub 链接即将发布)。这篇论文提出了一种基于可控扩散模型和 CLIP 的数据增强流程,通过视觉先验生成来指导生成,并通过类别校准的 CLIP 分数进行后过滤以控制其质量。我们证明了在使用我们的增强流程和不同的检测器时,性能在各种任务和设置中得到提升。虽然扩散模型目前尚未集成到 AutoGluon 中,但我们计划在未来的版本中集成这些数据增强技术。

将图像基础模型应用于视频理解

我们在 ICLR 2023 上发表了一篇关于如何有效地将图像基础模型应用于视频理解的论文(论文链接GitHub)。这篇论文引入了空间适应、时间适应和联合适应,逐步赋予冻结的图像模型时空推理能力。所提出的方法实现了与传统完全微调相当甚至更好的性能,同时大大节省了大型基础模型的训练成本。