从没见过真实数据,却拿下四个第一:NVIDIA 开源 Kumo Tabular,表格预测不用再训练了

做表格预测的人都有同一种疲惫。拿到新问题,不管是客户流失、信贷违约、需求预测还是动态定价,都要把同一条流水线重走一遍:收集标签、做特征工程、搜超参、交叉验证、部署上线。梯度提升树在这块地上称王很久了,代价也很清楚,它只认识你喂进去的这一张表,对「表格」这件事本身没有任何概念。
2026 年 9 月 29 日,NVIDIA 放出来的 Kumo Tabular 把这个前提掀了。
它只用人工合成数据预训练,从没见过一条真实客户记录,却在四个榜单上排第一。
二十年老路:换一张表,全部从头走一遍
结论放在前面:过去做表格预测,成本大头不在算模型,在重复劳动。
给你一张结构清晰的特征矩阵,树模型能把它压榨到极致。麻烦在于这张矩阵从来不是天上掉下来的,要把原始业务表变成模型能吃的样子,中间那一串步骤全靠人扛。更憋屈的是流程里攒下的经验没法迁移。你在流失预测上调出来的直觉,到了下一个违约预测任务基本归零,因为模型压根不认识「表格」,它只认识那一个具体的数据分布。
这里有个分岔。如果你是新手,最先卡住你的通常是特征工程和调参玄学,一堆看不出所以然的经验值。如果你已经在跑 GBDT 流水线,真正的成本往往是每新增一个预测目标,就得重新排期一轮。
表格依然是绝大多数团队最顺手的分析界面,连 Google Sheets 都开始往表格里塞对话式 canvas,可预测这一步始终挂在另一套系统上。
Kumo Tabular 是什么:把上下文学习搬进表格
它属于 NVIDIA 的 Kumo Structured 模型集合。思路跟大语言模型很像:给一段带标签的上下文,再给出要问的东西,一次前向传播直接出答案。
翻译成表格的语言:给一张带标签的表,加上要预测的那些行,一次前向出结果。不训练,不调参,不做特征工程。
开放程度也算大方。代码在 github.com/NVIDIA/structured-data-models,NVIDIA 自研部分走 Apache 2.0;权重在 huggingface.co/nvidia/Kumo-Tabular,许可是 OpenMDW-1.1,允许商用。三个尺寸,2800 万到 2.15 亿参数,分类模型和回归模型是分开的。
这不是 NVIDIA 第一次在结构数据上动手。站内之前聊过的 NVIDIA SoL-Pi 讲的是另一头怎么省 token,这回轮到表格预测本身被改写。
一个没见过真实数据的模型,拿了四个第一
成绩单照官方口径抄一遍:
- TabArena:1950 ELO,第一。
- BeyondArena:1418 ELO,7.78% Improvability。
- TALENT:分类准确率平均 rank 6.67,分类 log loss 3.98,回归 RMSE 4.22。
- ScoringBench:Large 与 Medium 分列第一、第二。
对比对象不含糊,是调过参的梯度提升树、AutoGluon,以及其他表格基础模型。
必须加一句风险提示。以上全部是 NVIDIA 自己测的,目前尚无第三方复现。看趋势,别当排行榜。
判断也简单。如果你的任务接近公开榜单那一类集子,Kumo Tabular 值得排进第一轮 baseline。如果你的数据偏得远,比如私有业务里那种拧巴的分布,先拿自己的 held-out 集验一遍,别急着替换线上模型。
速度这一项也要带着限定条件读:在单张 RTX 6000 Pro 上、默认设置下,它比 LimiX-2 快 17 倍。换硬件、换批量配置,这个倍数会变。

