成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用 GRPO 給 Text-to-SQL 模型裝上“推理引擎”,讓語言模型不只是生成代碼! 原創 精華

發布于 2025-6-4 09:02
瀏覽
0收藏

在人工智能的世界里,語言模型的智能程度越來越高,但如何讓它們真正理解并解釋自己的決策過程,依然是一個難題。今天,我們來聊聊一個非常有趣的話題:如何通過一種名為 GRPO(Guided Reward Policy Optimization,引導式獎勵策略優化)的技術,將一個普通的 7B 參數語言模型(Qwen2.5-Coder-7B-Instruct)變成一個能夠進行結構化推理的 Text-to-SQL 模型。

為什么 GRPO 是 Text-to-SQL 的完美選擇?

如果你對 AI 領域有所關注,可能已經聽說過 GRPO。這是 DeepSeek 提出的一種強化學習技術,主要用于訓練推理模型。而 Text-to-SQL 任務,簡直就是為 GRPO 量身定制的!

推理的重要性:SQL 不僅僅是語法

SQL 是一種結構化的邏輯語言,而不是簡單的語法組合。通過 GRPO,模型被鼓勵解釋為什么選擇某些表、連接或過濾條件,從而讓模型像人類分析師一樣“思考”,更貼近用戶的真實意圖。比如,當你問“上個月活躍用戶是誰”時,模型不能簡單地返回 ??SELECT * FROM users??,而是要解釋清楚為什么這么寫。

捕捉“沉默的錯誤”

沒有推理的模型可能會犯一些很微妙的錯誤。比如,問題明明是“上個月活躍用戶”,結果模型返回了一個看似正確的 SQL,但其實并沒有考慮到時間范圍。GRPO 的雙重獎勵系統(推理 + SQL)可以早期發現這些不匹配的問題。

小模型也需要“扶手”

對于像 7B 這樣的小模型來說,復雜的邏輯是一個巨大的挑戰。GRPO 就像是給模型裝上了“扶手”,通過獎勵連貫的逐步推理,懲罰不合理的輸出,即使 SQL 看起來沒問題,也能確保模型的邏輯是合理的。

透明性建立信任

如果模型能寫出“我使用了‘購買’表,因為問題問的是銷售情況”,那么調試和驗證就會變得容易得多。GRPO 把這種清晰性直接融入了訓練過程。

如何設計獎勵函數?

Text-to-SQL 推理的挑戰在于如何創建有效的獎勵函數,既能評估解釋的質量,又能確保生成的 SQL 是準確的。為此,我們設計了多部分獎勵函數,每部分都捕捉模型行為的一個關鍵方面。這些獎勵函數被用于通過 Unsloth 框架對 7B 模型進行微調。

用 GRPO 給 Text-to-SQL 模型裝上“推理引擎”,讓語言模型不只是生成代碼!-AI.x社區

獎勵函數詳解

  • 格式獎勵(soft_format_reward_func):權重 1.0。這個簡單的函數檢查輸出是否符合??<reasoning>...</reasoning><sql>...</sql>?? 的格式。如果匹配,返回完整的格式獎勵權重(默認 1.0),否則為 0。

用 GRPO 給 Text-to-SQL 模型裝上“推理引擎”,讓語言模型不只是生成代碼!-AI.x社區

  • 復雜度獎勵(complexity_reward):權重 0.6。這個獎勵確保生成的 SQL 的復雜度與標準答案(gold SQL)一致,避免過于簡單或過于復雜。如果沒有標準答案,復雜度在 [1.5, 8.0] 范圍內得 0.4 倍權重,否則得 0.1 倍權重。如果有標準答案,則使用高斯相似性計算,基于復雜度比值的對數。

用 GRPO 給 Text-to-SQL 模型裝上“推理引擎”,讓語言模型不只是生成代碼!-AI.x社區

  • 推理質量獎勵(reasoning_quality_reward):權重 0.7。這個獎勵函數評估模型生成的推理部分的質量,使用一系列啟發式規則來反映人類的分析性思維。獎勵由多個組件分數組成,包括推理長度、SQL 術語使用、結構清晰度、步驟指示和模式提及等。

用 GRPO 給 Text-to-SQL 模型裝上“推理引擎”,讓語言模型不只是生成代碼!-AI.x社區

  • 執行查詢獎勵(execute_query_reward_func):權重 1.2。這是最重要的獎勵,測試生成的 SQL 是否能夠實際運行并產生正確的結果。對于 SELECT 語句,如果執行成功得 0.3 倍權重,結果完全匹配得滿分。對于部分匹配,使用 Jaccard 相似性計算。對于 DML 語句(INSERT、UPDATE、DELETE),成功執行得 0.5 倍權重,需要大小寫修正得 0.4 倍權重。

在 GRPO 訓練中實現這些獎勵函數

以下是使用 Unsloth 設置這些獎勵函數的代碼示例:

from trl import GRPOConfig, GRPOTrainer

# 配置訓練參數
training_args = GRPOConfig(
    use_vllm=True,
    learning_rate=5e-6,
    per_device_train_batch_size=1,
    gradient_accumulation_steps=1,
    num_generatinotallow=8,
    max_prompt_length=256,
    max_completion_length=200,
    max_steps=250,
    output_dir="outputs",
    ...
)

