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 类指标通常合适,但对f1、balanced_accuracy、precision等指标未必最优。该方法会在验证数据上搜索能使目标指标得分最大化的阈值,官方实测中常见场景下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,完整签名与默认值如下:
| 参数 | 默认值 | 说明 |
|---|---|---|
data | None | 校准所用的数据,必须包含标签列。默认None时使用内部数据(留出验证集或 OOF 预测),官方建议非高级用户保持None |
metric | None | 要优化的指标;None时使用predictor.eval_metric |
model | "best" | 校准所基于的模型;"best"表示使用predictor.model_best |
decision_thresholds | 25 | 在 0.5 两侧搜索的阈值数量,默认 25 意味着共搜索 51 个阈值[0.00, 0.02, ..., 0.48, 0.50, ..., 1.00];也可直接传入自定义阈值列表 |
secondary_decision_thresholds | 19 | 在第一阶段最优阈值两侧进行的二次细粒度搜索数量,None表示跳过;例如第一阶段找到 0.14 后,会在 0.131~0.149 区间精细扫描 |
subsample_size | 1000000 | 当数据行数超过该值时随机抽样加速校准,通常超过 100 万行无必要 |
verbose | True | 是否打印校准过程日志 |
底层行为与注意事项
- 该方法仅适用于
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_quality、high_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 模块是本版本改进幅度最大的部分,围绕“更准、更快、更好用”三条主线展开。
新增三个模型
- PatchTST与DLinear:来自 GluonTS 的深度时序模型,实现于 gluonts/models.py(
DLinearModel、PatchTSTModel)。 - RecursiveTabular:基于与 mlforecast 库的集成,采用递归多步策略驱动 Tabular 模型,实现于 mlforecast.py(
RecursiveTabularModel)。
性能提升
- 更新后的 presets 在提升精度的同时降低了整体训练时间。
AutoARIMA、AutoETS、Theta、DirectTabular、WeightedEnsemble等经典模型的训练与推理速度提升约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=2、num_val_windows=3、val_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 的默认骨干网络全面换代:
| preset | 0.7.x | 0.8.0 |
|---|---|---|
medium_quality | yolo-s | yolox-l |
high_quality | yolox-l | DINO-Res50 |
best_quality | yolox-x | DINO-Swin_l |
从仓库配置可以印证:YOLOX 系列配置位于 configs/pretrain/detection/yolox(含yolox_tiny、yolox_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.ckpt与last.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 小节。
升级建议小结
- 二分类用户:优先尝试
calibrate_decision_threshold,尤其当评估指标为f1、balanced_accuracy等阈值敏感指标时,收益显著且接入成本极低。 - 时序预测用户:0.8.0 是值得升级的版本——新模型(PatchTST/DLinear/RecursiveTabular)、3~6 倍速度提升与预测缓存将直接改善迭代体验;
num_val_windows与refit_full()可进一步提升精度。 - 多模态目标检测用户:升级检测引擎后,同 preset 下 mAP 相对提升约 20%,但骨干网络变更意味着推理耗时与显存占用会变化,建议按资源重新评估 preset 选择。
- 注意版本约束:模型跨版本不兼容,升级前请确认部署链路中不存在旧版本产物;当前仓库根目录的 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),仅供参考