版本 0.4.0

我们很高兴地宣布 AutoGluon 0.4 版本发布。0.4 版本对表格数据和文本模块进行了重大增强,同时还包含了许多提升用户体验的改进和修复。

从 v0.3.1 升级到此版本是非破坏性的。请务必记住,只能使用训练模型的 AutoGluon 版本来加载之前训练过的模型。不支持加载在不同 AutoGluon 版本中训练的模型。

此版本包含来自 14 位贡献者的 151 次提交

查看完整的提交变更日志:https://github.com/autogluon/autogluon/compare/v0.3.1…v0.4.0

特别感谢 @zhiqiangdon@willsmithorg@DolanTheMFWizard@truebluejason@killerSwitch@Xilorole,他们是此版本 AutoGluon 的首次贡献者!

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

此版本支持 Python 3.7 到 3.9 版本。

变更

通用

  • AutoGluon 现在支持 Windows 操作系统! Windows 上支持 CPU 和 GPU。

  • AutoGluon 现在支持 Python 3.9。不再支持 Python 3.6。

  • AutoGluon 已将所有深度学习模型从 MXNet 迁移到 PyTorch,从而带来了大幅度的速度提升。

  • 新教程展示了使用 AWS SageMaker 和 Lambda 进行云端训练和部署。

文本

AutoGluon-Text 已使用 PyTorch Lightning 进行重构。它现在支持 huggingface/transformers 中的骨干网络。新版本具有更好的性能、更快的训练时间和更快的推理速度。此外,AutoGluon-Text 现在支持解决多语言问题,并已实现一个新的 AutoMMPredictor 用于自动构建多模态深度学习模型。

  • 更好的性能

  • 更快的速度

    • 新版本在训练方面提速约 ~2.88 倍,在推理方面提速约 ~1.40 倍。使用 g4dn.12x 实例,该模型在使用 4 个 GPU 时可以额外提速 2.26 倍。

  • 多语言支持

    • AutoGluon-Text 现在支持通过跨语言迁移解决多语言问题(教程)。通过设置 presets="multilingual" 来触发此功能。您现在可以在英语数据集上训练模型,然后直接将模型应用于其他语言的数据集,如德语、日语、意大利语等。

  • 用于多模态问题的 AutoMMPredictor

    • 支持实验性的 AutoMMPredictor,它支持 timm 中的融合图像骨干、huggingface/transformers 中的文本骨干以及 CLIP 等多模态骨干(教程)。它可能比集成 ImagePredictor + TextPredictor 的效果更好。

  • 其他功能

    • 支持从现有检查点进行持续训练。加载之前训练好的模型后,您可以再次调用 .fit()

