版本 1.2.0

我们很高兴宣布 AutoGluon 1.2.0 版本发布。

AutoGluon 1.2 在表格数据(Tabular)和时间序列(TimeSeries)模块方面进行了重大改进,每个模块相对于 AutoGluon 1.1 的胜率都达到了 70%。此版本还增加了对 Python 3.12 的支持,并取消了对 Python 3.8 的支持。

此版本包含 来自 19 位贡献者的 186 次提交!查看完整的提交变更日志: https://github.com/autogluon/autogluon/compare/v1.1.1…v1.2.0

加入社区:
获取最新更新: Twitter

不支持加载使用旧版本 AutoGluon 训练的模型。请使用 AutoGluon 1.2 重新训练模型。

对于表格数据,我们将新的 TabPFNMix 表格基础模型 和并行训练策略纳入新的 "experimental_quality" 预设中,以确保希望尝试这些前沿新功能的用户能够顺利过渡。我们将利用此版本收集反馈,然后再将这些功能整合到其他预设中。我们还引入了一种新的堆叠层模型剪枝技术,可在小数据集上实现 3 倍的推理加速,且性能零损失,并在整体上显著改进了事后校准,特别是在小数据集上。

对于时间序列,我们引入了 Chronos-Bolt,这是我们集成到 AutoGluon 中的最新基础模型,与 Chronos 相比,在准确性和推理速度方面都有了显著提升,并具有微调能力。我们还增加了协变量回归器支持!

我们也很高兴宣布 AutoGluon-Assistant (AG-A) 的发布,这是我们在自动化数据科学领域的首次尝试。

更多详情请参见下方亮点!

亮点

AutoGluon 成为 2024 年竞赛 ML 的黄金标准

在深入探讨 1.2 版本的新功能之前,我们首先想强调 AutoGluon 在 Kaggle 等竞赛 ML 网站上于 2024 年获得的 广泛采用。在 2024 年全年,AutoGluon 在 18 个表格数据 Kaggle 竞赛中的 15 个中获得了前 3 名,包括 7 次第一名,并且从未低于私有排行榜前 1%,平均每个竞赛有超过 1000 支人类团队参赛。在奖金 75,000 美元的 2024 Kaggle AutoML 大奖赛 中,第一名、第二名和第三名团队都使用了 AutoGluon,其中第二名团队由两名 AutoGluon 开发者领导:Lennart PuruckerNick Erickson!相比之下,2023 年 AutoGluon 仅获得 1 次第一名和 1 次第二名解决方案。我们认为这一增长主要归功于 AutoGluon 1.0 及更高版本中的改进。

我们想强调的是,这些结果是通过人类专家与 AutoGluon 和其他工具互动实现的,通常包括手动特征工程和超参数调优,以充分发挥 AutoGluon 的潜力。要查看所有 AutoGluon 解决方案在 Kaggle 上的实时排名,请参阅我们的 AWESOME.md ML 竞赛部分,其中提供了所有解决方案文章的链接。

AutoGluon-Assistant:使用 AutoGluon 和 LLMs 自动化数据科学

我们很高兴分享新的 AutoGluon-Assistant 模块 (AG-A) 的发布,该模块由 AWS Bedrock 或 OpenAI 的 LLMs 提供支持。AutoGluon-Assistant 赋能用户仅使用自然语言描述即可解决表格机器学习问题,通过我们简单的用户界面实现零代码。完全自主的 AG-A 在 Kaggle 竞赛中超越了 74% 的人类 ML 从业者,并在奖金 75,000 美元的 2024 Kaggle AutoML 大奖赛 中以 Team AGA 🤖 的身份获得了实时前 10 名!

TabularPredictor 预设=”experimental_quality”

TabularPredictor 有一个新的 "experimental_quality" 预设,它提供了比 "best_quality" 更好的预测质量。在 AutoMLBenchmark 上,我们在 64 核 CPU 机器上运行 4 小时后,观察到相对于 best_quality 有 70% 的胜率。此预设是前沿功能和模型的测试场,我们希望在未来的版本中将其整合到 best_quality 中。我们建议使用至少 16 核 CPU、64 GB 内存和 4 小时以上 time_limit 的机器,以充分发挥 experimental_quality 的优势。如果您在使用 experimental_quality 预设时遇到任何问题,请通过 GitHub Issue 告知我们。

TabPFNMix:表格数据的基础模型

TabPFNMix 是 AutoGluon 团队创建的第一个表格数据基础模型,完全基于合成数据进行预训练。该模型基于 TabPFNTabForestPFN 的先前工作。据我们所知,TabPFNMix 在样本数介于 1000 到 10000 的数据集上实现了新的开源模型单体性能最佳水平,并支持回归任务!在 TabRepo 中,包含少于或等于 10000 个训练样本的 109 个分类数据集上,微调后的 TabPFNMix 优于所有先前的模型,相对于最强的树模型 CatBoost 具有 64% 的胜率,相对于微调后的 TabForestPFN 具有 61% 的胜率。

