版本 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
不支持加载使用旧版本 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 Purucker 和 Nick 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 团队创建的第一个表格数据基础模型,完全基于合成数据进行预训练。该模型基于 TabPFN 和 TabForestPFN 的先前工作。据我们所知,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 结合使用。
通用¶
改进¶
依赖项¶
取消对 Python 3.8 的支持。 @prateekdesai04 (#4512)
更新 scikit-learn 到
>=1.4.0,<1.5.3
。 @prateekdesai04 (#4420, #4570)更新 pyarrow 到
>=15.0.0
。 @prateekdesai04 (#4520)更新 psutil 到
>=5.7.3,<7.0.0
。 @prateekdesai04 (#4570)更新 Pillow 到
>=10.0.1,<12
。 @prateekdesai04 (#4570)更新 xgboost 到
>=1.6,<2.2
。 @prateekdesai04 (#4570)更新 timm 到
>=0.9.5,<1.0.7
。 @prateekdesai04 (#4580)更新 accelerate 到
>=0.34.0,<1.0
。 @cheungdaven @tonyhoo @shchur (#4596, #4612, #4676)更新 scikit-learn-intelex 到
>=2024.0,<2025.1
。 @Innixma (#4688)
文档¶
修复和改进¶
表格数据¶
新功能¶
添加 TabPFNMix 模型。使用
presets="experimental"
尝试。 @xiyuanzh @Innixma (#4671, #4694)支持并行模型 fit。使用
fit_strategy="parallel"
尝试。 @LennartPurucker @Innixma (#4606)学习曲线生成功能。 @adibiasio @Innixma (#4411, #4635)
默认设置
calibrate_decision_threshold="auto"
,并改进决策阈值校准。这显著改善了二元分类中 eval_metric 为f1
和balanced_accuracy
时的结果。 @Innixma (#4632)添加自定义内存(软)限制支持。 @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)
文档¶
添加了一个 教程,深入探讨了 AutoGluon 的工作原理。 @rey-allan (#4284)
修复和改进¶
(主要)将 EnsembleSelection 的拟合速度提高 2 倍以上。 @nathanaelbosch (#4367)
(主要)通过使用最佳迭代而非最后一次迭代的温度,显著提高温度缩放性能。 @LennartPurucker (#4396)
(主要)修复
roc_auc
指标在多分类中使用macro
而非weighted
的问题。 @LennartPurucker (#4407)(主要)确保
refit_full
遵守用户指定的num_cpus
和num_gpus
。 @Innixma (#4495)(主要)重构 TabularDataset。现在 TabularDataset 初始化时总是返回 pandas DataFrame 对象,以简化各种文档并改进 IDE 调试可视化兼容性。 @Innixma (#4613)
默认设置
num_bag_sets=1
,以避免用户不使用预设且设置num_bag_folds>=2
时使用num_bag_sets>1
。 @Innixma (#4446)修复 NN_TORCH 中 model.score 调用时意外更新 torch seed 的问题。 @adibiasio (#4391)
修复 LightGBM predict_proba 分位数输出 dtype 不正确的问题。 @Innixma (#4272)
添加切换选项
raise_on_no_models_fitted
以控制 AutoGluon 在未拟合模型时是否报错。 @LennartPurucker (#4389)默认设置
raise_on_no_models_fitted=True
。在上一版本中为 False。 @Innixma (#4400)改进了
predictor.predict_proba_multi
在边缘情况下的可靠性。 @Innixma (#4527)修复处理标签列时,如果它是只有唯一值和 NaNs 的 pandas category dtype,可能出现的边缘崩溃问题。 @Innixma (#4583)
启用 aarch64 平台构建。 @abhishek-iitmadras (#4663)
次要修复。 @Innixma @LennartPurucker @shchur @rsj123 (#4224, #4317, #4335, #4352, #4353, #4379, #4384, #4474, #4485, #4675, #4682, #4700)
次要单元测试、文档和清理。 @Innixma @abhishek-iitmadras (#4398, #4399, #4402, #4498, #4546, #4547, #4549, #4687, #4690, #4692)
时间序列¶
新功能¶
修复和改进¶
将
statsforecast
版本提升到 1.7 @canerturkmen @shchur (#4194, #4357)修复 deep learning 模型在 item_ids 具有 StringDtype 时失败的问题 @rsj123 (#4539)
重构 GluonTS 默认参数处理,更新 TiDE 参数 @canerturkmen (#4640)
精简时间序列单元测试和冒烟测试 @canerturkmen (#4650)
次要修复 @abdulfatir @canerturkmen @shchur (#4259, #4299, #4395, #4386, #4409, #4533, #4565, #4633, #4647)
多模态¶
修复和改进¶
修复模型在 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.save
和torch.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
特别致谢¶
Xiyuan Zhang 领导了 TabPFNMix 的开发!
TabPFN 的作者 Noah Hollmann, Samuel Muller, Katharina Eggensperger, 和 Frank Hutter 开辟了表格数据基础模型的力量,以及 TabForestPFN 的作者 Felix den Breejen, Sangmin Bae, Stephen Cha, 和 Se-Young Yun 将这一想法扩展到更通用的表示。我们的 TabPFNMix 工作站在巨人的肩膀上。
Lennart Purucker 领导了 并行模型 fit 功能 的开发,并在 2024 年 Kaggle AutoML 大奖赛中将 AutoGluon 推向极限。
Robert Hatch, Tilii, Optimistix, Mart Preusse, Ravi Ramakrishnan, Samvel Kocharyan, Kirderf, Carl McBride Ellis, Konstantin Dmitriev 以及其他人在 Kaggle 上就 AutoGluon 的深入讨论和推广做出了贡献!
Eddie Bergman 对 表格回调支持 功能进行了富有洞察力的突击代码审查。
贡献者¶
完整贡献者列表(按提交次数排序)
@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