核心觀點

Hugging Face 以一個很務實的實驗回答「小模型能不能可靠吐出符合 schema 的資料」:用 TRL 的 GRPO,只以約 500 筆資料、100 個訓練步驟,微調 350M 參數的 LFM2.5-350M。官方在相同 llama.cpp/BF16 serving 設定下,IFStruct 結構化輸出基準從 22.6% 提升至 29.7%。^[raw/articles/huggingface-grpo-with-trl-ifstruct-2026-09-03.md]

這不是宣稱模型已足以無條件進入資料管線;七成測試仍未通過。它的價值在於證明:當失敗可被明確驗證,針對「格式正確」而非泛泛「回答更好」設計獎勵,小模型可用低成本取得可量測的可靠性改善。這也具體補強 Fine-tuning 與 LoRA:LLM 參數高效微調技術 對「固定 JSON schema 與格式」適合微調的判斷。

方法:把格式規格變成獎勵訊號

訓練資料帶有 prompt、目標 JSON Schema 與預期欄位數;為對應真實指令差異,40% 樣本加入 fenced code block 要求,另有 20% 改成必須輸出最上層陣列及指定項數。LoRA 僅訓練約 600 萬參數(約全模型 1.66%),因此可在免費層 16 GB GPU 完成。^[raw/articles/huggingface-grpo-with-trl-ifstruct-2026-09-03.md]

GRPO 每個 prompt 產生一組候選,再依相對獎勵更新策略。本文不是依主觀偏好評分,而是組合三種機械可驗證的訊號:輸出是否可解析且符合 raw/fenced 要求、最上層欄位數是否正確、以及是否通過 JSON Schema validation;權重則把 schema 驗證設為最高。這與 DPO 超越對話模型:消除結構化生成任務的文本退化 的共同點是把「明確失敗」保留為訓練訊號,差別在於 DPO 用成功/失敗偏好對,GRPO 直接以可分解的 reward 優化多個結構條件。

成果怎麼讀

改善並不平均:JSON 通過率 18.0% → 31.9%(+13.9 個百分點),bare-list 遵循 16.6% → 29.7%(+13.1),YAML 則幾乎不動(27.2% → 27.5%)。這吻合訓練資料刻意補強 JSON、code block 與 top-level array 的設計,也提醒我們不能將總分提升外推成「所有格式都變可靠」。^[raw/articles/huggingface-grpo-with-trl-ifstruct-2026-09-03.md]

仍最常見的錯誤是 required field 缺失,表示解析成功不等於 schema 完整;模型若要接生產 API,仍應採取輸出端 JSON Schema 驗證、重試或修復迴圈。IFStruct 的 29.7% 也低於文章引用的 Qwen3.5-2B 33.15%,因此較好的結論是:特化訓練可提升既有小模型,而不是以少量步數保證取代較大的強基線。

實務意義

適用場景是表單擷取、工具呼叫參數、OCR 後處理、固定欄位報告等「可自動判錯」任務。先把 schema validation、欄位數、型別與包裝格式寫成評測,再針對真實失敗分布蒐集資料;若 prompt/constrained decoding/驗證重試已足夠,未必需要微調。若它們仍常失敗,這個配方提供一條可負擔的候選路徑:小規模 LoRA + 針對失敗模式的 GRPO,並在獨立測試集上比較成本、延遲與通過率。

相關頁面

反向連結

以下頁面引用了本頁: