NVIDIA 开源表格基础模型 Kumo Tabular:给一张带标签的表,一次前向传播直接预测新行,不训练、不调参、不做特征工程。全部用人造表预训练,在 TabArena 上 ELO 1950 排名第一,推理比 LimiX-2 快 17 倍。
本文基于 NVIDIA 团队 2026 年 9 月 29 日发表在 Hugging Face 博客的《NVIDIA Kumo Tabular Sets a New Accuracy-Efficiency Frontier for Tabular Prediction》,原文:https://huggingface.co/blog/nvidia/kumo-tabular
企业里最常见的机器学习任务,其实一直是同一件事:拿一张表,预测下一行的标签。客户流失、违约、需求、价格,背后都是客户记录、交易流水、传感器日志、理赔单和订单这些躺在数据库里的表。这件事做了二十年,主力一直是梯度提升树,而且做得不错。
真正没变的是它周围那条生命周期。每换一个问题,就要重新标注、重新做特征、重新搜超参、重新验证,最后部署出一个对"表"这件事本身一无所知、每次都从零学起的模型。成本不在模型精度上,在这条链路上。
NVIDIA 这次放出的 Kumo Tabular 想改的正是这条链路。它是一个面向表格数据的开放基础模型,权重已经在 Hugging Face 上(nvidia/Kumo-Tabular),代码在 NVIDIA/structured-data-models。用法是:给它一张带标签的表,再给它你想预测的那些行,它在一次前向传播里直接返回分类概率或数值预测——不训练、不调参、不做特征工程,分类和回归都覆盖。三个尺寸,参数量从 2800 万到 2.15 亿,按 OpenMDW-1.1 许可发布,可商用。
这个思路对读过大模型的人不陌生:在提示词里给几个例子,预训练模型不更新任何权重就把任务做了——上下文学习。Kumo Tabular 把同一件事搬到表上:一个在数百万张表上预训练过的模型,把带标签的表当成上下文读进去,直接预测新行。
要在一次前向里完成预测,模型必须同时做到三件事:理解每个值在它那一列里意味着什么,理解一行里的各列如何交互,以及把有标签的上下文行和待预测的查询行关联起来。

Kumo Tabular 的三段结构:左侧单元格嵌入,中间列/行注意力交替的表编码器,右侧只做上下文学习的 Transformer。图片来源:NVIDIA / Hugging Face Blog
单元格嵌入:一组单元格构成一个 token。数值和类别值都过傅里叶特征——学出来的一组频率的正弦和余弦,两种类型各用各的权重。缺失值不需要任何插补,被单独标记处理。上下文里的每个 token 还会额外加上一个标签嵌入。
行嵌入:把一行压成一个向量,靠的是两种注意力交替多轮。列注意力沿着单列往下看,学的是一个值在本列分布里的含义——比如 42 这个数到底是常见还是极端;它用的是诱导点式的自注意力,开销随行数线性增长。行注意力横着看一行里的各个 token,学列之间怎么交互,靠旋转位置编码区分不同的列。每行还挂了四个可学习的 [CLS] token 做最终读出。行被压缩之后,最后一段的开销就和列数无关了。
上下文学习:最后一个 Transformer 直接在行向量上跑。上下文行彼此可见,查询行只能看上下文行。这带来一个容易被跳过、但在工程上很值钱的性质:每一条预测只取决于上下文和它自己,跟它是和哪些行一起被打分的无关。也就是说上下文的 key 和 value 只需要算一次,后续批次可以直接复用;查询行走的是 Test-GQA,进一步缩小每条预测要读的缓存。输出头给分类返回类别概率,给回归返回 999 个分位数——所以你拿到的不是一个点估计,而是一条预测分布,点估计和不确定度都从它来。
长度自适应的注意力温度:softmax 注意力会随着 key 变多而摊平。在几百行上够锐利的注意力,到了几万行就可能化掉——而这恰恰是生产环境的常态:推理时的表比训练时的典型表大得多。Kumo Tabular 的做法是给每个 query 乘一个随 key 数量的对数增长的温度,系数按注意力头分别学习,让表变长变宽时注意力仍然保持锐利。
Kumo Tabular 的预训练数据里没有一张真实的表。每一张训练表都从一个结构因果模型(SCM)里采样出来,分六步。

每张训练表都从一个新抽的随机结构因果模型里生成,六步依次是:抽表的超参、抽因果图、从根到叶跑 SCM、读出表、后处理、只保留"学得出东西"的表。图片来源:NVIDIA / Hugging Face Blog
先给整张表抽一份配置——尺寸、任务类型、机制、缺失模式。然后抽一张随机因果图把隐变量连起来,从根到叶逐节点求值,每个节点随机挑一个函数:线性映射、小神经网络、树,或者高斯过程。一部分节点被读出成数值列或类别列,一个节点成为目标,其余的继续当隐变量——就像真实数据背后那些没被测量到的原因。后处理再把若干列相关化、裁掉离群值、注入缺失值;最后用一个小树集成快速检查一遍,"从 x 学不出 y"的表直接丢掉重抽。因为这个生成器是一套过程化采样器而不是训练出来的模型,它能无穷无尽地产出新表,每张都有新的图和新的机制。
真实的表是脏的,所以他们把脏也造了进去:缺失按多种模式发生;一部分特征被粗化,导致重复行可能带着互相矛盾的标签;一些类别列有极多取值;回归目标可以是重尾分布。见过几百万张这种表的模型,不用你先做清洗就能应付这些毛病。
免费获取企业 AI 成熟度诊断报告,发现转型机会
训练目标是在每张人造表上,用大部分带标签的行当上下文,去预测剩下的行——分类用交叉熵,回归用分位数损失,而且分类和回归是两个独立训练的模型。训练仿照 TabICLv2 分三段:第一段也是最长的一段用 1024 行、最多 100 列的表,教模型"表长什么样";第二段把上下文在 400 到 10240 行之间变化;第三段扩到 60000 行,列数仍然不超过 100。三个尺寸的 Kumo Tabular(S/M/L)分别见过约 3500 万、7100 万和 1.37 亿张人造表。训练配方和数据生成器,NVIDIA 说随后开源。
三个尺寸都按默认设置,对上了完整的 TabArena 排行榜——里面有调过参的梯度提升树、AutoGluon,以及最新的一批表格基础模型。