架构拆开看:五个让它跑得动的设计
Cell Embedding:一组单元格压成一个 token
数值和类别值都走傅里叶特征,也就是学一组频率的正弦和余弦,两类各自一套权重。缺失值不做插补,单独处理。上下文里每个 token 还会叠一个标签 embedding。
Row Embedding:先竖着看,再横着看
列注意力沿着单列往下扫,学的是「这个值在它所在列的分布里算典型还是极端」,用 induced self-attention,开销随行数线性增长。行注意力横着看过一行内部的各个 token,学特征之间怎么交互,靠 rotary position 区分列。最后用四个可学习的 [CLS] token 做这一行的 readout,行压完之后,后续开销不再随列数增长。
In-context Learning:上下文永远看不见查询
最后一层 Transformer 作用在行 embedding 上。上下文行互相注意,查询行只注意上下文行。结果是每条预测只依赖它自己的上下文,跟这次一起被打分的其他行无关。反过来,上下文看不到查询,于是它的 key 和 value 只算一次就能反复复用,查询行这边再用 Test-GQA 缩小缓存。
Length-aware Attention Temperature:防止注意力变糊
softmax 注意力会随 key 数量变多而发散。几百行时还很锐利的注意力,到几万行就糊成一团。解法是让查询向量按 key 数量的对数动态缩放,每个注意力头各自学一个缩放系数。
输出:分类给概率,回归给 999 个分位数
分类侧直接输出类别概率。回归侧预测 999 个分位数,点估计和不确定性区间一起出来。这个取向跟站内聊过的 Jev 那种不生产多余文本、只给答案的决策模型是一路的:输出只服务任务本身。
预训练配方:每一张表都是程序生成的
既然决定不碰真实数据,那就得自己造。NVIDIA 的办法是按结构因果模型(SCM)采样,六步:
- 先随机生成结构参数;
- 再随机生成一张因果 DAG;
- 从根节点往叶节点走,用随机函数变换求值,候选集合里有线性变换、小型神经网络、决策树、高斯过程;
- 挑一部分节点作为数值或类别特征暴露出来,一个节点当预测目标,其余保持不可见,用来模拟现实里的隐藏混杂因素;
- 后处理故意注入脏东西:相关特征簇、截断极端值、结构化缺失、高基数类别、重尾回归目标,还会故意做特征粗化,让特征相同的行带上互相矛盾的标签;
- 最后用一个轻量树集成当过滤器,把没有可学信号的表先验掉。
这六步造出来的表,难度是刻意往现实贴的。
训练分三阶段:先是 1024 行、最多 100 列,再把上下文撑到 400 到 10240 行,最后把上下文扩到 60000 行。Small、Medium、Large 三档各自大约见过 3500 万、7100 万、1.37 亿张合成表。第三阶段那个上下文长度,正好解释了上一节「注意力变糊」为什么必须专门处理。

上手:从一行安装到第一次预测
安装就一行命令。README 要求 Python 3.11 以上、PyTorch 2.7 以上,从 main 分支装:
pip install git+https://github.com/NVIDIA/structured-data-models.gitCUDA 场景,官方建议额外装上 cudf,让 dataframe 操作留在 GPU 上,省掉数据在 CPU 和 GPU 之间来回搬的开销。
README 里的 quick tour,把模型类名换成 KumoTabular,是这样:
from sklearn.datasets import load_breast_cancer
import sdm
df = load_breast_cancer(as_frame=True).frame
table = sdm.TableTensor.from_pandas(
df=df,
stypes=sdm.infer_stypes(df, overrides={"target": "categorical"}),
device="cuda",
)
model = sdm.models.KumoTabular(device="cuda")
# 默认 in-context learning 前向
model(
x_context=table[:300].drop_columns("target"),
y_context=table[:300, "target"],
x_query=table[300:].drop_columns("target"),
num_estimators=8,
)第二种用法是 fit 加 predict,靠前面说的 key/value 缓存做快速推理,适合同一批上下文反复预测的场景:
model.fit(x=table[:300].drop_columns("target"), y=table[:300, "target"], num_estimators=8)
model.predict(table[300:].drop_columns("target"))
model.clear()尺寸是 Small、Medium、Large 三档,具体传参方式以仓库 examples 为准,别凭感觉猜。同一个仓库里还放着 TabICLv2(ICML ’26)、TabFM、KumoRelational(关系型)这几个模型,想横向对比不用另外找。
四个坑:踩之前先看清单
坑 1:原生只吃数值列和类别列。现象是丢一列原始文本进去,模型不会替你理解。根因在于输入表示就是为这两类设计的。解法是先转成数值或类别,README 说配套 recipes 负责这类转换,别指望把原始文本、图片、时间戳直接塞进去。
坑 2:一次前向直接支持最多 10 个类别。现象是类别数超了走不通,根因是输出侧这个上限,解法是走 error correcting output codes 扩展。几十类意图分类这种任务,动手前先把这条路径确认清楚。
坑 3:超出模型训练范围、或者查询行分布和上下文行分布不一致时,精度会掉。根因在于上下文学习这套归纳偏置依赖分布对齐。官方自己要求留一份 held-out 验证集,准确率和校准度一起看,只盯准确率容易漏事。
坑 4:合成数据生成器和训练配方目前还没放出,NVIDIA 只说了「稍后」。现象是想复现预训练或者做领域适配的人暂时拿不到完整配方。解法只有等官方,别靠猜去补。
写在最后
树模型教会我们怎么把一张表榨干,Kumo Tabular 想做的是让模型记住「表格」这件事本身。前者每个任务从零开始,后者可以一次次往上累积。
回到开头那句话。做表格预测最贵的一环,从来不是那次拟合,是每次换任务都要从头走一遍的流程。现在有了一个见过一亿多张合成表、拿到新表就能直接前向外推的模型,这笔账值得重新算。
再啰嗦一句边界:所有榜单成绩都是厂商自测,尚无第三方复现,先看趋势,再谈替换。
觉得有用的话,点个赞,顺手转给那个每周都在重跑一遍 GBDT 的同事。关注圈圈,持续带你玩转 AI 工具。
暂无评论内容