arXiv 2025 · 論文導讀

Databricks-RLVR-32B

用一套「精簡、通用」的 RLVR 訓練配方(模型/prompt 選擇 → TAO 離線暖身 → 線上 RLVR → self-consistency),不靠額外資料、不靠閉源大模型,在 BIRD 私有測試集衝上 SOTA:單次呼叫 73.56%、self-consistency 75.68%,而且生成次數更少。

RLVR TAO 離線 RL GRPO+ Self-Consistency Text-to-SQL BIRD Benchmark Qwen2.5-32B-Coder

The Databricks Mosaic Research and Genie Teams(Alnur Ali、Ashutosh Baheti、Jonathan Frankle、Dipendra Misra、Matei Zaharia、Yue Zhang 等)· Databricks · arXiv:2509.21459

SECTION 01

問題定義 — 為什麼企業需要「客製化推理模型」

現成 LLM 在通用任務上表現亮眼,但碰到企業內部的「組織專屬知識」就會卡住。這篇報告主張:用 可驗證獎勵的強化學習(RLVR) 把模型後訓練成一個專精的推理模型,並以 text-to-SQL 當作可量化的代理任務來驗證。

論文開門見山指出,off-the-shelf LLM 在 bespoke 企業任務上有幾個固定痛點:不懂組織專屬術語(例如「churned users」每家公司定義不同)、不知道內部偏好(某些查詢一定要用特定欄位排序)、不會用內部的 API/工具、也不知道資料放在哪。和數學題不同,這些組織知識在網路上往往受保護、樣本稀少,預訓練資料根本沒涵蓋。

要補這個知識落差,方法之一就是後訓練(post-training)。對資料科學與寫程式這類任務,常常可以算出一個可驗證的獎勵(verifiable reward):不需要另外訓練 reward model,本身就是客觀的品質指標。以 text2sql 為例,只要把模型產生的 SQL 拿去資料庫執行,再跟 gold SQL 的執行結果比對,就能得到 0/1 的對錯訊號 —— 這正是 RLVR 的甜蜜點。

核心主張:不需要精雕細琢的 agentic pipeline、不需要巨量自製訓練資料、也不需要閉源模型。一套「簡單但完整」的 RLVR 配方,就能把單一開源模型訓練到 text-to-SQL 的 state-of-the-art。

論文的四個貢獻

① 首投即 SOTA

第一次送交 BIRD leaderboard 就在私有測試集拿下單模型類別的 state-of-the-art:單次呼叫 73.56%、self-consistency 75.68%

② 簡單通用的配方

模型/prompt 選擇 → TAO 離線暖身 → 線上 RLVR → self-consistency。沒有任何 BIRD train set 以外的資料,也沒用 proprietary 模型。

③ 更好的泛化

dev 70.80% → test 73.56%,從 dev 到 private test 幾乎不掉分,泛化能力比其他頂尖投稿更穩。

④ 更省的推理

self-consistency 只用 7 次生成 就贏過第二名(需要 8–32 次),算力效率更高。

一個反直覺發現:在 BIRD 這個任務上,GPT-4o、O3、Claude Sonnet 等閉源模型,竟然打不過 Qwen 與 Llama 系列的開源模型。這挑戰了「閉源一定比較強」的普遍認知,作者把深入探究留給 future work。

SECTION 02

方法論 — 選對地基、定好獎勵

在開始訓練之前,作者先做兩件「便宜但關鍵」的事:把基底模型與 prompt 選對,並把 verifiable reward 定義成最貼近評測指標的形式。

2.1 模型與 Prompt 選擇

作者在 BIRD dev 上掃過一整排開源與閉源模型、配上不同 prompt。結論是 Qwen 2.5 32B Coder Instruct 的 dev 表現最佳,這也和文獻中 OmniSQL 研究回報的最佳結果一致。於是它被選為後續 RLVR 的基底模型。

