olmo-eval logo

olmo-eval

allenai/olmo-eval

Olmo Evaluation Framework for LLM Tasks

GraphCanon updated 2w · GitHub synced 2w

65 stars14 forksLast push 2w Python Apache-2.0

Decision brief

Olmo-eval is an evaluation framework for large language models, using uv for reproducible builds. It focuses on modular task implementations and integrates with various datasets via defined tasks.

Good fit when

  • When you need a flexible evaluation setup that works with a variety of LLMs and datasets.
  • For reproducible evaluations where your build environment needs to be consistent across runs.

Avoid when

  • When you require a simpler setup that doesn't need the reproducibility constraints of uv builds.
  • If your project already has an established evaluation toolchain and does not benefit from introducing a new framework for manageability reasons.

Observed Jul 12, 2026 · Source: enrich:decision_facts

Verify the decision

Maintenance and security

Full trust report
Maintenance
Very active (0d since push)
As of 2w
Provenance
Not a fork · Organization account
As of 2w
Security (OSV)
No lockfile
As of 1mo

Public GitHub metadata and optional OSV scans. Signals, not a guarantee. Trust methodology.

Install

pip install olmo-eval
PyPI

Similar tools

Same-category neighbours. No typed graph edges are catalogued for this tool yet.

Evidence and technical details

Sourced facts, taxonomy, compatibility claims, README excerpt, and machine-readable endpoints.

Overview

A framework to evaluate large language models through various tasks and datasets, using reproducible build setup with uv.

Capability facts

Deploy
Self-host

Source: dockerfile:Dockerfile · Aug 7, 2026

Docker
Dockerfile present

Source: dockerfile:Dockerfile · Aug 7, 2026

CLI
CLI entrypoint

Source: pyproject.toml:[project.scripts] · Aug 7, 2026

Languages
python

Source: github.language+pyproject.toml · Aug 7, 2026

Categories

Compatibility

Sourced claims from the README excerpt - not unsourced marketing copy.

Python runtimePython

Source: README excerpt (regex_v1, Aug 7, 2026)

# Install Python 3.12 if your machine does not already have it
Source link

Tags

README

Quick Start

This project uses uv with a checked-in uv.lock for reproducible builds. To get started, sync the repo with uv, browse the available tasks and suites, and preview a run with the built-in mock provider.


Install uv if not already installed

curl -LsSf https://astral.sh/uv/install.sh | sh


Install Python 3.12 if your machine does not already have it

uv python install 3.12


Install dependencies + the package (editable) from the lockfile.


Quick Start: Minimal Task Example

"""Example: Minimal task implementation."""
from collections.abc import Iterator
from typing import Any

from olmo_eval.common.types import Instance, LMOutput, LMRequest, RequestType
from olmo_eval.data import DataLoader, DataSource
from olmo_eval.evals.tasks.common import Task, register


@register("my_task")
class MyTask(Task):
    """My task implementation."""

    # DataSource arguments:
    #   path: HuggingFace dataset path (e.g., "cais/mmlu")
    #   subset: Dataset subset/config (e.g., "abstract_algebra")
    #   split: Dataset split (e.g., "test", "validation")
    data_source = DataSource(path="cais/mmlu", subset="abstract_algebra", split="test")

    @property
    def instances(self) -> Iterator[Instance]:
        """Load and yield instances from the dataset."""
        if self._instances_cache is None:
            self._instances_cache = []
            loader = DataLoader()
            source = self.config.get_data_source()
            for doc in loader.load(source):
                self._instances_cache.append(self.process_doc(doc))
        yield from self._instances_cache

    def process_doc(self, doc: dict[str, Any]) -> Instance:
        """Convert a dataset document to an Instance."""
        return Instance(
            question=doc["question"],
            gold_answer=doc["answer"],
            choices=tuple(doc["choices"]),  # For MC tasks
            metadata={"id": doc["id"]},
        )

    def format_request(self, instance: Instance) -> LMRequest:
        """Format instance for the language model."""
        if self.config.formatter is not None:
            return self.config.formatter.format(instance, self.get_fewshot())
        # Fallback formatting
        return LMRequest(request_type=RequestType.COMPLETION, prompt=instance.question)

    def extract_answer(self, output: LMOutput) -> str | None:
        """Extract the answer from model output."""
        return output.text.strip()

Installation

The beaker extra is included in the default dev group, so a plain uv sync --frozen is enough. If you previously opted out of the default groups, re-enable it with:

uv sync --frozen --extra beaker

Docker Image Management

Docker images provide the runtime environment (Python, PyTorch, CUDA) but do NOT include:

  • Source code - Gantry mounts your git repository at runtime
  • Inference providers - Installed at job startup from each model's resolved provider config

This approach allows you to:

  • Use any git commit without rebuilding images
  • Keep images small and cacheable

Manual installation inside container

uv pip install -e '.[vllm]' # includes vllm[runai]


For raw OLMo-core checkpoints, force the provider kind through the harness and
use `provider.package` when you need a specific `ai2-olmo-core` install:

```bash

---

# Install dependencies from the lockfile
uv sync --frozen

For agents

This page has a .md twin and JSON over the API.

Was this helpful?

Anonymous feedback helps us improve pages and translations.