版本 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 用于自动构建多模态深度学习模型。
更好的性能
与AutoGluon 0.3中的TextPredictor相比,AutoGluon 0.4中的TextPredictor在NeurIPS 2021发布的多模态文本-表格基准测试中具有72.22%的胜率。如果我们使用
presets="high_quality",由于DeBERTa-v3骨干网络,胜率提高到了77.8%。此外,我们将结果重新提交到了MachineHack: 产品情感分析、“MachineHack: 预测书籍价格”和“Kaggle: Mercari价格建议”。通过三行代码,AutoGluon 0.4能够在这些比赛中取得领先位置(分别为第1、第2、第2名)。AutoGluon 0.4获得的结果也始终优于AutoGluon 0.3获得的结果。
更快的速度
新版本在训练中实现了~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_limit和infer_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)
新教程
表格模型的GPU训练教程. @gradientsky (#1527)
特征预处理教程. @willsmithorg (#1478)
表格模型¶
新功能: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.mxnet和autogluon.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)