AutoGluon 1.6.0 发布深度解析:tabular 基础模型新预设、validation_structure 与时间序列能力全面升级
【免费下载链接】autogluonFast and Accurate ML in 3 Lines of Code项目地址: https://gitcode.com/GitHub_Trending/au/autogluon
<output_article>
AutoGluon 1.6.0 发布深度解析:tabular 基础模型新预设、validation_structure 与时间序列能力全面升级
AutoGluon 1.6.0 是面向表格(Tabular)与时间序列(Time Series)两大模块的一次重磅升级,核心亮点包括:新增 Nori、TabPFN-3、TabDPT-Turbo、TabPFN-2.6、TabICLv2 五个表格基础模型与 Toto-2 预训练预测模型,引入extreme/noncommercial两个新预设,以及面向非独立同分布(non-IID)数据的validation_structure验证机制。阅读本文后,你将掌握 1.6.0 各模块的新能力清单、新预设的适用场景与底层配置结构、基础模型的取舍方法、非 IID 数据的验证配置方式,以及时间序列模块的新指标与模型导出用法。
版本总览与兼容性
AutoGluon 1.6.0 由 19 位贡献者共同完成(含 184 次提交),本版本支持Python 3.10、3.11、3.12、3.13四个版本。需要注意一条明确的兼容性约束:不支持加载在旧版本 AutoGluon 上训练的模型,使用 1.6.0 时需要用本版本重新训练模型。
在依赖层面,1.6.0 整体刷新了深度学习与数据栈的版本基线,主要升级包括:
| 依赖 | 版本范围 | 说明 |
|---|---|---|
| torch | >=2.10,<2.14 | PyTorch 主版本升级 |
| transformers | >=5.3,<5.15 | 拥抱 transformers v5 |
| scikit-learn | >=1.4.0,<1.10.0 | |
| ray | >=2.55.0,<2.57 | 分布式调度 |
| lightgbm | >=4.0,<4.8 | |
| xgboost | >=2.0,<3.4 | 同时支持 xgboost v3.3 |
| tabpfn | >=8.0,<8.3 | 表格基础模型库 |
| tabicl | >=2.0,<2.2 | |
| numpy | >=1.25.0,<2.6.0 | |
| onnx / skl2onnx | >=1.21.0,<1.23.0/>=1.20.0,<1.21.0 | 部署链路 |
| pyarrow | >=23.0.1,<25.0.0 | |
| Pillow | >=10.0.1,<13 | |
| nltk | >=3.10,<3.11 | |
| typing-extensions | >=4.14.0,<5 |
此外,仓库构建体系切换为PEP 621 + uv workspace的完整 monorepo 结构(各子包如common/、core/、tabular/、timeseries/、multimodal/均采用pyproject.toml声明元数据),同时通过延迟导入 networkx、requests、tqdm 使import TabularPredictor提速约 25%。
Tabular 新预设:extreme 与 noncommercial
1.6.0 的最大亮点是发布了两个新的 tabular 预设:extreme(别名eq、extreme_v160)与noncommercial(别名noncommercial_v160)。
extreme预设:官方推荐的 GPU 环境预设。相对 AutoGluon 1.5 的extreme(4 小时),训练快约 27 倍、推理快约 4 倍,同时保持 67% 的胜率;相对best(4 小时)训练快约 65 倍,胜率 84%。预设内的所有模型均可免费商用。noncommercial预设:在extreme基础上叠加 TabPFN-3,在 TabArena 上取得新 SOTA。它比 TabFM 训练时间少四分之三、推理快 20 倍、基础模型参数量少 10 倍。TabPFN-3 对研究与内部实验免费,商用需向 Prior Labs 购买许可。
官方基准:TabArena-Lite 51/51 任务
发布说明给出了 TabArena-Lite(51/51 任务)上对比公开排行榜的成绩表:
| method | elo | rank | improvability (%) | train s | infer s |
|---|---|---|---|---|---|
AutoGluon 1.6noncommercial | 1821 | 6.2 | 5.8 | 159 | 7.0 |
| TabFM (default) | 1791 | 7.0 | 5.1 | 613 | 138.4 |
AutoGluon 1.6extreme | 1745 | 8.5 | 6.8 | 137 | 6.2 |
AutoGluon 1.5extreme(4h) | 1638 | 12.9 | 7.9 | 3758 | 27.4 |
| TabPFN-3 (default) | 1632 | 13.2 | 9.1 | 26 | 2.4 |
AutoGluon 1.4best(4h) | 1516 | 20.0 | 12.1 | 8869 | 33.8 |
| RealMLP (tuned + ensemble) | 1480 | 22.5 | 13.0 | 31982 | 33.8 |
从源码看两个预设的构成
在 presets_configs.py 中,extreme_quality预设定义如下:
extreme_quality={ "hyperparameters": "commercial_2026_08_05", "num_bag_folds": 8, "num_bag_sets": 1, "num_stack_levels": 0, "dynamic_stacking": False, "time_limit": 3600, "callbacks": [["EarlyStoppingCountCallback", {"patience": [[400, 1], [401, 2], [2000, 2], None]}]], "aux_kwargs": {"child_hyperparameters": {"ensemble_size": 40}}, },要点解读:
num_bag_folds=8、num_bag_sets=1、num_stack_levels=0、dynamic_stacking=False:采用 8 折 bagging 集成,不做多层 stacking,兼顾精度与训练效率;time_limit=3600:默认 1 小时训练预算,可自行调大;EarlyStoppingCountCallback按训练行数区间设定早停耐心值(如 400 行内耐心 1、401–2000 行耐心 2),保证小数据集上也能及时收敛;- 内置注释明确提醒:该预设会使用预训练表格基础模型,使 predictor 产物体积至少增加 100 MB,且强烈建议使用 GPU(理想 40GB+ 显存)。
noncommercial预设与extreme几乎一致,仅将超参数组合替换为noncommercial_2026_08_05(含 TabPFN-3),并把 401–2000 行区间的早停耐心从 2 提高到 3,以让更长的基础模型前缀在小数据上可达。
两个预设指向的超参数组合分别定义在:
- zeroshot_portfolio_commercial_2026_08_05.py(7 个配置,无 TabPFN):
NORI(nori-30m,ag.max_rows=10000,优先级 -1)TABICLv2(ag.max_rows=100000,优先级 -2)TABDPT-TURBO(ag.max_rows=100000,优先级 -3)- 两个
GBM变体:其中第一个带name_prefix="Prep"与ag.model_specific_feature_generator_kwargs(即 TabPrep LightGBM,优先级 -4),第二个为_r8(ag.min_rows=50000,优先级 -5) CAT(ag.min_rows=50000,优先级 -6)REALMLP(_r9,含 act=mish、hidden_width=256、n_ens=8 等调参结果,优先级 -7)
- zeroshot_portfolio_noncommercial_2026_08_05.py(8 个配置):在商用组合基础上前置加入
TABPFN-3(优先级 -1),其余配置优先级顺延。
组合内使用ag_args的priority字段编码拟合顺序,与预设的早停回调配合,在小数据集上按优先级截断模型数量。
使用方式
from autogluon.tabular import TabularPredictor # GPU 环境推荐,全模型可商用 predictor = TabularPredictor(label="target").fit( train_data, presets="extreme" ) # 追求极致精度(研究/内部实验,商用 TabPFN-3 需许可) predictor = TabularPredictor(label="target").fit( train_data, presets="noncommercial" )新增表格基础模型一览
1.6.0 的 Tabular 模块新增了 5 个基础模型,在源码中均有对应实现目录(见 tabular/src/autogluon/tabular/models):
| 模型 | 源码位置 | 定位与要点 |
|---|---|---|
| Nori | models/nori | 由 Synthefy 提出的轻量基础模型,预设中使用nori-30m权重 |
| TabPFN-3 | models/tabpfnv2/tabpfn3_model.py | Prior Labs 的前沿基础模型,仅用于noncommercial预设;已移除特征数量上限 |
| TabDPT-Turbo | models/tabdpt | TabDPT 的加速变体,默认顺序拟合折(sequential fold fitting),保留缺失值并放宽类别数上限 |
| TabPFN-2.6 | models/tabpfnv2/tabpfnv2_6_model.py | TabPFN 系列 2.6 版本,移除特征上限;旧 TabPFNv2 代码已删除 |
| TabICLv2 | models/tabicl | 上下文学习(ICL)路线的基础模型 v2,使用固定 checkpoint,新增 batch 分层并下调行数上限 |
与此相关的其他模型变化包括:移除 fasttext 模型、TabPFNv2 支持分位数(quantile)问题类型、Mitra 支持从本地 checkpoint 路径加载。
从发布说明与源码可以推断,这些基础模型与 TabPrep LightGBM、CatBoost、RealMLP 一起构成了新预设的模型池,覆盖了从"基于上下文学习的 transformer"(TabPFN/TabICL)、"轻量蒸馏模型"(Nori/TabDPT-Turbo)到"经典树模型与 MLP"的多样化组合。
validation_structure:面向 non-IID 数据的验证方案
1.6.0 为TabularPredictor.fit()新增validation_structure参数(PR #5756、#5796),专门解决非独立同分布(non-IID)数据的验证问题:当数据存在分组结构(如同一客户/会话的多条记录)或时间结构时,默认的随机划分会引入数据泄漏,导致验证结果虚高。
其核心类为ValidationStructure(见 validation_structure.py),支持声明式字段:
| 字段 | 默认值 | 作用 |
|---|---|---|
group_on | None | 标识分组的列(如客户 ID、会话 ID),同组行不允许同时跨越训练与验证划分 |
time_on | None | 时间列(datetime 或数值),验证集被切成连续时间块,非 bagging 的 holdout 取最新一块 |
stratify_on | None | 分层列(可以是标签而非特征);分类任务与group_on搭配时默认取标签 |
size_validation_on_groups | False | 是否按组数而非行数选择自动验证方法;对"68 组、4672 行"这类按组计数更合理的任务有用 |
temporal_forward_only | False | 时间数据限定为前向链式验证(扩展窗口):第 i 折只训练第 i+1 块之前的数据,避免模型"看到未来";代价是最早的时间块永远只作训练数据,其行没有 OOF 预测(可通过uncovered_rows处理),且需要至少 3 个时间块 |
splitter | None | sklearn 风格交叉验证器(如TimeSeriesSplit(n_splits=5)),用于表达声明字段无法覆盖的方案;与其余字段互斥,且折数取自 splitter 本身 |
设计要点(从源码 docstring 可见):
- 先于特征工程解析:
ValidationStructure.from_input()在特征变换改变相关列之前,于原始清洗后的数据框上解析,由 learner 解析 bagging 的custom_splits、trainer 解析非 bagging 的 holdout; - 约束规则:
group_on与time_on不能同时设置;splitter必须是带split(X, y)方法的交叉验证器(防止把字符串列名误传成 splitter); - 与旧
groups参数的关系:groups(TabularPredictor 初始化参数)是validation_structure={"group_on": ...}的弃用写法,两者不能同时指定;groups会从特征中移除分组列,而validation_structure会保留其命名的列。
使用示例:
from autogluon.tabular import TabularPredictor # 分组结构:同一 session_id 的行不允许跨划分 predictor = TabularPredictor(label="target").fit( train_data, validation_structure={"group_on": "session_id"}, ) # 时间结构:按时间列前向链式验证,杜绝未来数据泄漏 predictor = TabularPredictor(label="target").fit( train_data, validation_structure={"time_on": "timestamp", "temporal_forward_only": True}, )TabPrep 特征工程:模型级特征生成
配合新预设,1.6.0 内置了 TabPrep 论文(arxiv 2606.02384)中的特征生成器,并支持按模型而非全局声明预处理流水线,通过ag.model_specific_feature_generator_kwargs实现。
从商用组合源码可见其流水线结构(组成为 GroupByFeatureGenerator → RandomSubsetFeatureCompressionGenerator → ArithmeticFeatureGenerator → 嵌套的 CategoricalInteractionFeatureGenerator 与 OOFTargetEncodingFeatureGenerator,最后经 SpearmanFeatureSelector 选出最多 2000 个特征),并可通过passthrough_types控制原始特征类型透传(组合中排除了 category 与 object 类型)。
这也解释了新预设中 TabPrep LightGBM 的命名:它带name_prefix="Prep",仅对该模型应用 TabPrep 特征工程。相关实现位于 models/tabprep,修复了"特征生成器运行两次"以及 LightGBM 特征名冲突等细节问题。
Tabular API 变更与弃用提示
1.6.0 引入了一批面向模型定制与资源管理的 API 调整,其中与升级相关的关键点:
- 新增
core_kwargs与aux_kwargsfit 参数(PR #5646),配合AuxiliaryParams类型化 schema 使用; - 弃用警告:模型
params与params_aux构造后变为不可变,1.7 版本起将直接抛错; - 新增
min_features/min_cells/max_cells约束参数,约束未满足时以 skip 而非报错的形式上报; - 新增
_supported_problem_types、_default_auxiliary_params_extra等类属性,声明模型支持的问题类型、辅助参数覆盖与集成资源默认值,并在verify_model中校验; - 特征重要性计算内存占用降低约 25 倍;GPU 内存估算贯通(含基础模型校准后的 CPU/GPU 内存估计),并行 bagging 折的预算分配会纳入 GPU 显存;
- [实验性]
fit_strategy='parallel'的 GPU 原型支持(由AG_PARALLEL_GPU环境变量控制); - 自动选择的验证方法以"size curves"形式表达,可覆盖
auto_stack并增益动态 stacking。
其他值得注意的修复包括:修复 TabPFN 包装器丢失缺失类别值、TabDPT 保留缺失值并放开类别上限、xgboost v3.3 下enable_categorical的共享类别空间、LightGBM 特征名冲突、全 NaN 分类列上的 GroupByFeatureGenerator IndexError 等。测试方面新增了 test_augment_rare_classes.py 与 test_pandas_utils.py。
TimeSeries 新特性:Toto-2、新指标与独立模型导出
时间序列模块是 1.6.0 的另一条主线,亮点如下。
Toto-2 预训练预测模型
新增 Toto-2 预训练预测模型,实现位于 timeseries/src/autogluon/timeseries/models/toto2(含model.py、dataloader.py与_internal/)。新预设基于它实现了相对 AutoGluon v1.5 约 65% 的胜率。
新增预测指标
1.6.0 新增四类指标,定义见 timeseries/metrics/point.py:
| 指标 | 含义 | 公式要点 |
|---|---|---|
| MAEB | 带偏差惩罚的 MAE | MAE + 平均预测偏差的绝对值(MAEB = MAE + \|mean(f - y)\|) |
| WAPEB | 带偏差惩罚的 WAPE | WAPE 的偏差惩罚变体 |
| BIAS | 预测偏差检查 | 直接量化系统性高估/低估 |
| MQL | 平均分位数损失 | 用于概率预测评估 |
这些指标已注册到 metrics/init.py 的可用指标映射(如MAEB、WAPEB、mean_absolute_error_with_bias等别名),可通过eval_metric="MAEB"直接选用。同时,时间序列的eval_metric格式与 tabular 对齐。
export_model:不依赖 AutoGluon 的独立 checkpoint
新增TimeSeriesPredictor.export_model方法,可将训练好的模型导出为独立 checkpoint,加载时无需 AutoGluon,便于轻量部署。实现位于 timeseries/learner.py:
predictor.export_model(path="model_checkpoint", model="Toto2")其他变更
- [实验性] 新增
TimeSeriesPredictor.update(),用于在新鲜数据上重新进行集成选择(PR #5803); - 弃用:
TimeSeriesPredictor中的预测缓存默认关闭并标记弃用,将在未来版本移除; - 使用 Chronos-2 新预处理 API 进行微调,并尊重用户为 Chronos 指定的设备(
device); - 修复 Chronos2 协变量单元测试(适配 chronos-forecasting 2.3.1),静默 Chronos/TFT 的加载日志噪音。
工程与生态改进
除功能外,1.6.0 还包含大量质量改进:
- 移除不受支持的 "lite" 模式;修复远程文件系统上产物目录创建的冲突;移除 DataFrame 尺寸估算中的
pickle.dumps以缓解内存峰值; - 修复
get_bool_true_val在 category dtype 上的失败、特征重要性逻辑中的 NaN 比较、p 值计算与批大小优化、贪婪集成选择改用np.isclose浮点比较等; - Multimodal 模块补充了 hf_model_list.yaml 缺失的图像骨干网络,更新语义分割脚本并修复相关测试;
- CI 与工具链同步升级(ruff pre-commit 自动更新等)。
升级建议与总结
如果你正从 1.5 或更早版本升级,请注意:
- 必须重新训练模型:1.6.0 不支持加载旧版本训练的模型;
- Python 版本:确认环境位于 3.10–3.13;
- 依赖刷新:torch、transformers、ray、numpy 等核心依赖的版本区间均已上移,升级前核对环境;
- API 兼容性:模型
params/params_aux构造后不可变(1.7 起强制)、groups参数建议迁移到validation_structure、时间序列预测缓存弃用,均需在升级时逐步适配。
总体而言,AutoGluon 1.6.0 通过extreme/noncommercial预设把表格基础模型(Nori、TabPFN-3、TabDPT-Turbo、TabPFN-2.6、TabICLv2)与 TabPrep 特征工程整合为开箱即用的高性能方案,同时以validation_structure补上了非 IID 数据的验证短板,并在时间序列侧交付了 Toto-2、新指标与独立部署能力,是值得认真对待的一个大版本。 </output_article>
【免费下载链接】autogluonFast and Accurate ML in 3 Lines of Code项目地址: https://gitcode.com/GitHub_Trending/au/autogluon
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考