Prompt 方面以 OmniSQL prompt 為起點,但做了兩個重要修改:

為什麼推理 trace 重要:整個 pipeline 把 LLM 當成 reasoning model 使用 —— 先產生一段包含推理的 trace,再用 delimiter 把最終 SQL 從 trace 中抽出來。引進 reasoning,RLVR 能提升模型效能的空間就大很多。

為什麼「引進 reasoning,RLVR 能提升模型效能的空間就大很多」?可以從 RLVR 的運作機制拆成三點來看:

2.2 可驗證獎勵(Verifiable Reward)

獎勵定義刻意保持簡單,TAO 與 RLVR 兩階段共用同一個:直接拿 BIRD 的 0-1 執行比對指標,再對「語法錯誤、無法執行」的 SQL 加上 −1 的懲罰。

reward(y) =
   +1  若 execute(y) 的結果 == execute(gold) 的結果
    0  若執行成功但結果不符
   −1  若 y 是語法錯誤、無法執行的 SQL
y = 模型產生的 SQL;gold = 標準答案 SQL;獎勵直接等於評測指標再加上一個 −1 懲罰項

作者特別提到:他們嘗試過 reward shaping(更花俏的獎勵設計),但在初步實驗中沒有帶來顯著提升,所以維持這個極簡形式。這呼應了 RLVR 的一個精神 —— 獎勵越接近真實評測目標越好。

SECTION 03

訓練流程 — TAO 暖身 + 線上 RLVR

這是論文的核心配方:先用離線 RL(TAO)給模型一個好的 inductive bias 暖身,再用線上 RLVR 精修,最後在推理時加上 self-consistency。三段是互補的。

先把三個關鍵詞講清楚

RL 後訓練(post-training)

不像監督式微調直接給「標準答案」要模型模仿;RL 後訓練讓模型自己生成,再依好壞給一個分數(reward),然後調整權重 —— 讓高分輸出更容易出現、低分更不容易。模型是從「自己試、被打分」中學,而不是背答案。

可驗證獎勵(verifiable reward)

分數不是另外訓練一個 reward model 來「猜」好壞(那會貴、又可能被鑽漏洞),而是直接拿客觀事實當分數:把 SQL 執行、跟 gold 結果比對。獎勵即真相 —— 所以特別適合 SQL、數學、寫程式這種「能跑、能驗證」的任務。

GRPO 與 KL「韁繩」

底層用 GRPO:同一題取樣多個回應,用「比同組平均好多少」當更新訊號。KL-divergence 項像一條韁繩,把微調後的模型拉住、別離原模型太遠以免崩壞;本文發現這條韁繩可放很鬆、甚至拿掉,效能也不太掉。

離線(TAO)vs 線上(RLVR)—— 為什麼兩段都要

兩階段最大的差別,在於「訓練資料是否跟著模型一起更新」:

TAO = 離線 RL(先暖身)

先用當前模型對每題生成一批回應、算好 reward,存成一份固定的資料集,再在這份「快照」上做 RL 優化。資料不隨訓練即時更新,所以較便宜、較穩定,適合快速給模型一個好的起手式(inductive bias)。整個流程可重複多輪。

RLVR = 線上 RL(再精修)

邊訓練邊即時不斷變強的模型取樣新回應、即時算 reward、即時更新 —— 訓練資料永遠跟著最新的 policy 走。訊號更貼切、效能上限更高,但也更貴、更吃調參。本文把它疊在最佳 TAO 模型之上。

策略上就是:先用便宜穩定的離線 TAO 暖身、給好的 inductive bias,再用更強的線上 RLVR 把效能往上頂,最後在推理時用 self-consistency 多投幾票收尾。每一段都建立在前一段的成果上。