横轴是每千行推理耗时(对数刻度),纵轴是 ELO。Kumo Tabular 的三个尺寸把帕累托前沿整体左移,LightGBM、AutoGluon、TabPFN-3.5、LimiX-2 都在图上。图片来源:NVIDIA / Hugging Face Blog
Kumo Tabular 总排名第一,ELO 1950;在统一的单卡 RTX 6000 Pro 评测环境下,比同样处在高分区的 LimiX-2 快 17 倍。三个尺寸合起来,在精度-效率的帕累托前沿上创造了新的最好成绩——这张图的意义正在于此:它不是宣称"我最准",而是宣称"在任何一个你愿意付的推理时间预算上,我都是最准的那个"。
其余三个榜:BeyondArena 上 ELO 1418、Improvability 7.78%,排第一;TALENT 上分类准确率、分类对数损失、回归 RMSE 的平均排名分别是 6.67、3.98、4.22,总排名第一;ScoringBench 是专门评预测分布的,Kumo Tabular 的 Large 和 Medium 按平均排名分列第一第二。最后这一项对风控和定价场景比前面几项更值得看——那些场景要的本来就不是一个点,是一条分布。
原文的限制一节写得相当克制,但每一条都直接对应一次上线前的检查:
列的类型:只吃数值列和类别列。文本、图像、时间戳要靠库里内置的预处理配方先转成特征——也就是说,这部分特征工程并没有消失,只是被搬进了一个标准化的入口。
类别数:一次前向最多覆盖 10 个类别,更多类别由库用纠错输出码扩展。多分类场景要先确认你的标签基数。
分布外:表的规模远超训练范围,或者查询行和上下文行不同分布时,精度会下降。结合上一节的训练配置,这给出了一条很具体的自检线——100 列、60000 行是它训练时见过的上界。国内企业里宽表动辄几百列,这是第一个要量的数字,不是最后一个。
校准:NVIDIA 自己把话说在前面了——和任何预测模型一样,部署前要在你自己的留出数据上验准确率和校准。999 个分位数给了你验校准的材料,但验不验是你的事。
调用本身确实只有几行,库会在首次使用时从 Hub 拉权重,预处理、集成和多分类扩展都在里面:
import sdm # structured-data-models
table = sdm.TableTensor.from_pandas(pd.load_csv(...), device="cuda")
na_mask = table["target"].isnan()
model = sdm.models.KumoTabular(device="cuda")
pred = model(
x_context=table[~na_mask].drop_columns("target"),
y_context=table[~na_mask, "target"],
x_query=table[na_mask].drop_column("target"),
)
注意那个 device="cuda"。这是一次成本结构的置换,不是成本的消失:省掉的是标注之外的调参、验证和一套一套模型的运维,换来的是推理要上 GPU。对一个同时跑着几十个业务表模型、每个都要单独排期维护的团队,这笔账多半划算;对只有一张表、LightGBM 已经跑了三年且没人动的场景,就未必。
这类模型真正的价值不在榜单名次上,在你的那张表上。可以用一周做完的对照是这样的:
挑一张列数不超过 100、行数不超过 6 万、标签不超过 10 类的真实业务表——先落在它的训练范围里,把分布外这个变量排除掉。留出一份测试集,一边是你现在那个调过参的梯度提升树,一边是默认设置的 Kumo Tabular,两边都记两个数:预测精度,以及从拿到需求到出第一个可用预测所花的总时间。第二个数才是这篇东西真正在争的东西。
另外两件值得顺手验的事:一是把上下文的 key/value 复用起来跑批量打分,看看在你的数据量上到底省多少——按原文描述,上下文算一次之后可以给后续预测反复用,这对每天全量刷一遍客户表的场景是直接的成本项;二是看校准,把 999 个分位数拿出来,对着你的实际发生率画一张可靠性曲线,再决定它能不能进风控链路。
还有一个容易被忽略的点:全人造数据预训练意味着这个模型在拿到你的表之前,对你的行业一无所知。好处是它不可能"记得"任何真实数据,数据来源和授权这条线是干净的;代价是它也没有任何领域先验可以替你抄近路——你那张表里的信号,得它在上下文里当场看出来。
关注公众号

扫码关注,获取最新 AI 资讯
3 步完成企业诊断,获取专属转型建议
已有 200+ 企业完成诊断