iT邦幫忙

2026 iThome 鐵人賽

DAY 29
0
AI Engineering

《30天打造 Tool-Calling Agent:從 MDP 理論到 DPOTrainer 實戰訓練》系列 第 29 篇

Day29 打造資料飛輪:收集 Bad Case、模擬 RLAIF 與持續對齊 (Continuous DPO)

  • 分享至 

  • xImage
  •  

今天我們要進行資料飛輪與持續微調 (Continuous DPO)。

資料飛輪

借鑒了商業管理中的「飛輪效應」,在 AI 領域,它指的是一個自我強化的數據循環系統

Continuous DPO

將這個微調過程從「單次、靜態的出廠設定」轉變為「動態、線上的持續疊代」

系統不會等到收集了幾百萬筆資料才進行一次大改版更新,而是在模型上線運作的同時,持續接收新的偏好數據,並以小批次、高頻率的方式對模型進行 DPO 訓練。


實作流程

1. 蒐集維護人員對Agent的修正 (Day28最後步驟)

{"prompt": "你剛剛問的問題...", "chosen": [{"action": "正確的工具", ...}], "rejected": [{"action": "錯誤的工具", ...}]}

這就是標準的 Preference Dataset(偏好資料集),明確告訴模型:「以後遇到這個 prompt,請選擇 chosen 的做法,千萬不要再做 rejected 的行為了。」

2. 啟動資料飛輪 (Data Flywheel)

既然有了新偏好資料,我們就要讓模型「記取教訓」。
1. 資料載入:寫一段簡單的 Python 腳本,把 dpo_dataset.jsonl 轉換成 Hugging Face 的 Dataset 格式。
2. 載入當前模型:載入你目前正在使用的 DPO Agent 模型權重。
3. 微量更新 (Few-shot Continuous Training):因為我們只是要修正幾個特定的邏輯錯誤,不需要跑幾千步。設定很小的 Learning Rate,大概跑個 50 到 100 steps 即可,這樣訓練時間很短,幾分鐘就能看完結果。


但我實作後,遇到資料飛輪沒有發揮預期效應的問題。
我認為有可能是:

1. 微調劑量不足

為了追求「線上動態更新」的高效性,我們在設計資料飛輪時,通常會設定極小的 Learning Rate,並只跑短短的 50 到 100 steps。
這種「微量更新 (Few-shot Continuous Training)」對於修正語氣或簡單邏輯很有效,但如果遇到模型根深蒂固的先驗知識,就很難調整。在沒有足夠的 step 數和梯度下降累積下,模型的權重根本還來不及發生質變,飛輪的成效自然不明顯。

2. 偏好資料集 (Preference Dataset) 的「對比銳利度」不足

DPO 的核心在於 chosen 與 rejected 的對比。如果我們收集維護人員的修正時,rejected 的軌跡寫得不夠具體,模型在計算 Loss 時就抓不到重點。
要讓飛輪發揮作用,Preference Data 必須精準描述。


Summary

本次實驗不如預期的經驗反而給了我最寶貴的實戰教訓:資料飛輪不是萬靈丹。

一個成功的 Agentic 系統,需要「高質量的偏好資料」、「合適的微調超參數」以及「強健的工具防呆機制」三者緊密咬合。


上一篇
Day28 擴充 Streamlit 實作軌跡檢視器與人工除錯介面
下一篇
Day30 從 SFT、RLHF 到 MLOps 完整旅程總結與未來展望
系列文
《30天打造 Tool-Calling Agent:從 MDP 理論到 DPOTrainer 實戰訓練》 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言