trainer = GRPOTrainer(
    model=model,
    processing_class=tokenizer,
    reward_funcs=[
        soft_format_reward_func,
        execute_query_reward_func,
        reasoning_quality_reward,
        complexity_reward,
    ],
    args=training_args,
    train_dataset=dataset,
)

trainer.train()

系統提示應該明確指示模型使用推理:

你是一個將自然語言問題轉換為 SQL 查詢的 AI 助手。
給定數據庫模式和一個問題,生成正確的 SQL 查詢。

請嚴格按照以下格式回答,包括 <reasoning> 和 <sql> 標簽:
<reasoning>
逐步思考以理解數據庫模式和問題。
識別必要的表、列、連接和條件。
解釋構建 SQL 查詢的邏輯。
</reasoning>
<sql>
-- 你的 SQL 查詢
</sql>

評估獎勵系統的有效性

為了評估這些多維度獎勵函數的效果,我們使用了 LLM-as-a-Judge 方法,讓 GPT-4o-mini 作為專家評委,對微調后的模型在 SQL 準確性和推理質量上進行評估。

評估數據集包含 50 個隨機選擇的示例,評估維度包括四個關鍵方面,評分范圍為 1-5:

  • SQL 準確性:生成的 SQL 是否準確有效?
  • 推理質量:推理是否清晰、邏輯合理且引用了正確的模式?
  • 格式遵循:是否遵循??<reasoning>...</reasoning><sql>...</sql>?? 的格式?
  • 教育價值:是否有助于學習 SQL 概念?

評估提示如下:

作為一名 SQL 專家,請評估以下文本到 SQL 的轉換。每個維度的評分范圍為 1-5(1=差,5=優秀)。

數據庫模式:
{sample['sql_context']}

問題:
{sample['sql_prompt']}

標準 SQL(正確):
{sample['sql']}

模型輸出:
{sample['model_output']}

請按照以下格式提供評分:
SQL_SCORE: [1-5] - SQL 是否有效并產生正確結果?
REASONING_SCORE: [1-5] - 推理是否清晰、邏輯合理且引用了正確的模式?
FORMAT_SCORE: [1-5] - 是否遵循 <reasoning>...</reasoning><sql>...</sql> 格式?
EDUCATIONAL_SCORE: [1-5] - 是否有助于學習 SQL?
OVERALL_SCORE: [平均分]
EXPLANATION: [簡要說明優缺點]
ERROR_TYPE: [none/syntax/logic/format/other]

評估結果

經過微調的 Qwen2.5-Coder-7B-Instruct 模型在僅使用 300 個示例進行訓練、250 步訓練后,取得了令人滿意的結果:

  • SQL 準確性:44/50 的輸出得分在 4 或 5 分,表現出色。
  • 推理質量:48/50 的輸出得分在 4 或 5 分,推理清晰且邏輯合理。
  • 格式遵循:49/50 的輸出得分達到 5 分,格式幾乎完美。
  • 教育價值:模型輸出對學習 SQL 概念有明顯幫助。

總體來看,88% 的輸出得分在 4.0 或以上,顯示出模型在結構化推理和可解釋性方面的一致性和可靠性。

用 GRPO 給 Text-to-SQL 模型裝上“推理引擎”,讓語言模型不只是生成代碼!-AI.x社區

用 GRPO 給 Text-to-SQL 模型裝上“推理引擎”,讓語言模型不只是生成代碼!-AI.x社區

結語

通過推理獎勵函數,模型在微調過程中表現出了可靠的性能和一致的結果。你可以探索完整的實現代碼,并親自嘗試。源代碼已經開源,可以在 GitHub 上找到。

參考

??https://github.com/yai333/Text-to-SQL-GRPO-Fine-tuning-Pipeline/tree/main??


本文轉載自??Halo咯咯??    作者:基咯咯


?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
已于2025-6-4 09:02:52修改
收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 欧美久久一区 | 秋霞电影一区二区三区 | 青青久久久 | 久久曰视频 | 亚洲天堂影院 | 久久91| 日本激情视频中文字幕 | 日韩精品在线看 | 伊人久久在线 | 欧美日韩国产不卡 | 四虎永久免费黄色影片 | 成人网av | 国产精品久久久久久久久久久免费看 | 免费在线观看av网址 | 亚洲综合无码一区二区 | 中文在线一区二区 | 网站黄色av | 中国大陆高清aⅴ毛片 | 一级a性色生活片久久毛片 一级特黄a大片 | 一区二区手机在线 | 久久国产精品久久久久久 | 国产免费一区二区三区免费视频 | 国产精品久久久久久久久久99 | 999精品视频 | 黄色成人免费在线观看 | 亚洲 欧美 日韩在线 | 一区二区在线看 | 久久国产日韩欧美 | 亚洲黄色av | 欧美aaa一级片 | 精品美女在线观看视频在线观看 | 91精品国产综合久久久久久 | 日韩第一夜 | 国产亚洲一区二区在线观看 | 天堂资源最新在线 | av中文字幕在线 | 中文字幕在线观看一区 | 久久久性色精品国产免费观看 | 97avcc| 亚洲二区在线 | 成人av电影免费在线观看 |