版本 0.6.0

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

一如既往,仅使用与原始训练时相同版本的AutoGluon加载先前训练的模型。 不支持加载在不同版本的AutoGluon中训练的模型。

此版本包含263 次提交,来自 25 位贡献者

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

特别感谢@cheungdaven, @suzhoum, @BingzhaoZhu, @liangfu, @Harry-zzh, @gidler, @yongxinw, @martinschaef, @giswqs, @Jalagarto, @geoalgo, @lujiaying 和 @leloykun,他们是本次AutoGluon发布的首批贡献者!

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

@shchur, @yinweisu, @zhiqiangdon, @Innixma, @FANGAreNotGnu, @canerturkmen, @sxjscience, @gradientsky, @cheungdaven, @bryanyzhu, @suzhoum, @BingzhaoZhu, @yongxinw, @tonyhoo, @liangfu, @Harry-zzh, @Raldir, @gidler, @martinschaef, @giswqs, @Jalagarto, @geoalgo, @lujiaying, @leloykun, @yiqings

此版本支持 Python 3.7 到 3.9 版本。这是最后一个支持 Python 3.7 的版本。

变更

AutoMM

AutoGluon Multimodal(又称AutoMM)支持三个新功能:1) 目标检测,2) 命名实体识别,以及3) 多模态匹配。此外,AutoGluon Multimodal的HPO后端已升级至ray 2.0。它还支持在单个AWS g4.2x-large实例上微调十亿级FLAN-T5-XL模型,并改进了参数高效的微调。从0.6版本开始,我们建议使用autogluon.multimodal而不是autogluon.text或autogluon.vision,并添加了弃用警告。