该模型通过 TABPFNMIX 超参数键可用,并在新的 "experimental_quality" 预设中使用。对于小于 50,000 个训练样本的数据集,我们建议使用此模型,最好具有较大的时间限制和 64 GB 以上的内存。这项工作仍处于早期阶段,我们感谢社区提供的任何反馈,以帮助我们在未来版本中迭代和改进。您可以通过访问我们在 HuggingFace 上的模型页面了解更多信息(tabpfn-mix-1.0-classifier, tabpfn-mix-1.0-regressor)。如果您想看到更多内容,请在 HuggingFace 上给我们点赞!未来计划发表一篇论文提供更多模型详情。

训练策略=”parallel”

AutoGluon 的 TabularPredictor 现在支持新的 fit 参数 fit_strategy 和新的 "parallel" 选项,在新 "experimental_quality" 预设中默认启用。对于具有 16 个或更多 CPU 核的机器,并行训练策略比先前的 "sequential" 策略提供了显著的速度提升。我们估计在 64 核 CPU 下,大多数数据集将体验到 2-4 倍的速度提升,并且随着 CPU 核数的增加,速度提升会更大。

Chronos-Bolt⚡:速度快 250 倍、更准确的 Chronos 模型

Chronos-Bolt 是我们集成到 AutoGluon 中的最新预测基础模型。它基于 T5 编码器-解码器架构,并在近千亿时间序列观测值上进行了训练。它将历史时间序列上下文分块为多个观测值的片段,然后输入到编码器。解码器随后使用这些表示来直接生成跨多个未来步长的分位数预测——这种方法称为直接多步预测。同等大小的 Chronos-Bolt 模型比原始 Chronos 模型快 250 倍,内存效率高 20 倍。

下图比较了 Chronos-Bolt 与原始 Chronos 模型在预测 1024 个时间序列时的推理时间,其中上下文长度为 512 个观测值,预测范围为 64 步。

Chronos-Bolt 模型不仅显著更快,而且比原始 Chronos 模型更准确。下图报告了 Chronos-Bolt 在 27 个数据集上聚合的概率和点预测性能,分别以 加权分位数损失 (WQL)平均绝对缩放误差 (MASE) 为衡量标准(有关此基准的详细信息,请参阅 Chronos 论文)。值得注意的是,尽管在训练期间没有接触过这些数据集,零样本 Chronos-Bolt 模型仍然优于已在这些数据集上训练过的常用统计模型和深度学习模型(标有 *)。此外,它们也比其他 FMs(标有 +)表现更好,这表明这些模型在我们的基准测试中的某些数据集上进行了预训练,并非完全零样本。特别值得一提的是,Chronos-Bolt (Base) 在预测准确性方面也超越了原始 Chronos (Large) 模型,同时速度快 600 多倍。

Chronos-Bolt 模型现在通过 AutoGluon 提供四种尺寸——Tiny (9M)、Mini (21M)、Small (48M) 和 Base (205M)——并且也可以在 CPU 上使用。随着 Chronos-Bolt 模型和其他增强功能的加入,AutoGluon v1.2 相对于上一版本取得了 70% 以上的胜率

除了新的 Chronos-Bolt 模型,我们还增加了对 Chronos 和 Chronos-Bolt 模型轻松微调的支持。请查看更新的 Chronos 教程,了解如何使用和微调 Chronos-Bolt 模型。

时间序列协变量回归器

我们已为所有预测模型添加了协变量回归器支持。协变量回归器是表格回归模型,可以与单变量预测模型结合使用以整合外生信息。这对于像 Chronos-Bolt 这样的基础模型特别有用,因为它们仅依赖目标时间序列的历史数据,无法直接使用外生信息(例如节假日或促销)。为了在协变量可用时改进单变量模型的预测,首先对已知协变量和静态特征拟合一个协变量回归器,以预测每个时间步的目标列。然后从目标列中减去协变量回归器的预测结果,再由单变量模型预测残差。Chronos 教程 展示了如何将协变量回归器与 Chronos-Bolt 结合使用。

通用