BIRD Train Set query + schema + gold SQL LLM  Pθ Qwen2.5-32B-Coder 取樣 k 個 y₁ … yₖ 執行並比對 vs gold SQL 可驗證獎勵 +1 / 0 / −1 用獎勵更新模型 ① TAO 離線 RL 暖身:給好的 inductive bias warm start ② 線上 RLVR GRPO+ · 低 LR · 低/零 KL 更新 θ ③ 推理時 Self-Consistency 產生 7 個回應 · 無參數加權多數決
圖 1 · RLVR 微調 pipeline(依論文 Figure 1 與第 3 節重繪)

TAO 離線暖身(Test-time Adaptive Optimization)

TAO 是 Databricks 提出的離線 RL 方法,目的是替後續 RLVR「暖身」、給模型一個好的 inductive bias。單一輪 TAO:對每個 BIRD 訓練點用當前模型生成多個回應 → 用上面的 verifiable reward 算分 → 在收集到的資料上做離線 RL 優化。這個流程可重複多輪。

線上 RLVR(在最佳 TAO 模型之上)

用 Databricks 的 fine-tuning 服務做線上 RLVR。掃超參數後發現:較低的 learning rate較低的 KL-divergence 係數 較理想;甚至完全移除 KL 項也不太傷效能,呼應近期文獻。底層基於 GRPO,並加上數項改良 —— 讓訓練聚焦在困難題、避免 reward 飽和。

推理時 Self-Consistency

在微調後的模型上,產生 7 個 回應,用一個無參數的加權多數決挑出最一致的答案。RLVR 與 self-consistency 的增益是互補的。

一個工程上的取捨:作者只做「有限度」的 TAO 訓練。原因是初步實驗顯示 —— TAO 過度訓練反而會讓後續線上 RL 階段的整體增益變小。換句話說,暖身要適可而止,把空間留給線上 RLVR。

SECTION 04

資料集 — BIRD Benchmark

所有訓練與評測都只用 BIRD 這一個 text-to-SQL benchmark,刻意不引入任何額外資料,藉此凸顯「是 RL 在扛重活,而不是資料工程」。

Train

9,428

訓練樣本

Dev

1,534

用於選模型/調超參

Test

1,789

私有、不公開

評測

0/1

執行結果比對

每一筆 BIRD 資料點包含:使用者的自然語言 query、提供額外說明的 evidence 欄位、一個含多張表的 database,以及代表正確答案的 gold SQL。作者把 query 與 evidence 合併成一個統一的使用者查詢餵給模型。

評測指標是嚴格的 0-1 執行比對:把 gold SQL 與生成 SQL 都在資料庫上執行,輸出相符記 1、不符記 0。測試集不公開,因此能避免資料污染(contamination)與 benchmark hacking 的疑慮 —— 這也是為什麼「dev → test 幾乎不掉分」特別有說服力。

為什麼 text2sql 難:挑戰在於要在「複雜資料庫的脈絡」下理解查詢 —— 表很多、欄位很多、欄名可能有歧義、正確的欄位值要去資料裡找、還可能需要 join 多張表才能回答問題。

SECTION 05

實驗結果 — 從基底到 SOTA

先看「沒有 test-time compute」的結果,再看加上 self-consistency 的結果。兩張 leaderboard 表都顯示 Databricks-RLVR-32B 拿下測試集第一。

5.1 起點:各家 vanilla LLM 在 BIRD dev 的表現

下圖是論文 Figure 2 的重繪。亮點是:開源的 Qwen 2.5 Coder(32B)以 64.80 拿下 vanilla 第一,而 GPT-4o、O1、O3-mini、Claude Sonnet 等閉源模型(橘色)反而落後。這直接支撐了論文「閉源不一定更強」的反直覺發現,也解釋了為何挑 Qwen 當基底。

