在大型語言模型(LLM)的實際應用中,結構化輸出(Structured Output)的可靠性至關重要。所謂的結構化輸出,是指模型能嚴格按照指定的格式(如 JSON 或 YAML)以及特定的 Schema(結構定義)回傳資料。如果模型回傳的格式不正確,下游的自動化系統將無法解析資料,導致整個工作流崩潰。然而,許多現有的基準測試傾向於將此能力併入整體的推理或提取分數中,而忽略了單純的格式合規性。
Hugging Face 近期分享了一項實驗,探討如何透過極少量的數據與訓練步驟,顯著提升小型模型在結構化輸出上的表現。該實驗選用 Liquid AI 的 LFM2.5-350M 模型,並使用 GRPO 演算法在 IFStruct 基準測試上進行驗證。IFStruct 是一個專門設計用來測試 LLM 輸出有效性與 Schema 遵循能力的開源基準測試。
背景與基準測試
在開始微調之前,研究團隊首先對 LFM2.5-350M 基礎模型進行了基準測試。在包含 2,000 個樣本的 IFStruct 測試中,基礎模型的整體通過率僅為 22.6%。詳細分析顯示,JSON 格式的通過率僅 18%,而 YAML 則為 27.2%。常見的錯誤包括缺少必要欄位、項目數量錯誤、類型不匹配以及未正確關閉程式碼區塊。這證明了小型模型在面對複雜的結構化指令時,很容易出現格式崩潰或遺漏關鍵資訊的問題。
核心技術:GRPO 與 TRL 的應用
為了提升性能,研究團隊採用了 GRPO(Group Relative Policy Optimization,群組相對策略優化)。GRPO 是一種強化學習演算法,其核心在於不需要一個獨立的價值模型(Value Model)來估計狀態價值,而是透過對同一個提示詞生成一組多個輸出,並根據這些輸出之間的相對品質來計算優化方向,從而降低計算成本並提高訓練效率。
本次微調過程使用了 TRL 函式庫,並採取了以下技術路徑:
訓練數據與增強:使用約 500 個來自 Nemotron-RL 的樣本。為了彌補訓練集與測試集之間的差異,團隊對提示詞進行了增強,其中 40% 的樣本被要求將輸出放在程式碼區塊(fenced code block)中,另有 20% 被轉換為頂層陣列(top-level array)任務,以訓練模型對項目數量與列表格式的掌控力。
參數高效微調:由於 LFM2.5 採用了混合注意力與卷積架構,團隊使用了 LoRA(Low-Rank Adaptation,低秩適配)技術,僅針對特定的模組(如 q_proj, k_proj, v_proj 等)進行訓練。這次微調僅涉及約 600 萬個參數,僅佔原模型總量的 1.66%,極大地降低了硬體需求。
獎勵函數設計:這是 GRPO 的關鍵。團隊定義了三個量化獎勵函數,總分範圍在 0 到 1 之間: 第一是 JSON 格式獎勵,檢查輸出是否可解析且符合要求的形式(如是否正確使用程式碼區塊)。 第二是欄位數量獎勵,檢查頂層欄位的數量是否與預期完全一致。 第三是 Schema 驗證獎勵,根據 JSON Schema 檢查約束違規情況,並針對必要金鑰的覆蓋率給予部分分數。 最終,這三個獎勵以 1.0 : 0.5 : 2.0 的權重加權求和,導向模型學習最核心的 Schema 合規性。
訓練成效與實務意義
整個訓練過程非常精簡,僅執行了 100 個步驟,且每組提示詞生成 8 個候選答案。這種規模的訓練甚至可以在免費層級的 Google Colab 或 Kaggle GPU 上完成。
微調後的結果顯示,LFM2.5-350M 在 IFStruct 上的整體通過率從 22.6% 提升至 29.7%。最顯著的進步在於 JSON 格式的通過率,從 18.0% 大幅躍升至 31.9%,而 Bare List(純列表)的通過率則從 16.6% 提升至 29.7%。雖然這個分數仍低於規模大得多的 Qwen3.5-2B(33.15%),但它證明了針對特定任務的輕量級微調,能讓小型模型在結構化輸出能力上逼近大尺寸模型。
影響與限制
這次實驗的實務意義在於證明了「低成本、高精準」的獎勵信號可以快速修正模型的格式行為。對於開發者而言,不需要耗費海量數據進行全參數微調,只要定義好明確的格式檢查邏輯作為獎勵函數,就能顯著提升模型在生產環境中的可靠性。
然而,此方法仍存在限制。首先,提升主要集中在 JSON 格式,對於 YAML 等其他格式的提升並不明顯,這顯示獎勵函數的設計與訓練數據的分布對結果有直接影響。其次,雖然格式合規性提升,但模型在某些特定實體類型的提取上(如相機評論)表現依然不穩定。這意味著 GRPO 能解決「形式」上的問題,但若要提升「內容」的準確度,仍需要更高質量的指令微調數據或更複雜的推理訓練。
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。