改进

  • 更新 full_install.sh 以并行安装 AutoGluon 并使用 uv,从而大大加快源代码安装时间。 @Innixma (#4582, #4587, #4592)

依赖项

文档

  • 更新安装说明以使用正确的 torch 和 ray 版本。 @Innixma (#4581)

  • 为 CPU 安装指南添加 +cpu 标签。 @tonyhoo (#4554)

  • 添加 SECURITY.md 用于漏洞报告。 @tonyhoo (#4298)

修复和改进

  • 将 DropDuplicatesFeatureGenerator 的 fit 时间加快 2 倍以上。 @shchur (#4543)

  • 添加 compute_metric 作为 compute_weighted_metric 的替代,提高了在项目中的兼容性。 @Innixma (#4631)

  • 增强了 generate_train_test_split@Innixma (#4478)

表格数据

新功能

  • 添加 TabPFNMix 模型。使用 presets="experimental" 尝试。 @xiyuanzh @Innixma (#4671, #4694)

  • 支持并行模型 fit。使用 fit_strategy="parallel" 尝试。 @LennartPurucker @Innixma (#4606)

  • 支持 Predictor 回调。 @Innixma (#4327, #4473)

  • 学习曲线生成功能。 @adibiasio @Innixma (#4411, #4635)

  • 默认设置 calibrate_decision_threshold="auto",并改进决策阈值校准。这显著改善了二元分类中 eval_metric 为 f1balanced_accuracy 时的结果。 @Innixma (#4632)

  • 添加 roc_auc_ovoroc_auc_ovr 指标。 @Innixma (#4248)

  • 添加自定义内存(软)限制支持。 @LennartPurucker (#4333)

  • 向模型添加 ag.compile 超参数,以在 fit 时而非 predictor.compile 时启用编译。 @Innixma (#4354)

  • 向 NN_TORCH 添加 AdaptiveES 支持,并将 max_epochs 从 500 增加到 1000,默认启用。 @Innixma (#4436)

  • 通过 delay_bag_sets fit 参数添加控制重复交叉验证行为的支持。默认设置为 False(之前为 True)。 @LennartPurucker (#4552)

  • positive_class 设为 TabularPredictor 的 init 参数。 @Innixma (#4445)

  • 向 NN_TORCH 模型添加 AdamW 支持。 @Innixma (#4610)

文档

修复和改进

时间序列

新功能

修复和改进

多模态

修复和改进

  • 修复模型在 Checkpoint Fusing 阶段失败后恢复时缺少验证指标的问题,作者: @FANGAreNotGnu,PR:https://github.com/autogluon/autogluon/pull/4449

  • 添加 coco_root 以更好地支持 COCO 格式的自定义数据集,作者: @FANGAreNotGnu,PR:https://github.com/autogluon/autogluon/pull/3809

  • 添加 COCO 格式保存支持并更新目标检测 I/O 处理,作者: @FANGAreNotGnu,PR:https://github.com/autogluon/autogluon/pull/3811

  • 在 bandit 检查时跳过 MMDet 配置文件,作者: @FANGAreNotGnu,PR:https://github.com/autogluon/autogluon/pull/4630

  • 修复 Logloss Bug 并优化计算分数逻辑,作者: @FANGAreNotGnu,PR:https://github.com/autogluon/autogluon/pull/4629

  • 修复教程中的索引拼写错误,作者: @FANGAreNotGnu,PR:https://github.com/autogluon/autogluon/pull/4642

  • 修复多分类的 Proba 指标,作者: @FANGAreNotGnu,PR:https://github.com/autogluon/autogluon/pull/4643

  • 支持 torch 2.4,作者: @tonyhoo,PR:https://github.com/autogluon/autogluon/pull/4360

  • 在教程中添加目标检测的安装指南,作者: @FANGAreNotGnu,PR:https://github.com/autogluon/autogluon/pull/4430

  • 为内部 torch.savetorch.load 使用添加 Bandit 警告缓解措施,作者: @tonyhoo,PR:https://github.com/autogluon/autogluon/pull/4502

  • 更新 accelerate 版本范围,作者: @cheungdaven,PR:https://github.com/autogluon/autogluon/pull/4596

  • 限制 nltk 版本以避免详细日志问题,作者: @tonyhoo,PR:https://github.com/autogluon/autogluon/pull/4604

  • 升级 TIMM,作者: @prateekdesai04,PR:https://github.com/autogluon/autogluon/pull/4580

  • v1.2 版本的主要依赖项更新 (_setup_utils.py),作者: @tonyhoo,PR:https://github.com/autogluon/autogluon/pull/4612

  • 可配置的每个 HPO Trial 保留的 Checkpoint 数量,作者: @FANGAreNotGnu,PR:https://github.com/autogluon/autogluon/pull/4615

  • 重构各问题类型的指标,作者: @FANGAreNotGnu,PR:https://github.com/autogluon/autogluon/pull/4616

  • 修复目标检测的 Torch 版本和 Colab 安装问题,作者: @FANGAreNotGnu,PR:https://github.com/autogluon/autogluon/pull/4447

特别致谢

贡献者

完整贡献者列表(按提交次数排序)

@Innixma @shchur @prateekdesai04 @tonyhoo @FangAreNotGnu @suzhoum @abdulfatir @canerturkmen @LennartPurucker @abhishek-iitmadras @adibiasio @rsj123 @nathanaelbosch @cheungdaven @lostella @zkalson @rey-allan @echowve @xiyuanzh

新贡献者

  • @nathanaelbosch 在 此处 贡献了第一个代码:https://github.com/autogluon/autogluon/pull/4366

  • @adibiasio 在 此处 贡献了第一个代码:https://github.com/autogluon/autogluon/pull/4391

  • @abdulfatir 在 此处 贡献了第一个代码:https://github.com/autogluon/autogluon/pull/4608

  • @echowve 在 此处 贡献了第一个代码:https://github.com/autogluon/autogluon/pull/4667

  • @abhishek-iitmadras 在 此处 贡献了第一个代码:https://github.com/autogluon/autogluon/pull/4685

  • @xiyuanzh 在 此处 贡献了第一个代码:https://github.com/autogluon/autogluon/pull/4694