VIP 專屬 資料處理與評測 實戰

建立團隊的評測平台:從腳本到基礎設施

每個人各跑各的腳本,分數無法比較。這是評測平台的最小可行設計。

資料處理與評測教程封面

評測從個人腳本演進成團隊基礎設施,通常發生在第三個人問「你那個 91% 是怎麼算的」的時候。此時需要的是統一的執行環境、統一的資料版本、統一的報告格式。

四個核心元件

  1. 資料集註冊表:每個評測集有唯一 id 與版本,內容不可變。
  2. 執行器:統一的入口,固定隨機種子與參數,輸出標準格式。
  3. 結果儲存:每次執行的完整結果與 metadata,可查詢可比較。
  4. 報告:對照基準線、標示顯著差異、列出退步的案例。

執行紀錄的欄位

{
  "run_id": "ev_20260829_1042_a83f",
  "dataset": {"id": "ticket_cls", "version": "v7", "sha256": "3c9a…", "n": 240},
  "subject": {"type": "prompt", "name": "classify_log", "version": "v5",
              "model": "qwen3-8b@2026-05", "temperature": 0},
  "metrics": {"accuracy": 0.913, "macro_f1": 0.874,
              "format_valid": 1.0, "abstain_rate": 0.042},
  "cost": {"total_usd": 0.41, "in_tok": 182340, "out_tok": 9120},
  "per_case": "s3://evals/ev_20260829_1042_a83f/cases.jsonl",
  "git_commit": "a1b2c3d", "started_by": "alice", "duration_s": 214
}

逐題結果一定要存

只存彙總分數是最常見的錯誤。真正有價值的分析是「這次改動讓哪幾題從對變錯」,這需要逐題結果才做得到。

def diff_runs(run_a, run_b):
    a = {c['id']: c['correct'] for c in load_cases(run_a)}
    b = {c['id']: c['correct'] for c in load_cases(run_b)}
    regressed = [i for i in a if a[i] and not b.get(i)]
    fixed     = [i for i in a if not a[i] and b.get(i)]
    return {'regressed': regressed, 'fixed': fixed,
            'net': len(fixed) - len(regressed)}

接進 CI

  • 提示檔或模型設定變更時自動觸發評測。
  • 結果貼回程式碼審查頁面,含與主幹的對照。
  • 退步超過門檻時標記為需要人工確認,而不是直接擋掉——有時退步是可接受的取捨。

成本控制

評測本身會花錢。做法:日常 CI 跑「快速集」(50 題),合併前跑「完整集」(500 題),發布前跑「完整集 + 保留集」。三個層級的成本差一個數量級。

讓結果可被搜尋

平台要能回答「這個資料集上歷史最佳的設定是什麼」「這個模型在所有資料集上的表現如何」。這種橫向查詢是個人腳本做不到的,也是平台的主要價值。

第一版不要做網頁介面。命令列工具加上結果寫入資料庫、報告輸出成 Markdown,已經能解決八成問題,兩天就能做完。
🔒

訂閱後繼續閱讀全文

本篇為訂閱者專屬內容。訂閱後可取得下列權限:

  • 解鎖全部內容權限
  • 閱讀不限篇數
  • 全站移除廣告
月卡
NT$240
開通 30 天
一次付清,開通 30 天
季卡
NT$620
開通 90 天
一次付清,開通 90 天,每天約 NT$7
年卡
NT$2,160
開通 365 天
一次付清,開通 365 天,每天約 NT$6

一次性付款,付款成功後立即開通,到期自動結束,不會再次扣款,也不需要取消訂閱。

立即訂閱

金額均為新臺幣(TWD),即實際扣款金額,不另收手續費
支援信用卡 · Apple Pay · Google Pay · WebATM · ATM 轉帳
購買須知與退款政策