iT邦幫忙

2025 iThome 鐵人賽

DAY 12
0
生成式 AI

打造 AI 微調平台:從系統設計到 AI 協作的 30 天實戰筆記系列 第 12

[Day 12] 訓練效能紀錄與分析:四個模型的比較與優化

  • 分享至 

  • xImage
  •  

完整程式碼可在 GitHub 專案中找到:Finetune-30-days-demo / day-12


前面幾天,我們已經能做到:

  • Day 6:完整的日誌與結果管理(每次實驗自動建立目錄、保存 config、metrics、logs)
  • Day 9:最小實驗追蹤系統(將實驗結果寫入 DB,可查詢與比較)

但是光是能「記錄」還不夠。當實驗數量一多,如果不能比較不同模型與參數組合,我們就無法回答這些問題:

  • 哪個模型在這個任務上最有效率?
  • 增加學習率或訓練輪數真的能帶來更好結果嗎?
  • 如果 GPU 資源有限,我該選擇「快」還是「準」的配置?

因此,Day 12 的重點是:利用我們的 metrics.json 與資料庫,做效能紀錄與比較分析。


我們紀錄了什麼?

每次訓練完成後,系統會自動寫入一份 metrics.json,包含以下四類資訊:

  1. 訓練指標 (train)

    • 訓練時間(runtime)
    • 每秒處理的 token 數量(tokens/sec)
  2. 評估指標 (eval)

    • 準確率(accuracy)
    • 評估損失(loss)
  3. 系統資源 (system)

    • CPU 使用率(%)
    • 記憶體用量(GB)
  4. 訓練參數 (meta)

    • 模型名稱、資料集名稱
    • 訓練樣本數、批次大小、學習率、訓練輪數

這些資料會存進 SQLite DB,讓我們能進一步查詢與比較。


📊 四個模型的基礎比較

我們在相同參數下,測試了四個不同的模型:

模型 準確率 訓練時間 處理速度 特點
DistilBERT 85% 11.10 秒 5,765 tokens/sec ✅ 輕量快速,準確率表現不錯
RoBERTa 86% 22.17 秒 2,887 tokens/sec ✅ 準確率高,速度中等
ALBERT 62% 23.25 秒 2,753 tokens/sec ❌ 準確率偏低,收斂較慢
BERT Chinese 56% 20.01 秒 3,199 tokens/sec ❌ 適合中文,英文任務表現差

🔎 觀察

  • DistilBERT:效率最佳,速度快且準確率不低。
  • RoBERTa:準確率略勝 DistilBERT,但成本較高。
  • ALBERT / BERT Chinese:不適合這個英文任務。

模型優化策略

在基礎比較後,我們挑選了兩個「值得進一步優化」的模型:

  1. RoBERTa → 追求最高準確率

    • 增加訓練輪數(1 → 2)
    • 提高學習率(5e-4 → 1e-3)
    • 增加批次大小(2 → 4)
    • 增加 LoRA 容量(r=16, alpha=32)
  2. DistilBERT → 追求速度與效率

    • 減少 LoRA 容量(r=4, alpha=8)
    • 減少 dropout(0.1 → 0.05)
    • 提高學習率(5e-4 → 2e-3)
    • 增加批次大小(2 → 8)

🧪 優化後的結果

模型 優化前準確率 優化後準確率 優化前時間 優化後時間 處理速度 說明
RoBERTa 86% 91% 22.17 秒 39.77 秒 1,609 tokens/sec ✅ 準確率提升最多,但成本增加
DistilBERT 85% 81% 11.10 秒 10.92 秒 5,861 tokens/sec ⚡ 速度維持,準確率略降

分析與心得

  1. RoBERTa:適合追求準確率的場景

    • 準確率顯著提升(+5% → 91%),達到所有模型中的最佳。
    • 成本是更長的訓練時間與更低的吞吐量。
    • 適合科研或高精度應用。
  2. DistilBERT:適合追求速度與效率的場景

    • 優化後速度保持接近不變,吞吐量維持高水準。
    • 準確率略降,顯示模型已接近最優。
    • 適合快速原型或低延遲場景。
  3. ALBERT & BERT Chinese

    • 在這個英文任務表現不佳。
    • BERT Chinese 更適合中文語料;ALBERT 需要更多訓練才能收斂。

Day 12 的重點在於,系統不再只是單純紀錄結果,而是能透過 metrics.json 與資料庫進行系統化的比較分析。這讓我們能清楚地看出不同模型在準確率、速度與資源消耗上的差異,也讓「哪個模型適合哪種場景」有了明確依據。

更進一步,透過不同優化策略的實驗,我們看見了兩條清楚的路線:RoBERTa 代表了高準確率的追求,而 DistilBERT 則展現了高效率的價值。這樣的比較,不僅幫助我們在有限資源下做決策,也為接下來的部署策略選型打下了基礎。


上一篇
[Day 11] K8s 資源調度基礎:PodSpec 與 requests/limits
下一篇
[Day 13] 部署策略比較 — 用 FastAPI 部署自己的模型
系列文
打造 AI 微調平台:從系統設計到 AI 協作的 30 天實戰筆記15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言