EvolvingLMMs-Lab/lmms-eval

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

lmms‑eval – 멀티모달 LLM을 위한 통합 평가 툴킷

개요lmms-eval는 연구자와 엔지니어가 멀티모달 대규모 언어 모델(시각-언어, 오디오-언어, 비디오-언어 등)에 대해 재현 가능하고 효율적이며 통계적으로 타당한 벤치마크를 실행할 수 있도록 해주는 Python 라이브러리입니다. MMMU, MME, VideoMME, MathVista 등을 포함하여 지속적으로 확장되는 100개 이상의 태스크 카탈로그와 Qwen‑2.5‑VL, Qwen‑3‑VL, LLaVA‑OneVision, InternVL‑2, VILA 및 모든 OpenAI 호환 API를 위한 래퍼를 제공합니다.

중요성 – 현재 멀티모달 평가는 파편화되어 있습니다. 데이터셋은 서로 다른 곳에 존재하고, 전처리가 다양하며, 결과에 신뢰 구간이 보고되지 않는 경우가 많습니다. lmms‑eval는 다음과 같은 단일 결정론적 파이프라인을 제공하여 이 문제를 해결합니다:

  • 재현성 보장 (동일 모델 + 동일 태스크 → 동일한 수치).
  • 비동기 서빙, 적응형 배칭 및 비디오 I/O 최적화를 통한 처리량 극대화 (이전 버전보다 최대 ~3.5배 빠름).
  • 신뢰할 수 있는 통계 정보 제공 (신뢰 구간, 대응 표본 t-검정 p-값, 클러스터링 표준 오차)를 통해 성능 향상이 실제인지 확인할 수 있습니다.

주요 기능

기능 설명
통합 태스크 카탈로그 이미지, 비디오 및 오디오 모달리티를 다루는 100개 이상의 YAML 정의 벤치마크.
모델 백엔드 채팅 스타일 모델, 레거시 단순 모델, vLLM, SGLang 및 모든 OpenAI 호환 엔드포인트를 위한 네이티브 래퍼.
채팅 스타일 API 구조화된 ChatMessages (역할 + 멀티모달 콘텐츠) – 단일 요청 내에서 이미지/비디오/오디오 인터리빙 지원.
통계 보고 신뢰 구간, 대응 t-검정, 표준 오차 클러스터링, 샘플당 토큰 수, 처리량 메트릭.
Evaluation-as-a-service 작업을 큐에 넣고 전용 GPU에서 실행하며 REST API를 통해 결과를 반환하는 독립형 HTTP 서버.
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 방식도 작동합니다.
  • 캡션 스타일 데이터셋의 경우 pycocoeval API를 위한 Java 8이 필요합니다.

일반적인 워크플로우

  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/ 아래에 데이터셋 경로, 분할 및 각 레코드를 구조화된 채팅 형식으로 변환하는 doc_to_messages 함수를 설명하는 YAML 파일을 넣습니다.
  • 사용자 정의 메트릭process_results 함수를 플러그인하고 YAML에 메트릭 이름을 나열합니다.

리소스


위의 모든 진술은 저장소의 README에서 직접 가져온 것이며, 외부의 가정이 추가되지 않았습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트