EvolvingLMMs-Lab/lmms-eval

One-for-All Multimodal Evaluation Toolkit Across Text, Image, Video, and Audio Tasks

lmms‑eval – 用於多模態大語言模型的統一評估工具包

產品定義lmms-eval 是一個 Python 函式庫,允許研究人員和工程師對多模態大語言模型(視覺-語言、音訊-語言、影片-語言等)執行可復現、高效且統計嚴謹的基準測試。它擁有不斷增長的包含 >100 個任務(MMMU, MME, VideoMME, MathVista, …)的目錄,以及針對 30 多個模型家族(如 Qwen‑2.5‑VL, Qwen‑3‑VL, LLaVA‑OneVision, InternVL‑2, VILA 以及任何 OpenAI 兼容的 API)的封裝器。

重要意義 – 目前的多模態評估是碎片化的:數據集分布在不同地方,預處理方式各異,且結果往往在沒有置信區間的情況下報告。lmms‑eval 透過提供一個單一的、確定性的流水線來解決這個問題,該流水線:

  • 保證可復現性(相同的模型 + 相同的任務 $\rightarrow$ 相同的结果)。
  • 透過非同步服務、自適應批處理和影片 I/O 優化實現吞吐量最大化(比早期版本快約 ~3.5 倍)。
  • 輸出可靠的統計數據(置信區間、配對檢定 p 值、聚類標準誤差),以便您可以判斷性能提升是否真實。

核心功能

功能 說明
統一任務目錄 100 多個由 YAML 定義的基準測試,涵蓋圖像、影片和音訊模態。
模型後端 用於聊天風格模型、傳統簡單模型、vLLM、SGLang 以及任何 OpenAI 兼容端點的原生封裝器。
聊天風格 API 結構化的 ChatMessages(角色 + 多模態內容)——支持在單個請求中交錯使用圖像/影片/音訊。
統計報告 置信區間、配對 t 檢定、標準誤差聚類、每樣本 Token 數、吞吐量指標。
評估即服務 獨立的 HTTP 伺服器,可對任務進行排隊、在專用 GPU 上執行並透過 REST API 回傳結果。
Web UI 可選的基於 React 的 UI,用於選擇模型/任務、預覽命令、串流即時輸出以及瀏覽日誌。
Async/Sync 用戶端 Python 用戶端函式庫 (EvalClient, AsyncEvalClient),可在不阻塞的情況下從訓練循環中提交任務。
可擴展性 透過實現 generate_until 來添加新模型,透過 YAML 配置加 doc_to_messages 函數來添加新任務。
多語言文件 README 和完整文件提供 17 種語言版本。

快速入門(在 < 5 分鐘內執行小型測試)

git clone https://github.com/EvolvingLMMs-Lab/lmms-eval.git
cd lmms-eval && uv pip install -e "[all]"
python -m lmms_eval \
  --model qwen2_5_vl \
  --model_args pretrained=Qwen/Qwen2.5-VL-3B-Instruct \
  --tasks mme \
  --batch_size 1 \
  --limit 8

如果您看到帶有準確率數字的 JSON-L 日誌,則表示工具包已準備就緒。

安裝說明

  • 該專案推薦使用 uv 套件管理員以獲得確定性的環境 (uv install -e "[all]")。
  • 傳統的 pip install git+https://github.com/EvolvingLMMs-Lab/lmms-eval.git 同樣有效。
  • 對於字幕風格的數據集,您需要 Java 8 來使用 pycocoeval API。

典型工作流程

  1. 選擇模型 – 使用內建封裝器 (qwen2_5_vl, internvl_2 等) 或指向 OpenAI 兼容的端點。
  2. 選擇任務docs/advanced/current_tasks.md 中列出的 100 多個任務中的任何一個。
  3. 執行評估 – 透過 CLI (python -m lmms_eval …)、HTTP 伺服器或 Web UI。
  4. 分析 – 結果以扁平化的 JSONL 檔案形式輸出;您可以計算聚合指標、置信區間,或將其輸入下游儀表板。

擴展函式庫

  • 新模型 – 子類化 lmms_eval.api.model.lmms,設置 is_simple=False,實現構建 ChatMessages 物件並呼叫模型聊天模板的 generate_until
  • 新基準測試 – 在 lmms_eval/tasks/ 下放置一個 YAML 檔案,描述數據集路徑、劃分以及將每條記錄轉換為結構化聊天格式的 doc_to_messages 函數。
  • 自定義指標 – 插入一個 process_results 函數並在 YAML 中列出指標名稱。

資源


以上所有陳述均直接取自儲存庫的 README;未添加任何外部假設。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案