自 TabPFN (Tabular Foundation Model) 首次亮相以来,它彻底改变了表格数据机器学习的面貌。作为一种训练即预测(Training-free Prediction) 的方法,TabPFN 利用 Transformer 结构在大量合成任务上进行训练,从而实现了强大的泛化能力和卓越的校准(Calibration)性能,解决了传统树模型(如XGBoost、LightGBM)需要耗时调参的痛点。
在行业标准 TabArena 基准测试中,TabPFN-2.5 现已成为领先方法(SOTA)。
-
在小型至中型数据集,TabPFN-2.5 对比默认 XGBoost 实现了 100% 的胜率。 -
在更大规模数据集上,分类任务胜率高达 87%,回归任务胜率也达到了 85%。
| 资源 | 链接/命令 |
|---|---|
| 官网 | https://priorlabs.ai/ |
| 文档 | https://docs.priorlabs.ai/overview |
| 本地包 | pip install tabpfn |
TabPFN 如何成为基础层?
TabPFN 的影响力早已超越了其最初的性能基准。自 TabPFNv2 发布以来,它不仅在研究界得到了认可,也迅速在产业界普及,从一个研究模型蜕变成为一个稳定的、被广泛使用的 “产品”。
TabPFNv2 在极短的时间内达到了惊人的采用率:
-
学术影响力: 在发布后的 10 个月内,相关的 Nature 论文已被引用近 400 次。 -
软件下载量: 开放源代码包在 PyPI 上的下载量已超过 200 万次。 -
社区成熟度: 社区拥有近 1,500 名 Discord 用户,反馈推动了无数的稳定性修复和跨平台兼容性改进,将其从概念验证(Proof-of-Concept)转变为成熟的生产工具。
TabPFN-2.5 技术升级
TabPFN-2.5 沿袭了 TabPFNv2 的整体设计哲学——交替注意力 Transformer 和纯合成数据预训练——但通过在架构、数据和推理策略上进行了改进。
TabPFN-2.5 保持了其核心的双注意力机制(在样本和特征维度上交替进行注意力计算),以确保置换不变性,但引入了以下关键结构变化:
-
更深的神经网络:深度从 TabPFNv2 的 12 层增加到 24 层。 -
更大的特征组(Feature Groups): 我们将特征分组大小从 2 增加到 3。这允许模型同时嵌入更多的特征,从而显著提高了训练和推理速度(TabPFN-2.5 推理速度比 v2 快 1 到 2.3 倍)。 -
回归编码器改进: 对于回归模型,TabPFNv2 使用线性编码器,而 TabPFN-2.5 替换为 2 层 MLP,带来了性能上的小幅提升。 -
引入“思考行”(Thinking Rows): 受大型语言模型(LLM)研究的启发,TabPFN-2.5 的输入中增加了 64 个额外的、在预训练中学习到的“思考行”。这些行:
TabPFN-2.5 聚合了来自多种数据集置换和特征变换的预测结果,以增强鲁棒性和泛化性:
-
混合特征变换: 引入了新的特征变换来增强对异常值的鲁棒性,并增加个体估计器之间的多样性。具体而言,它结合了: -
鲁棒缩放(Robust Scaling)和 软裁剪(Soft Clipping) -
分位数变换(Quantile Transformations)和 标准缩放(Standard Scaling) -
SVD 特征: 沿袭 TabPFNv2,仍将奇异值分解(SVD)分量作为额外特征纳入部分估计器中,以捕获数据中互补的全局结构信息。
由于 TabPFN 的超参数空间巨大(涉及架构、训练和先验数据 个超参数),无法进行穷举搜索。我们采用了自引用(Self-referential)的优化策略:
-
稀疏网格训练: 首先在稀疏的超参数网格上训练约 100 个模型,得到性能数据。 -
TabPFNv2 作为代理模型: 使用我们前一代模型 TabPFNv2 作为代理回归模型,在更密集的 10,000 个配置网格上预测性能。 -
高效探索: 这种 “TabPFN-tunes-TabPFN” 策略极大地提高了搜索效率,帮助我们快速找到最有前景的超参数区域进行全面、计算密集型的训练。
得益于优化的预处理和更大的特征组,尽管 TabPFN-2.5 模型更大,但推理速度比 TabPFNv2 快 1x 到 2.3x。此外还采用了 FlashAttention-3 技术,并在多 GPU 上实现了并行评估,进一步提高了速度。
| 模型 | 最大行数 (Rows) | 最大特征数 (Features) | 数据类型 | 深度 (Depth) | 推理模式 |
|---|---|---|---|---|---|
| TabPFN-v1 |
|
|
|
|
|
| TabPFN-v2 |
|
|
|
|
|
| TabPFN-2.5 |
|
|
|
|
ICL+MLP/Trees |
TabPFN-2.5 如何定义 SOTA?
TabArena 是一个经过严格策划的行业标准基准测试,代表了真实世界的表格数据挑战。TabPFN-2.5 在此基准上展现了压倒性的优势。
在 TabArena-Lite 的小到中型数据集上,TabPFN-2.5 仅通过一次前向传播(a forward pass),就超越了 AutoGluon 1.4(一个耗时 4 小时调优且包含 TabPFNv2 在内的复杂集成模型)。
在 TabArena 的所有数据集上,TabPFN-2.5 被明确列为最佳默认模型。
论文中也验证了 蒸馏引擎 产生的模型在生产环境中的价值:
-
高性能低延迟:TabPFN-2.5-as-MLP 模型在内部基准测试中,保持了极具竞争力的准确率,同时大幅降低了推理成本和延迟。 -
优势: 这使得它非常适用于高吞吐量或资源受限的部署场景,为寻求 TabPFN 性能但受限于延迟要求的企业提供了完美的解决方案。
TabPFN-2.5 性能调优秘籍
TabPFN-2.5 性能强大,但要确保在您的硬件上实现最佳的拟合(“训练”)和预测速度,需要遵循以下几个关键的硬件和软件推荐:
-
专有 GPU 优先: 强烈推荐使用 NVIDIA H100 或 A100 GPU。虽然 PyTorch 支持的任何专有 GPU 都兼容,但 H100/A100 能提供足够的内存和算力来处理大规模数据集。 -
多 GPU 并行: 对于大型数据集,通过在多个 GPU 上并行推理,可以显著减少拟合(Fit)+ 预测(Predict)时间。只需设置 TabPFNClassifier或TabPFNRegressor的device参数即可启用。 -
批量推理 (Batch Inference): 除非启用缓存,模型会在每次调用 .predict()时重新“训练”(即执行上下文学习)。因此,最快的做法是在一次.predict()调用中对所有测试点进行预测。如果内存不足,可以将测试点分割成 1,000 到 10,000 的批次。
TabPFNC 基础使用
from sklearn.datasets import load_breast_cancer
from sklearn.metrics import accuracy_score, roc_auc_score
from sklearn.model_selection import train_test_split
from tabpfn import TabPFNClassifier
from tabpfn.constants import ModelVersion
# Load data
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=42)
# Initialize a classifier
clf = TabPFNClassifier() # Uses TabPFN 2.5 weights, finetuned on real data.
# To use TabPFN v2:
# clf = TabPFNClassifier.create_default_for_version(ModelVersion.V2)
clf.fit(X_train, y_train)
# Predict probabilities
prediction_probabilities = clf.predict_proba(X_test)
print("ROC AUC:", roc_auc_score(y_test, prediction_probabilities[:, 1]))
# Predict labels
predictions = clf.predict(X_test)
print("Accuracy", accuracy_score(y_test, predictions))
# 学习大模型 & 讨论Kaggle #
每天大模型、算法竞赛、干货资讯

