NVIDIA Kumo Tabular 發布在表格基準測試中實現了最優的準確性-效率表現

TL;DR

NVIDIA Kumo Tabular 是一個開源的表格資料基礎模型,可在單次前向傳播中預測標籤而無需微調,並在 TabArena、BeyondArena、TALENT 和 ScoringBench 基準測試中排名第一,建立了新的準確性-效率邊界。


表格基礎模型的轉變

表格資料支撐了大多數企業機器學習工作負載,但傳統流程仍依賴梯度提升樹,需要專屬的特徵工程、超參數搜尋以及每次新任務都需完整重新訓練。受大型語言模型中上下文學習的啟發,Kumo Tabular 將帶標籤的表格視為提示,直接預測新行的標籤,從而消除任何權重更新的需求。

"給定一個帶標籤的行和你想要預測的行,Kumo Tabular 可在單次前向傳播中返回類別機率或數值預測。" – NVIDIA Kumo Tabular 發布公告

Kumo Tabular 的運作方式

Kumo Tabular 透過三個關鍵機制,將 Transformer 架構適應表格的內在結構:

  1. 單元嵌入 – 數值和分類值透過傅立葉特徵(學習頻率的正弦/餘弦)轉換。缺失值會獲得專用標記,每個上下文單元會與標籤嵌入配對。
  2. 行嵌入 – 兩個交替的注意力層捕捉欄位間分佈(欄位注意力)和行內特徵互動(行注意力)。每行有四個可學習的 [CLS] 標記作為最終的行表示。
  3. 上下文學習 – 一層頂級 Transformer 處理行嵌入:上下文行彼此關注,而查詢行僅關注上下文。測試-GQA 快取可減少每次查詢所需的計算量。輸出頭為分類產生類別機率,為迴歸產生 999 個分位數,從而提供點預測和不確定性估計。

長度感知注意力溫度

為在表格規模增長時保持注意力清晰,Kumo Tabular 使用鍵數量的對數來縮放 softmax 溫度,並採用頭特定的可學習係數。這確保了在預訓練期間見過的表格規模大數量級的表格仍能保持區分能力。

在人工表格上進行預訓練

Kumo Tabular 僅在由結構因果模型(SCMs)生成的合成表格上進行訓練:

  • 隨機因果圖定義隱變數和目標關係。
  • 節點透過多樣函數(線性映射、小型神經網絡、樹狀結構、高斯過程)實例化為數值或分類欄位。
  • 事後處理加入現實的缺陷——缺失模式、粗粒度特徵、重尾目標和高基數分類。
  • 使用快速樹集成檢查過濾掉缺乏可學習信號的表格。

訓練分為三個階段,上下文大小從 1,024 行(階段 1)擴展至最多 60,000 行(階段 3),同時保持欄位數 ≤ 100。三種模型規模——小型(28 M)、中型(≈ 100 M)、大型(215 M)參數——分別訓練了約 35 M、71 M 和 137 M 個合成表格。

基準測試表現

在統一的 RTX 6000 Pro 環境下評估,所有三種 Kumo Tabular 變體均超越現有的表格基礎模型和調優的梯度提升樹,在四個主要排行榜上表現優異:

  • TabArena – Kumo Tabular 取得最高的整體 ELO(1950),且運行速度比先前的最優解 LimiX-2 快 17 倍。
  • BeyondArena – ELO 為 1418,改進度分數為 7.78%,排名第一。
  • TALENT – 在分類準確率(6.67)、分類 log-loss(3.98)和迴歸 RMSE(4.22)方面取得平均最佳排名。
  • ScoringBench – Kumo Tabular-Large 和 Medium 在平均預測分佈排名上分別排名第一和第二。

結果顯示 Kumo Tabular 位於新的準確性-效率帕累托前沿,如附帶的基準圖所示。

局限性

  • 僅支援數值和分類欄位;其他模式(文字、影像、時間戳)必須預先處理為特徵。
  • 單次傳播推理最多可直接處理 10 個類別;更大的標籤空間需使用庫提供的錯誤校正輸出碼。
  • 在超出訓練範圍的表格上,或查詢行來自與上下文行不同分佈時,準確性可能下降。部署前務必在保留資料上進行驗證。

快速示範

NVIDIA 的 structured-data-models 庫提供 GPU 原生介面。以下 Python 片段將 pandas.DataFrame 轉換為 TableTensor,提供帶標籤的上下文行,並取得缺失標籤行的預測結果:

import sdm  # structured-data-models
import pandas as pd

# 將 CSV 載入 DataFrame 並在 GPU 上張量化
table = sdm.TableTensor.from_pandas(pd.read_csv('data.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'),
)

該庫在首次使用時會自動從 Hugging Face Hub 下載預訓練權重,並處理預處理、集成和多類擴展。

開始使用

Kumo Tabular 以 OpenMDW-1.1 許可證發布,允許商業使用。開發者應遵循 NVIDIA 的可信 AI 政策,在領域特定資料上驗證模型表現,並透過 GitHub 問題追蹤器報告任何品質、風險或安全問題。


致謝

作者感謝 David Holzmüller 提供的重要想法與消融實驗,以及 Vignesh Kothapalli 在實習期間的貢獻。

Sources