20 40 60 0 Qwen2.5 Coder 32B ★ 64.80 GPT-4o 63.82 Llama 3.1 70B 63.43 Llama 3.3 70B 63.43 O1 62.39 O3-mini 62.39 Qwen QwQ 32B 60.82 Qwen 3-32B 60.50 Gemma 3 27B 60.43 Claude Sonnet 59.26 GPT-4o-mini 58.28 DeepSeek R1 Dist. 70B 57.95 Gemma 3 12B 52.93 Llama 3.1 8B 41.92 Gemma 3 4B 34.75 Gemma 3 1B 4.76 所選基底 閉源模型 開源模型 BIRD dev · greedy decoding(O1 / O3-mini 為 temperature decoding)
圖 2 · 各家 vanilla LLM 在 BIRD dev 的執行準確率(依論文 Figure 2 重繪,數值為論文原值)

5.2 配方的累積增益

把基底一路堆上去:Qwen 基底 dev 64.80 → 加 TAO 67.40 → 加 RLVR(完整模型)dev 70.80 / test 73.56 → 再加 self-consistency test 75.68。每一段都帶來真實增益。

20 40 60 0 64.80 Qwen 基底 dev 67.40 + TAO dev 70.80 + RLVR dev 73.56 + RLVR test ★ 75.68 + SC test ★ BIRD 執行準確率(%)· 灰/藍/綠為 dev,橘為 private test(SOTA)
圖 3 · 訓練配方的累積增益(整理自論文 Table 1、Table 2 與摘要;dev 與 test 為不同切分,僅作趨勢對照)

5.3 Table 1 — 不用 self-consistency(單模型、單次呼叫)

這個類別名稱在講什麼?它界定了一個投稿「用多少機器、花多少推理算力」:

單模型(single-model):整個系統就是一套權重的單一模型(這裡是 TAO + RLVR 微調後的 Qwen2.5-32B-Coder)。排除 ensemble、以及串接多個不同模型/agent 的 pipeline(例如另外接 schema-linker、generator、candidate-selector)。

單次呼叫(single-call):每題只做一次 LLM 生成就產出最終 SQL。沒有任何 test-time compute —— 不做 self-consistency、不取樣投票、也沒有多輪 agentic 重試。這量測的是模型最純粹的「一次到位」能力。

對照 §5.4 的 Table 2:一樣是單模型,但加上 self-consistency(生成 7 個回應、用無參數加權多數決挑答案),所以多了「回應數」欄位,分數也從 73.56% 推到 75.68%,代價是更多推理算力。

Table 1 · BIRD leaderboard,單模型單次呼叫類別;準確率為執行 exact-match(dev / test)
ModelDev setTest set
Databricks-RLVR-32B(本文)70.8073.56
Qwen2.5-32B-Coder-Instruct + TAO(本文)67.40
Qwen2.5-32B-Coder-Instruct(基底)64.80
Arctic-Text2SQL-R1-32B70.4771.83
Arctic-ExCoT-70B68.5168.53
Command A63.4965.68
OneSQL-v0.1-Qwen-32B64.6063.33
SuperSQL58.5062.66
SFT CodeS-15B58.4760.37

重點:完整模型拿下單次呼叫類別的測試集第一(73.56%)。值得注意的是 只做有限度 TAO 就已達 67.40% —— 在投稿當下,這個數字按 dev 排名已可進 leaderboard 前 10。

5.4 Table 2 — 加上 self-consistency(單模型類別)

Table 2 · BIRD leaderboard,單模型類別 + self-consistency;「回應數」分箱:few(1–7)、many(8–32)、scale(>32)
ModelDev setTest set回應數
Databricks-RLVR-32B(本文)75.687
Sophon-Text2SQL-32B72.4374.798–32
Arctic-Text2SQL-R1-32B72.2073.841–7
Arctic-Text2SQL-R1-14B71.4072.221–7
SIFT-32B70.0870.93>32
CrazyData-Text2SQL-32B70.718–32
Infly-RL-SQL-32B70.0870.601–7
Arctic-Text2SQL-R1-7B70.7070.431–7
XiYanSQL-QwenCoder-32B67.0169.031–7

