EvolvingLMMs-Lab/lmms-eval
One-for-All Multimodal Evaluation Toolkit Across Text, Image, Video, and Audio Tasks
lmms‑eval – A Unified Evaluation Toolkit for Multimodal LLMs
What it is – lmms-eval is a Python library that lets researchers and engineers run reproducible, efficient, and statistically‑sound benchmarks on multimodal large language models (vision‑language, audio‑language, video‑language, etc.). It ships with a growing catalog of >100 tasks (MMMU, MME, VideoMME, MathVista, …) and wrappers for 30+ model families such as Qwen‑2.5‑VL, Qwen‑3‑VL, LLaVA‑OneVision, InternVL‑2, VILA, and any OpenAI‑compatible API.
Why it matters – Multimodal evaluation is currently fragmented: datasets live in different places, preprocessing varies, and results are often reported without confidence intervals. lmms‑eval solves this by providing a single, deterministic pipeline that:
- Guarantees reproducibility (same model + same task → identical numbers).
- Maximises throughput with async serving, adaptive batching, and video I/O optimisations (up to ~3.5× faster than earlier versions).
- Emits trustworthy statistics (confidence intervals, paired‑test p‑values, clustered standard errors) so you can tell whether a gain is real.
Key features
| Feature | What it does |
|---|---|
| Unified task catalog | 100+ YAML‑defined benchmarks covering image, video, and audio modalities. |
| Model back‑ends | Native wrappers for chat‑style models, legacy simple models, vLLM, SGLang, and any OpenAI‑compatible endpoint. |
| Chat‑style API | Structured ChatMessages (role + multimodal content) – supports interleaved image/video/audio in a single request. |
| Statistical reporting | Confidence intervals, paired‑t tests, standard‑error clustering, per‑sample token counts, throughput metrics. |
| Evaluation‑as‑a‑service | Stand‑alone HTTP server that queues jobs, runs them on dedicated GPUs, and returns results via a REST API. |
| Web UI | Optional React‑based UI for selecting models/tasks, previewing commands, streaming live output, and browsing logs. |
| Async/Sync clients | Python client libraries (EvalClient, AsyncEvalClient) to submit jobs from training loops without blocking. |
| Extensible | Add new models by implementing generate_until and new tasks via a YAML config plus a doc_to_messages function. |
| Multi‑language docs | README and full documentation available in 17 languages. |
Quick start (run a tiny test in < 5 min)
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
If you see a JSON‑L log with accuracy numbers, the toolkit is ready.
Installation notes
- The project recommends the
uvpackage manager for deterministic environments (uv install -e "[all]"). - A classic
pip install git+https://github.com/EvolvingLMMs-Lab/lmms-eval.gitalso works. - For caption‑style datasets you’ll need Java 8 for the
pycocoevalAPI.
Typical workflow
- Pick a model – use a built‑in wrapper (
qwen2_5_vl,internvl_2, etc.) or point to an OpenAI‑compatible endpoint. - Select tasks – any of the 100+ tasks listed in
docs/advanced/current_tasks.md. - Run evaluation – via the CLI (
python -m lmms_eval …), the HTTP server, or the Web UI. - Analyse – results are emitted as flattened JSONL files; you can compute aggregate metrics, confidence intervals, or feed them into downstream dashboards.
Extending the library
- New model – subclass
lmms_eval.api.model.lmms, setis_simple=False, implementgenerate_untilthat builds aChatMessagesobject and calls the model’s chat template. - New benchmark – drop a YAML file under
lmms_eval/tasks/describing the dataset path, split, and adoc_to_messagesfunction that converts each record into the structured chat format. - Custom metrics – plug a
process_resultsfunction and list the metric names in the YAML.
Resources
- Documentation:
docs/README.md - Full task list: https://github.com/EvolvingLMMs-Lab/lmms-eval/blob/main/docs/advanced/current_tasks.md
- Model list: https://github.com/EvolvingLMMs-Lab/lmms-eval/tree/main/lmms_eval/models
- Discord community: https://discord.gg/8xTM6jWnXa
- Homepage: https://www.lmms-lab.com/
All statements above are taken directly from the repository’s README; no external assumptions have been added.
Related
- Project
- Project
- Project
- Project
- Project