AutoGluon 0.8.0 版本发布解读:决策阈值校准、TimeSeries 重大升级与多模态目标检测演进
2026/9/15 21:34:20 网站建设 项目流程

AutoGluon 0.8.0 版本发布解读:决策阈值校准、TimeSeries 重大升级与多模态目标检测演进

【免费下载链接】autogluonFast and Accurate ML in 3 Lines of Code项目地址: https://gitcode.com/GitHub_Trending/au/autogluon

AutoGluon 0.8.0 是继 0.7.0 之后的一个重要版本,共包含 196 个提交、来自 20 位贡献者的工作,核心亮点集中在 Tabular 的决策阈值校准、TimeSeries 模块的整体性能跃升,以及 MultiModal 的 PDF 文档分类与开放词汇目标检测。本文以官方发布说明为骨架,结合当前仓库源码逐项拆解各模块的新功能、配置参数与底层实现,帮助你评估升级收益并快速上手。

版本兼容提示:AutoGluon 不支持跨版本加载模型,即用 0.7.x 训练的模型无法在 0.8.0 中直接加载,升级前请确认你的持久化模型与当前版本一致。此外,0.8.0 支持 Python 3.8、3.9 与 3.10。

一、Tabular:二分类决策阈值校准,直接提升 f1 与 balanced_accuracy

0.8.0 最值得 Tabular 用户关注的新功能是TabularPredictor.calibrate_decision_threshold。默认情况下,AutoGluon 以 0.5 作为二分类正类判定阈值,这对 accuracy 类指标通常合适,但对f1balanced_accuracyprecision等指标未必最优。该方法会在验证数据上搜索能使目标指标得分最大化的阈值,官方实测中常见场景下f1可从 0.70 提升至 0.73。

使用方式

from autogluon.tabular import TabularPredictor predictor = TabularPredictor(label="class", eval_metric="f1").fit(train_data) # 返回最优决策阈值(0~1 之间的浮点数) optimal_threshold = predictor.calibrate_decision_threshold() # 将阈值写入 predictor,后续 predict() 均按新阈值判定正类 predictor.set_decision_threshold(optimal_threshold)

参数详解(依据源码 docstring)

该方法定义于 predictor.py,完整签名与默认值如下:

参数默认值说明
dataNone校准所用的数据,必须包含标签列。默认None时使用内部数据(留出验证集或 OOF 预测),官方建议非高级用户保持None
metricNone要优化的指标;None时使用predictor.eval_metric
model"best"校准所基于的模型;"best"表示使用predictor.model_best
decision_thresholds25在 0.5 两侧搜索的阈值数量,默认 25 意味着共搜索 51 个阈值[0.00, 0.02, ..., 0.48, 0.50, ..., 1.00];也可直接传入自定义阈值列表
secondary_decision_thresholds19在第一阶段最优阈值两侧进行的二次细粒度搜索数量,None表示跳过;例如第一阶段找到 0.14 后,会在 0.131~0.149 区间精细扫描
subsample_size1000000当数据行数超过该值时随机抽样加速校准,通常超过 100 万行无必要
verboseTrue是否打印校准过程日志

底层行为与注意事项

  • 该方法仅适用于problem_type="binary",否则抛出AssertionError(见 predictor.py)。
  • 校准阈值会同时影响其他指标的分数:例如针对balanced_accuracy校准通常会损害accuracy,因此应根据业务核心指标选择校准目标。
  • set_decision_threshold(见 predictor.py)负责持久化阈值,其原理是将“正类预测概率 > threshold”的样本判定为正类,并会在变更时打印影响提示。
  • 仓库测试 test_lightgbm.py 验证了该功能不会使目标指标变差,且对roc_auc这类与阈值无关的指标,校准结果恒为 0.5(合理行为)。

二、Tabular:实验性 Zeroshot HPO 配置与 TabPFN 模型

experimental_zeroshot_hpo_hybrid

0.8.0 引入实验性的 Zeroshot HPO(零样本超参数优化)配置,基于社区合作产出的 Zeroshot-HPO portfolio。它针对小于 10000 行的小数据集,且训练时间至少 1 小时的场景表现良好,官方说明称其相对best_quality约有 60% 的胜率。用法只需在fit()中指定:

predictor = TabularPredictor(label="class").fit( train_data, presets="experimental_zeroshot_hpo_hybrid", )

从仓库结构看,该功能建立在tabular/src/autogluon/tabular/configs/zeroshot/目录下的系列组合配置之上(如 zeroshot_portfolio_2023.py、zeroshot_portfolio_2025.py),并在 presets_configs.py 中与best_qualityhigh_quality等 preset 关联(best_quality本身即使用"zeroshot"超参数集合并开启auto_stack)。由于它是实验性配置,生产环境使用前建议在小数据集上先做对照验证。