感谢 @zhiqiangdon@sxjscience 贡献了 AutoGluon-Text 的重构! (#1537, #1547, #1557, #1565, #1571, #1574, #1578, #1579, #1581, #1585, #1586)

表格数据

AutoGluon-Tabular 在 0.4 版本中通过大量优化得到了显著增强。总的来说,这些改进带来了

  • 在 Good、High 和 Best 质量预设下,训练速度提升约 ~2 倍

  • 推理速度提升约 ~1.3 倍

  • 相对于 AutoGluon 0.3.1,胜率达到 63%(结果来自 AutoMLBenchmark)。

    • 在数据行数 >= 100,000 的数据集上,相对于 AutoGluon 0.3.1,胜率高达 93% (!!!)。

具体更新

  • 添加了 infer_limitinfer_limit_batch_size 作为新的训练时间约束(教程)。这允许用户指定最终模型期望的端到端推理延迟,AutoGluon 将自动训练模型以满足该约束。这对于需要满足端到端延迟约束(例如 50 毫秒)的在线推理场景非常有用。@Innixma (#1541, #1584)

  • 在 TabularPredictor 中实现了自动化的半监督和转导学习。通过 TabularPredictor.fit_pseudolabel(...) 试试吧!@DolanTheMFWizard (#1323, #1382)

  • 在 TabularPredictor 中实现了自动化的特征修剪(即特征选择)。通过 TabularPredictor.fit(..., feature_prune_kwargs={}) 试试吧!@truebluejason (#1274, #1305)

  • 实现了自动化的模型校准,以改进 AutoGluon 在分类问题中的预测概率。此功能默认启用,可通过 calibrate 训练参数进行切换。@DolanTheMFWizard (#1336, #1374, #1502)

  • 通过 Ray 实现了并行打包训练。这使得在启用打包时,相比于 v0.3.1 在相同硬件上,训练速度提升了约 2 倍,原因是对于无法有效利用所有核心的模型,资源使用效率更高了。@yinweisu (#1329, #1415, #1417, #1423)

  • 添加了自适应早停逻辑,这极大地提高了在给定时间预算下模型的质量。@Innixma (#1380)

  • 在分位数回归中添加了自动模型校准。@taesup-aws (#1388)

  • 增强了日期时间特征处理。@willsmithorg (#1446)

  • 添加了对特征重要性中自定义置信水平的支持。@jwmueller (#1328)

  • 改进了神经网络 HPO 搜索空间。@jwmueller (#1346)

  • 优化了独热编码预处理。@Innixma (#1376)

  • 重构了 refit_full 逻辑,以极大简化用户模型贡献,并通过高级预设改进多模态支持。@Innixma (#1567)

  • 添加了实验性的 TabularPredictor 配置助手。@gradientsky (#1491)

  • 新教程

表格模型

新增:TabularNeuralNetTorchModel(别名:‘NN_TORCH’)

作为从 MXNet 迁移到 Torch 的一部分,我们创建了一个基于 Torch 的模型,作为之前 MXNet 表格神经网络模型的对应物。此模型有几个主要优点,例如

  • 训练速度快 1.9 倍

  • 推理速度快 4.7 倍

  • 相对于 MXNet 表格神经网络,胜率达到 51%

在默认的超参数配置中,此模型已取代 MXNet 表格神经网络模型,并默认启用。

感谢 @jwmueller@Innixma 为 AutoGluon 贡献了 TabularNeuralNetTorchModel! (#1489)

新增:VowpalWabbitModel(别名:‘VW’)

VowpalWabbit 已作为 AutoGluon 中的新模型添加。VowpalWabbit 默认不安装,必须单独安装。VowpalWabbit 在 hyperparameters='multimodal' 预设中使用,对于包含文本特征的数据集,该模型是一个很好的选择。

要安装 VowpalWabbit,请通过 pip install autogluon.tabular[all, vowpalwabbit]pip install "vowpalwabbit>=8.10,<8.11" 指定。

感谢 @killerSwitch 为 AutoGluon 贡献了 VowpalWabbitModel! (#1422)

XGBoostModel(别名:‘XGB’)

  • 优化了模型序列化方法,使推理速度提升 5.5 倍,磁盘使用量减半。@Innixma (#1509)

  • 自适应早停逻辑使胜率相对于之前的实现提高了 54.7%。@Innixma (#1380)

  • 使用 F1 等计算成本高的指标训练速度优化了约 10 倍。@Innixma (#1344)

  • 优化了 num_cpus 的默认设置,使其等于物理核心数而非虚拟核心数。@Innixma (#1467)

CatBoostModel(别名:‘CAT’)

  • CatBoost 现在整合了回调函数,使其更稳定,对内存错误更具弹性,同时还改进了自适应早停逻辑,使胜率相对于之前的实现提高了 63.2%。@Innixma (#1352, #1380)

LightGBMModel(别名:‘GBM’)

  • 使用 F1 等计算成本高的指标训练速度优化了约 10 倍。@Innixma (#1344)

  • 自适应早停逻辑使胜率相对于之前的实现提高了 51.1%。@Innixma (#1380)

  • 优化了 num_cpus 的默认设置,使其等于物理核心数而非虚拟核心数。@Innixma (#1467)

FastAIModel(别名:‘FASTAI’)

  • 添加了自适应批量大小选择和 epoch 选择。@gradientsky (#1409)

  • 在 FastAI 中启用了 HPO 支持(以前 FastAI 不支持 HPO)。@Innixma (#1408)

  • 使 FastAI 训练具有确定性(现在它始终保持种子固定)。@Innixma (#1419)

  • 修复了 FastAI 中 GPU 指定,使其尊重 num_gpus 参数。@Innixma (#1421)

  • 在训练和推理过程中强制使用正确的线程数,以避免全局线程更新引起的问题。@yinweisu (#1535)

LinearModel(别名:‘LR’)

线性模型通过一系列优化,训练速度提升了 20 倍,推理速度提升了 20 倍。要获得加速的训练速度,请通过 pip install "scikit-learn-intelex>=2021.5,<2021.6" 安装 scikit-learn-intelex

请注意,LinearModel 目前在 AutoGluon 中默认未启用,必须通过 'LR' 键在 hyperparameters 中指定。未来的版本计划通过进一步测试将 LinearModel 作为默认模型。

感谢 scikit-learn-intelex 团队和 @Innixma 对 LinearModel 的优化! (#1378)

视觉

  • 重构了后端逻辑,使其更稳健。@yinweisu (#1427)

  • 添加了通过 CPU 进行推理的支持。以前,没有 GPU 进行推理会出错。@yinweisu (#1533)

  • 重构了 HPO 逻辑。@Innixma (#1511)

其他