更省也更強:Databricks-RLVR-32B 以 75.68% 拿下測試集第一,而且只用 7 次生成,比第二名 Sophon(8–32 次)省下可觀算力。論文強調:RLVR 與 self-consistency 的增益是互補的 —— RLVR 先把單次能力拉滿,self-consistency 再疊加邊際收益。

SECTION 06

生成範例 — 模型在想什麼

附錄列出幾個模型生成樣本。最有意思的是模型會「先寫一版、再自我優化」,以及一個典型的失敗模式。以下節錄自論文附錄。

範例 A(成功):模型自我修正、優化掉一個 JOIN

問題:在 race 為 god/eternal 的 superheroes 中,有幾位是男性?
Evidence:race「god/eternal」對應 race_id = 21;male 對應 gender.id = 1資料庫:superhero

模型先依「字面」寫出一版 join 三張表的查詢:

SELECT COUNT(*)
FROM superhero AS h
JOIN race AS r ON h.race_id = r.id
JOIN gender AS g ON h.gender_id = g.id
WHERE r.race = 'God/Eternal' AND g.gender = 'Male';

接著它讀懂了 evidence,發現可以直接用 race_id = 21 省掉對 race 表的 join,主動改寫成更精簡的版本:

-- 用 evidence 給的 race_id 直接過濾,省掉一個 JOIN
SELECT COUNT(*)
FROM superhero AS h
JOIN gender AS g ON h.gender_id = g.id
WHERE h.race_id = 21 AND g.gender = 'Male';

為什麼這個範例有代表性:它展示了 RLVR 訓練出的「推理 → 自我修正」行為 —— 模型不只翻譯,還會回頭利用 evidence 把查詢優化得更穩健。

範例 B(失敗):張冠李戴 + 忘記 DISTINCT

問題:卡牌「Ancestor's Chosen」的德文 type 是什麼?資料庫:card_games

SELECT fd.type
FROM cards c
JOIN foreign_data fd ON c.uuid = fd.uuid
WHERE c.name = 'Ancestor''s Chosen' AND fd.language = 'German';

論文點出兩個錯誤:(1) 模型取的是 foreign_data 表的 type,而非 cards 表的 type —— 兩者名稱相近但值不同,造成混淆;(2) 忘了對回傳值套用 DISTINCT。這正是 text2sql 在「欄名歧義 + 多表脈絡」下的典型陷阱。

SECTION 07

限制與未來工作

這是一份技術報告(technical report),定位是「展示 Databricks 的 RLVR/TAO 微調服務」,因此在實作細節(服務內部的 RLVR 改良)上有所保留。以下整理作者明確點出的限制與開放問題。

限制 1 — BIRD 只是 proxy:作者反覆強調 BIRD 只是企業任務的「代理任務」。真正的價值主張是「這套配方很簡單、因此可廣泛套用到 BI、資料科學、coding 等企業領域」,但報告本身只在 BIRD 上驗證。

限制 2 — 閉源為何落後仍是謎:「proprietary LLM 在此任務上表現不如 Qwen/Llama」是個反直覺觀察,作者明說把深入探究留給 future work,沒有給出機制性解釋。

實作細節保留:RLVR 服務在 GRPO 之上的「聚焦困難題、避免 reward 飽和」等改良只有概念性描述;TAO 的具體優化式、超參數掃描範圍也未完整公開。沒有公開的程式碼倉庫,方法將整合進 Databricks 的 Agent Bricks 產品。

一句話總結

這篇報告的訊息很乾脆:在能算出可驗證獎勵的任務上,與其堆砌複雜 agentic pipeline 或巨量自製資料,不如把「選對基底 + 簡單獎勵 + TAO 暖身 + 線上 RLVR + 輕量 self-consistency」這套配方做扎實 —— 單一開源 32B 模型就能在 text-to-SQL 拿下 SOTA,而且更省算力、泛化更穩。