⚠️ 視覺評測的分數會上升。mmbench、mmstar、mmmu、pope、vistw_mcq都受 #166 修復影響,與舊版分數不可直接比較,請重跑基準。
新增:VisTW 繁體中文台灣在地視覺評測
arXiv 2503.10427,NTU MiuLab,CC BY 4.0。本專案第一個繁中視覺評測 —— 既有的 MMBench、MMStar、MMMU、POPE 全是英文或簡體中文為主。
| 子集 | 內容 | 評測方法 |
|---|---|---|
| MCQ | 21 學科圖片選擇題 | 沿用既有 vision_mcq |
| Dialogue | 開放式問答,LLM judge 0–10 分 | 新增 vistw_dialogue + vistw_judge |
Dialogue 採兩階段設計(生成 → 評分),兩階段都走既有的 evaluator 路徑,evaluator 未改動。好處是 judge 呼叫仍然並行,且換 judge 重評不必重跑生成。
🔴 修復:VisionMCQExtractor 抓不到「答案: $A」
官方 VisTW 的 prompt 教模型輸出「答案: $字母」,模型照抄那個 $,我們抓不到。
更嚴重的是:抓不到之後會退而用較寬鬆的 pattern 抓到推理文字中的其他字母,把正確作答判成答錯。那比 unparsed 危險 —— unparsed 至少會出現在 unparsed_rate 裡,抓錯字母完全無聲。
實測 253 題:75.89%(11 題 unparsed)→ 81.82%(0 題 unparsed)。11 題 unparsed 全部是這個 bug,不是模型答不出來。
影響 mmbench、mmstar、mmmu、pope、vistw_mcq 五個 benchmark。
🔴 修復:--benchmark 崩潰
2.9.0 移除 main.py 的 runner class 時把 import copy 一併帶走,而 --benchmark 的金鑰清理還在用它,導致 NameError。
Changed
VisTW 範本的 max_tokens 2048 → 8192。推理型 VLM 會在寫出答案前用掉大量 token:實測 2048 時 19% 因截斷而 unparsed、分數低估 19 個百分點;不設上限則會推理到代理層逾時。
對比驗證
與官方實作在相同模型、相同端點、相同 253 題下對比:
| Twinkle Eval | 官方 | |
|---|---|---|
| accuracy | 81.01% | 80.56% |
| 差異 | +0.45 個百分點 | ✅ 在 ±2% 容差內 |
完整方法、四項對齊修改、以及對比過程中揪出 #166 的經過,都記錄在 docs/evals/vistw.md §6。