新功能

  • Object Detection

    • 添加新的问题类型 "object_detection"

    • 客户可以使用预训练的对象检测模型进行推理,并用三行代码训练自己的模型。

    • open-mmlab/mmdetection集成,支持经典的检测架构如Faster RCNN,以及更高效和性能更强的架构如YOLOV3和VFNet。

    • 查看教程示例以获取更多详细信息。

    • 贡献者和提交:@FANGAreNotGnu, @bryanyzhu, @zhiqiangdon, @yongxinw, @sxjscience, @Harry-zzh (#2025, #2061, #2131, #2181, #2196, #2215, #2244, #2265, #2290, #2311, #2312, #2337, #2349, #2353, #2360, #2362, #2365, #2380, #2381, #2391, #2393, #2400, #2419, #2421, #2063, #2104, #2411)

  • 命名实体识别

    • 添加新的问题类型 "ner"

    • 客户可以用三行代码训练模型来提取命名实体。

    • 该实现支持huggingface/transformer中的任何骨干网络,包括最近由Google发布的FLAN-T5系列

    • 查看教程了解更多详情。

    • 贡献者和提交:@cheungdaven (#2183, #2232, #2220, #2282, #2295, #2301, #2337, #2346, #2361, #2372, #2394, #2412)

  • 多模态匹配

    • 添加新的问题类型 "text_similarity", "image_similarity", "image_text_similarity".

    • 用户现在可以使用预训练模型提取语义嵌入,以解决文本-文本、图像-图像和文本-图像匹配问题。

    • 此外,用户可以使用相关性数据进一步微调这些模型。

    • 语义文本嵌入模型也可以与BM25结合,形成混合索引解决方案。

    • 在内部,AutoGluon Multimodal 实现了一种双塔架构,该架构在每个塔的骨干选择上非常灵活。它支持 TIMM 中的图像骨干、huggingface/transformers 中的文本骨干,以及 CLIP 骨干。

    • 查看 教程 了解更多详情。

    • 贡献者和提交:@zhiqiangdon @FANGAreNotGnu @cheungdaven @suzhoum @sxjscience @bryanyzhu (#1975, #1994, #2142, #2179, #2186, #2217, #2235, #2284, #2297, #2313, #2326, #2337, #2347, #2357, #2358, #2362, #2363, #2375, #2378, #2404, #2416, #2407, #2417)

  • 各种小修复。@cheungdaven @FANGAreNotGnu @geoalgo @zhiqiangdon (#2402, #2409, #2026, #2401, #2418)

其他增强功能

  • 修复FT-Transformer的实现并支持Fastformer。@BingzhaoZhu @yiqings (#1958, #2194, #2251, #2344, #2379, #2386)

  • 支持通过改进的参数高效微调在单个AWS g4.2x-large实例上微调十亿规模的FLAN-T5-XL。参见教程。@Raldir @sxjscience (#2032, #2108, #2285, #2336, #2352)

  • 升级多模态HPO以使用ray 2.0,并添加新教程。@yinweisu @suzhoum @bryanyzhu (#2206, #2341)

  • 进一步改进模型蒸馏。添加示例教程。@FANGAreNotGnu @sxjscience (#1983, #2064, #2397)

  • 修改AutoMM的默认预设以解决图像分类问题。@bryanyzhu (#2351)

  • 在autogluon.vision中支持backend=“automm”。@bryanyzhu (#2316)

  • 向autogluon.vision和autogluon.text添加弃用警告,并将使用指向autogluon.multimodal。@bryanyzhu @sxjscience (#2268, #2315)

  • 关于Kaggle: Feedback Prize预测竞赛的示例。我们使用AutoGluon Multimodal创建了一个解决方案,在公开排行榜上获得了152/1557的成绩,在私有排行榜上获得了170/1557的成绩,位列前12%的参与者。该解决方案在竞赛截止日期前几天公开,并获得了超过3000次浏览。@suzhoum @MountPOTATO (#2129, #2168, #2333)

  • 提高本地推理速度。@zhiqiangdon (#2051, #2157, #2161, #2171)

  • 其他改进、安全/错误修复。@zhiqiangdon @sxjscience @FANGAreNotGnu, @yinweisu @Innixma @tonyhoo @martinschaef @giswqs @tonyhoo (#1980, #1987, #1989, #2003, #2080, #2018, #2039, #2058, #2101, #2102, #2125, #2135, #2136, #2140, #2141, #2152, #2164, #2166, #2192, #2219, #2250, #2257, #2280, #2308, #2315, #2317, #2321, #2356, #2388, #2392, #2413, #2414, #2417, #2426, #2028, #2382, #2415, #2193, #2213, #2230)

  • CI改进。@yinweisu (#1965, #1966, #1972, #1991, #2002, #2029, #2137, #2151, #2156, #2163, #2191, #2214, #2369, #2113, #2118)

实验性功能

  • 支持使用DeepSpeed进行110亿规模模型的微调。@Raldir (#2032)

  • 启用11B规模模型的少样本学习。@Raldir (#2197)

  • ONNX 导出示例的 hf_text 模型。@FANGAreNotGnu (#2149)

Tabular

New features

  • 新的实验模型 FT_TRANSFORMER。@bingzhaozhu, @innixma (#2085, #2379, #2389, #2410)

    • 您可以通过在hyperparameters字典中指定FT_TRANSFORMER键或通过presets="experimental_best_quality"来访问它。

    • 建议使用GPU来训练此模型,但也支持CPU训练。

    • 如果给予足够的训练时间,这个模型通常会提高集成的质量。

  • 通过predictor.compile_models()支持新的实验模型编译。@liangfu, @innixma (#2225, #2260, #2300)

    • 目前只有随机森林和额外树有编译支持。

    • 您需要安装额外的依赖项才能使其工作:pip install autogluon.tabular[all,skl2onnx]

    • 编译模型在处理小批量样本(<10000)时显著加快了推理时间(约10倍)。

    • 请注意,当前实现中存在一个已知的错误:在编译后重新拟合模型将会失败并导致崩溃。为了避免这种情况,请确保仅在最后调用.compile_models

  • 添加了predictor.clone(...)方法,以允许将预测器对象完美克隆到新目录中。 这在更改预测器之前保留其状态非常有用 (例如在调用.save_space.distill.compile_models.refit_full之前)。@innixma (#2071)

  • 添加了简化的num_gpusnum_cpus参数到predictor.fit以控制总资源。 @yinweisu, @innixma (#2263)

  • 通过对我们使用ray的各种重构,提高了HPO功能的稳定性和有效性。 @yinweisu, @innixma (#1974, #1990, #2094, #2121, #2133, #2195, #2253, #2263, #2330)

  • 升级的依赖版本:XGBoost 1.7, CatBoost 1.1, Scikit-learn 1.1, Pandas 1.5, Scipy 1.9, Numpy 1.23。 @innixma (#2373)

  • 在加载已拟合的TabularPredictor时添加了Python版本兼容性检查。如果Python版本不兼容,现在会报错。@innixma (#2054)

  • 添加了fit_weighted_ensemble参数到predictor.fit。这允许用户禁用加权集成。 @innixma (#2145)

  • 添加了级联集成基础逻辑。@innixma (#1929)

Other Enhancements

  • 使用 infer_limit 时改进了日志的清晰度。@innixma (#2014)

  • 显著改进了XGBoost的HPO搜索空间。@innixma (#2123)

  • 修复了在调优随机森林、额外树或KNN时HPO崩溃的问题。@innixma (#2070)

  • 优化了roc_auc指标评分速度,提升了7倍。@innixma (#2318, #2331)

  • 修复了AutoMM表格模型如果未最后训练时崩溃的错误。@innixma (#2309)

  • 重构了Scorer类,使其更易于使用,并为所有指标添加了全面的单元测试。@innixma (#2242)

  • 在预处理过程中,文本特殊特征生成速度提高了20% @gidler (#2095)

  • imodels 集成改进 @Jalagarto (#2062)

  • 修复在分位数回归中调用特征重要性时崩溃的问题。@leloykun (#1977)

  • 为缺失值插值添加FAQ部分。@innixma (#2076)

  • 各种小修复和清理 @innixma, @yinweisu, @gradientsky, @gidler (#1997, #2031, #2124, #2144, #2178, #2340, #2342, #2345, #2374, #2339, #2348, #2403, #1981, #1982, #2234, #2233, #2243, #2269, #2288, #2307, #2367, #2019)

Time Series

New features

  • TimeSeriesPredictor 现在支持 静态特征(也称为时间序列元数据、静态协变量)和 ** 时变协变量**(也称为动态特征或相关时间序列)。@shchur @canerturkmen (#1986, #2238, #2276, #2287)

  • AutoGluon-TimeSeries 现在默认使用 PyTorch(用于 DeepARSimpleFeedForward),移除了对 MXNet 的依赖。@canerturkmen (#2074, #2205, #2279)

  • 新模型!AutoGluonTabular 依赖于 XGBoost、LightGBM 和 CatBoost,通过 autogluon.tabular 模块实现。NaiveSeasonalNaive 预测器是简单的方法,提供了强大的基线,且不会增加训练时间。TemporalFusionTransformerMXNet 将 TFT 变压器架构引入 AutoGluon。@shchur (#2106, #2188, #2258, #2266)

  • 对于统计(局部)预测模型如ETSARIMATheta,以及WeightedEnsemble,可以实现高达20倍的并行和内存高效训练。@shchur @canerturkmen (#2001, #2033, #2040, #2067, #2072, #2073, #2180, #2293, #2305)

  • 通过数据缓存,GluonTS模型的训练速度提高了最多3倍。PyTorch模型默认启用GPU训练。 @shchur (#2323)

  • 通过多窗口回测对时间序列模型进行更准确的验证。@shchur (#2013, #2038)

  • TimeSeriesPredictor 现在可以处理不规则采样的时间序列,使用 ignore_index。@canerturkmen, @shchur (#1993, #2322)

  • 改进和扩展了预设,以实现更准确的预测。@shchur (#2304)

  • 通过更新TimeSeriesEvaluator @shchur (#2147, #2150),预测评估速度提高了15倍,并且更加稳健。

  • 启用了Ray Tune后端用于时间序列模型的超参数优化。@shchur (#2167, #2203)

More tutorials and examples

改进的文档和新教程:

@shchur (#2120, #2127, #2146, #2174, #2187, #2354)

Miscellaneous

@shchur

  • 弃用将quantile_levels传递给TimeSeriesPredictor.predict (#2277)

  • 在GluonTS预测模型中使用静态特征 (#2238)

  • 确保时间序列分割器不会将训练序列修剪得比 prediction_length + 1 更短 (#2099)

  • 修复时间序列模型在HPO中超参数重载的问题 (#2189)

  • 清理 TimeSeriesDataFrame 公共 API (#2105)

  • 修复GluonTS模型预测中的项目顺序 (#2092)

  • 实现 hash_ts_dataframe_items (#2060)

  • 加速 TimeSeriesDataFrame.slice_by_timestep (#2020)

  • 加速RandomForestQuantileRegressor和ExtraTreesQuantileRegressor (#2204)

  • 各种后端增强/重构/清理 (#2314, #2294, #2292, #2278, #1985, #2398)

@canerturkmen

  • 增加DeepAR在预测时使用的样本数量 (#2291)

  • 将时间序列预设修改为最小上下文长度为10 (#2065)

  • 修复时间序列每日频率推断周期 (#2100)

  • 各种后端增强/重构/清理 (#2286, #2302, #2240, #2093, #2098, #2044, #2385, #2355, #2405)