TabPFN:预训练表格 Transformer

TabPFN 是一个预训练的表格 Transformer 模型,作为实验性模型加入 Tabular,官方建议在推理速度不敏感、训练数据少于 10000 行时使用。安装与启用方式:

pip install autogluon.tabular[all,tabpfn]
predictor = TabularPredictor(label="class").fit( train_data, hyperparameters={"TABPFN": {}}, )

模型实现位于 models/tabpfnv2,后续迭代版本(如 tabpfn3_model.py)也在同一目录演进,权重通过ag.fetch_pretrained_weights机制获取(见 _weight_fetch.py)。源码注释还提示:TabPFN 的随机状态会影响其预处理,因此验证分数可能具有误导性,评估时应留意多次运行取稳定结果。

三、Tabular:其他增强与底层重构

  • 量化回归(Quantile Regression):为 CatBoost 与 LightGBM(LGBModel)新增分位数回归支持,可输出预测区间。
  • included_model_types参数:新增按模型类型白名单过滤的入口,与已有的excluded_model_types互补。
  • XGBoost 支持enable_categorical=True:可直接消费类别特征,减少手写编码。
  • 布尔特征预处理加速:重构布尔列处理路径,提升训练吞吐。
  • 分布式训练后端:为后续 Cloud 模块准备了分布式训练的后端能力,属于“面向未来”的基础设施投入。
  • 细节修复:跨操作系统加载已训练的 TabularPredictor 现在可正常工作;drop_duplicates默认开启;回归任务的predict_proba会主动报错而非静默返回错误结果;解释性逻辑迁移至InterpretableTabularPredictor
  • 框架层改动:AutoGluon 搜索空间(AG search space)迁移到 common 模块,并完成 PEP420 命名空间包兼容,为多模块协同提供更干净的包结构。

四、TimeSeries:新模型、更快训练与更实用的预测 API

0.8.0 的 TimeSeries 模块是本版本改进幅度最大的部分,围绕“更准、更快、更好用”三条主线展开。

新增三个模型

  • PatchTSTDLinear:来自 GluonTS 的深度时序模型,实现于 gluonts/models.py(DLinearModelPatchTSTModel)。
  • RecursiveTabular:基于与 mlforecast 库的集成,采用递归多步策略驱动 Tabular 模型,实现于 mlforecast.py(RecursiveTabularModel)。

性能提升

  • 更新后的 presets 在提升精度的同时降低了整体训练时间。
  • AutoARIMAAutoETSThetaDirectTabularWeightedEnsemble等经典模型的训练与推理速度提升约3~6 倍
  • DirectTabular(原AutoGluonTabular)的特征化更快,且当eval_metric="mean_wQuantileLoss"时会自动训练为分位数回归模型,直接输出分位数预测。

预测缓存:重复调用大幅加速

新增预测缓存机制,重复调用predict()leaderboard()evaluate()时不再重复计算,显著加速迭代实验(见 predictor.py 的predict实现)。

新的 fit() 参数

  • num_val_windows(默认 1):使用多个回测验证窗口训练,降低过拟合风险。支持"auto"、整数或元组;当使用多层集成时需传入与集成层数匹配的元组(如num_val_windows=(2, 3)),且len(ensemble_hyperparameters)必须与len(num_val_windows)一致。窗口划分示例:prediction_length=2num_val_windows=3val_step_size=1时会生成多个滑动回测折。
  • excluded_model_types:从 preset 中排除指定模型,例如excluded_model_types=["DeepAR"],便于按资源或精度偏好裁剪模型集。
  • hyperparameters支持列表:对同一模型传入多个配置(列表形式),即可自动训练该模型的多种变体并参与集成。
  • time_limit全面生效:此前部分模型可能超时,0.8.0 保证该参数对所有模型生效。
  • refit_full()(见 predictor.py):在合并训练集与验证集后重新训练模型,通常能小幅提升最终精度。

指标与健壮性

  • 修正 MASE 指标的季节性周期计算。
  • 从磁盘加载TimeSeriesPredictor时校验 AutoGluon 版本,避免跨版本加载导致行为异常。

五、MultiModal:PDF 文档分类与开放词汇目标检测

AutoMM(AutoGluon MultiModal)在 0.8.0 推出两大新能力。

PDF 文档分类

新增面向 PDF 文档的分类能力,底层通过文档处理管线将 PDF 渲染并作为图像输入模型,核心处理逻辑见 process_document.py(DocumentProcessor,继承自ImageProcessor)。典型用法:

from autogluon.multimodal import MultiModalPredictor predictor = MultiModalPredictor(label="category", problem_type="classification") predictor.fit("path/to/pdf/train") # 0.8.0 起 fit() 支持直接传数据路径 pred = predictor.predict("path/to/pdf/test")

相关配套教程位于 docs/tutorials/multimodal/document_prediction,涵盖基础文档分类与 PDF 分类两个 notebook。

开放词汇目标检测(Open Vocabulary Object Detection)

允许检测器识别训练时未见过的类别(通过文本描述指定类别),突破了封闭类别集限制。

检测引擎升级与 preset 重构

检测引擎从 mmdet 2.x 升级到 mmdet 3.x,三个 preset 的默认骨干网络全面换代:

preset0.7.x0.8.0
medium_qualityyolo-syolox-l
high_qualityyolox-lDINO-Res50
best_qualityyolox-xDINO-Swin_l

从仓库配置可以印证:YOLOX 系列配置位于 configs/pretrain/detection/yolox(含yolox_tinyyolox_m等新增变体),DINO 系列(含dino-5scale_swin-l配置)位于 configs/pretrain/detection/dino。官方说明指出,相同 preset 下的 mAP(平均精度均值)相对提升约 20%。

训练与推理效率优化

  • Deepspeed 策略加速多模态融合模型训练。
  • 检测骨干网络冻结支持:微调时可冻结 backbone,显著提速并降低 GPU 显存占用。
  • TensorRT 推理加速:融合模型推理支持 TensorRT 优化。
  • 自定义图像增强fit()中可传入 torchvision transform 对象列表作为图像增广。
  • xywh 输出格式:目标检测支持输出xywh坐标格式。
  • MultiImageMix 数据集:新增针对目标检测的多图混合数据增强。

模型统计属性与加载能力

新增 predictor 属性便于监控模型规模(实现于 learners/base.py):

  • trainable_parameters:可训练参数量
  • total_parameters:总参数量
  • model_size:模型体积(MB)

同时支持加载任意中间 checkpoint(不再局限于model.ckptlast.ckpt),并支持自定义 TIMM 版本(升级至 0.9.x)。训练日志还会记录 GPU 显存总量、空闲量、显卡型号与 CUDA 版本,便于定位资源瓶颈。

六、EDA 工具:异常检测与偏依赖图

AutoGluon EDA 在 0.8.0 新增两个探索性分析工具:

  • 异常检测(Anomaly Detection):识别显著偏离常规模式的数据,适用于欺诈、缺陷检测、罕见事件与可疑行为挖掘。
  • 偏依赖图(Partial Dependence Plots):可视化单个特征与模型输出之间的关系(逐样本呈现),其双变量变体可展示任意两个特征间的交互效应,用于理解特征组合对预测的影响。

此外,quick_fit的回归分析改用残差图展示,autogluon.eda.auto新增explain_rows方法,基于 Kernel SHAP 对指定行进行可解释性可视化。

七、通用改进与其他说明

  • sample_weight支持 RMSE:回归指标 RMSE 现在支持样本权重。
  • 新的 AutoGluon 官网页面上线。
  • 多模块质量改进:文档、CI、通用代码修复均有大量提交,覆盖 common、core 等基础模块;calibrate_decision_threshold的官方教程位于 tabular-indepth.ipynb 的 Decision Threshold Calibration 小节。

升级建议小结

  1. 二分类用户:优先尝试calibrate_decision_threshold,尤其当评估指标为f1balanced_accuracy等阈值敏感指标时,收益显著且接入成本极低。
  2. 时序预测用户:0.8.0 是值得升级的版本——新模型(PatchTST/DLinear/RecursiveTabular)、3~6 倍速度提升与预测缓存将直接改善迭代体验;num_val_windowsrefit_full()可进一步提升精度。
  3. 多模态目标检测用户:升级检测引擎后,同 preset 下 mAP 相对提升约 20%,但骨干网络变更意味着推理耗时与显存占用会变化,建议按资源重新评估 preset 选择。
  4. 注意版本约束:模型跨版本不兼容,升级前请确认部署链路中不存在旧版本产物;当前仓库根目录的 VERSION 文件标注的版本为 1.6.2,属于后续迭代版本,本文描述的 0.8.0 功能在后续版本中基本保留并持续演进(如 TabPFN 系列模型在 models/tabpfnv2 中已迭代到 TabPFN-3),实际使用时以你所安装版本的文档为准。

【免费下载链接】autogluonFast and Accurate ML in 3 Lines of Code项目地址: https://gitcode.com/GitHub_Trending/au/autogluon

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询