法律標註微調小型 LLM 產出
把 3B SmolLM3 微調成法律標註專家,並建立可重跑的評估與分流流程。

81.7% 代表 3B SmolLM3 能在單一法律標註任務上勝過部分大型模型。
這篇給要把通用開源模型變成法律標註專用模型的開發者。照做完,你會拿到一個可用的 LoRA 微調模型、可重跑的評估腳本,以及一套把難例交給大模型的分流規則。
開始之前
訂閱 AI 趨勢週報
每週精選模型發布、工具應用與深度分析,直送信箱。不定期,不騷擾。
不會寄垃圾信,隨時可取消。
- Hugging Face 帳號與 access token。
- Python 3.10+、pip 23+。
- PyTorch 2.2+,CUDA 12.1 或更新版本。
- Transformers 4.40+、Datasets 2.19+、PEFT 0.11+、Accelerate 0.30+。
- 一台有 NVIDIA GPU 的主機,或可用的雲端 GPU 環境。
- 一份已標註的法律合約資料,格式可為 CSV 或 JSONL。
- 足夠磁碟空間可放 base model、adapter 權重與測試集。
Step 1: 定義單一法律標註任務
先把問題縮到小模型能學的範圍,避免一開始就碰廣泛推理。

選一個重複決策,例如合約條款標記、法務工單分流,或法律議題分類。把標籤數量控制在小而穩定的集合,並寫出輸入與輸出的明確定義。
例如,輸入是合約段落,輸出只能是固定標籤之一。若人工標註者對同一筆資料常常不一致,模型也很難學出乾淨規則。
你應該得到一份「任務規格書」,內容包含標籤清單、例子輸入,以及一個簡短驗收條件,例如「在保留測試集上對齊人工標籤」。
Step 2: 整理可訓練資料集
把資料整理成訓練時可直接讀取的格式,減少跑訓練時的額外清理。

先切分 train、validation、test 三份,去除重複樣本,統一標籤名稱,再把每筆資料轉成 prompt-response 配對。若採 JSONL,建議一行一筆,方便串流進訓練流程。
{"prompt":"Classify this clause: ...","response":"termination"}確認 validation 與 test 裡沒有訓練集看過的合約。你應該看到每個 split 的筆數統計,並且三份資料彼此沒有重疊。
Step 3: 下載基底模型並掛上 LoRA
這一步的產出是可訓練的基底模型設定,讓你只微調少量參數。
從小型開源模型開始,例如 SmolLM3,然後加上 LoRA adapter,只訓練低秩層。這樣能把成本壓在單張 GPU 可接受的範圍,也方便你反覆調整資料。
先登入 Hugging Face,再載入模型與 tokenizer,接著凍結 base model 的權重,只保留 adapter 可更新。訓練完只存 adapter 與 tokenizer,方便後續重用。
你應該看到模型成功載入、LoRA 層被插入,且輸出資料夾裡出現 adapter 權重檔。
Step 4: 啟動微調訓練
這一步的產出是一次完成的微調 run,以及可供比較的訓練紀錄。
用你熟悉的訓練框架啟動 fine-tuning,設定 batch size、learning rate、epoch 與 checkpoint 儲存策略。法律標註任務通常不需要很長訓練,重點是讓模型穩定學到標籤映射。
訓練時盡量保留驗證集評估,觀察 loss 是否下降、是否過擬合。你應該看到訓練日誌、最佳 checkpoint,還有一份 adapter checkpoint 資料夾。
Step 5: 跑保留測試與基準比較
這一步的產出是可直接對外說明的 scorecard,證明模型是否真的有用。
把保留測試集送進微調後模型,再用同一份測試集跑一到兩個大型基準模型,然後比較 exact-match accuracy 或 macro F1。原始案例中,3B SmolLM3 在 74 分鐘後達到 81.7%,高於 GPT-5.5 的 76.7% 與 Claude Sonnet 4.6 的 77%。
同時記錄品質與成本。小模型可能只在單一工作流上勝出,但那已足以支撐實務部署。你應該看到一份包含預測、分數與成本註記的比較表。
Step 6: 設定難例分流與監控
這一步的產出是可上線的 routing 規則,以及持續監控的清單。
先設一個信心門檻或簡單 fallback 規則。當小模型不確定時,把請求送到大型模型,並記錄兩邊結果。這樣常見案件走低延遲路徑,模糊案件則有保護網。
一開始保持 router 簡單即可,可用分數差、label entropy,或用歷史失敗樣本訓練一個二分類器。你應該看到大部分流量留在小模型,只有少數例外被升級處理。
| 指標 | 基準/優化前 | 結果/優化後 |
|---|---|---|
| 法律標註準確率 | GPT-5.5:76.7% | SmolLM3 微調:81.7% |
| 法律標註準確率 | Claude Sonnet 4.6:77% | SmolLM3 微調:81.7% |
| 訓練時間 | 未提供 | 74 分鐘 |
常見錯誤
- 標籤定義太寬。修法:只保留一個重複決策,先寫任務規格再訓練。
- 資料有重複或雜訊。修法:先去重、統一標籤名稱,並保留乾淨測試集。
- 沒有 fallback。修法:把低信心請求送去大型模型,並完整記錄升級原因。
接下來可以看什麼
下一步可以接 retrieval 讀取最新法規,或做量化與蒸餾,讓這個法律標註專家能在更小的硬體上部署。