版本 0.4.0

我们很高兴宣布AutoGluon 0.4版本的发布。0.4版本包含了对Tabular和Text模块的重大增强,以及许多生活质量的改进和修复。

此版本从v0.3.1升级时是非破坏性的。一如既往,仅使用最初训练它们的相同版本的AutoGluon加载先前训练的模型。不支持加载在不同版本的AutoGluon中训练的模型。

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

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

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

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

  • @Innixma, @yinweisu, @gradientsky, @zhiqiangdon, @jwmueller, @willsmithorg, @sxjscience, @DolanTheMFWizard, @truebluejason, @taesup-aws, @Xilorole, @mseeger, @killerSwitch, @rschmucker

此版本支持 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)

Tabular

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

  • ~2倍 在良好、高和最佳质量预设下的训练速度提升。

  • ~1.3倍 推理加速。

  • 63% 胜率 vs AutoGluon 0.3.1 (结果来自 AutoMLBenchmark)

    • 93% 的胜率对比 AutoGluon 0.3.1 在数据行数大于等于100,000的数据集上 (!!!)

具体更新:

  • 添加了infer_limitinfer_limit_batch_size作为新的拟合时间约束(教程)。这允许用户指定最终模型的期望端到端推理延迟,AutoGluon将自动训练模型以满足该约束。这对于需要满足端到端延迟约束(例如50ms)的在线推理场景非常有用。@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倍 更快的推理速度

  • 51% 胜率 vs MXNet 表格神经网络

该模型已取代默认超参数配置中的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’)

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

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

  • 使FastAI训练具有确定性(现在始终使用相同的种子)。@Innixma (#1419)

  • 在FastAI中修复了GPU规格以尊重num_gpus参数。@Innixma (#1421)

  • 在拟合和推理期间强制正确的线程数,以避免全局线程更新的问题。@yinweisu (#1535)

线性模型(别名:'LR')

线性模型在训练和推理方面已经加速了20倍,这得益于各种优化。 要获得加速的训练速度,请通过pip install "scikit-learn-intelex>=2021.5,<2021.6"安装scikit-learn-intelex

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

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

愿景

  • 重构后端逻辑以使其更加健壮。@yinweisu (#1427)

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

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

杂项

  • AutoGluon 不再依赖 ConfigSpace、cython、dill、paramiko、autograd、openml、d8 和 graphviz。 这大大简化了 AutoGluon 的安装,特别是在 Windows 上。

  • 完全重构了HPO逻辑,以打破对ConfigSpace的依赖,并提高稳定性和开发便利性。@Innixma 在此版本中,HPO已简化为使用随机搜索,同时我们正在努力在未来的版本中重新引入更高级的HPO方法,如贝叶斯优化。 此外,删除了40,000行过时代码,以简化未来的开发。 @Innixma (#1397, #1411, #1414, #1431, #1443, #1511)

  • 添加了autogluon.common以简化未来子模块的依赖管理。@Innixma (#1386)

  • 移除了autogluon.mxnetautogluon.extra子模块作为代码清理的一部分。@Innixma (#1397, #1411, #1414)

  • 重构日志记录以避免干扰其他包。@yinweisu (#1403)

  • 修复了Kaggle上的日志输出问题,之前在使用Kaggle内核拟合AutoGluon时不会显示任何日志。@Innixma (#1468)

  • 为Linux、MacOS和Windows添加了平台测试。@yinweisu (#1464, #1506, #1513)

  • 添加了ROADMAP.md以向社区突出显示过去、现在和未来的功能优先级和进展。@Innixma (#1420)

  • 各种文档和持续集成改进

    • @jwmueller (#1379, #1408, #1429)

    • @gradientsky (#1383, #1387, #1471, #1500)

    • @yinweisu (#1441, #1482, #1566, #1580)

    • @willsmithorg (#1476, #1483)

    • @Xilorole (#1526)

    • @Innixma (#1452, #1453, #1528, #1577, #1584, #1588, #1593)

  • 各种后端增强/重构/清理

    • @DolanTheMFWizard (#1319)

    • @gradientsky (#1320, #1366, #1385, #1448, #1488, #1490, #1570, #1576)

    • @mseeger (#1349)

    • @yinweisu (#1497, #1503, #1512, #1563, #1573)

    • @willsmithorg (#1525, #1543)

    • @Innixma (#1311, #1313, #1327, #1331, #1338, #1345, #1369, #1377, #1380, #1408, #1410, #1412, #1419, #1425, #1428, #1462, #1465, #1562, #1569, #1591, #1593)

  • 各种错误修复

    • @jwmueller (#1314, #1356)

    • @yinweisu (#1472, #1499, #1504, #1508, #1516)

    • @gradientsky (#1514)

    • @Innixma (#1304, #1325, #1326, #1337, #1365, #1395, #1405, #1587, #1599)