OLMo-Eval 是一个用于评估开放语言模型的统一工作台,旨在覆盖模型开发循环中的各个阶段。
用途
该项目为语言模型评估提供一站式框架,支持从基准任务注册、评估套件组合到结果上传与检查的完整流程。它特别强调将执行策略与任务定义分离,使得同一任务可以在不同模式下(如基线、工具增强、多轮代理)运行而无需修改任务本身。
主要能力
- 基准任务与可组合套件注册:支持命名变体,用于 few-shot 设置、格式化和评分。例如 humaneval:3shot:bpb。
- 推理支持:通过 vLLM、LiteLLM(用于商业 API)以及 mock 提供者(用于干运行和调试)进行推理。
- Harness 抽象:将执行策略与任务定义分离,任何任务都可以在基线或工具增强模式下运行。
- 多轮代理评估:支持工具调用、脚手架和通过 Docker、Podman 或 Modal 实现的沙箱环境。
- LLM 作为评委评分:支持辅助提供者,包括本地服务的评委模型。
- 结果上传:将结果上传至 olmo-eval 仪表板,附带运行元数据、逐实例预测以及 Beaker 和 GCS 链接。
- 检查工具:用于查看实例、格式化提示、token 数组和模型响应。
使用方式
项目使用 uv 和签入的 uv.lock 实现可复现构建。开始使用前,通过 uv 同步仓库,浏览可用任务和套件,并使用内置 mock 提供者预览运行。
核心抽象包括:
- 任务(Tasks):定义如何加载数据、格式化提示和评分输出,通过 @register 注册。
- 变体(Variants):可充当命名的评估预设,如 few-shot 设置。
- 运行时依赖:允许任务指定在作业启动时安装的包。
- 套件(Suites):将多个任务分组进行批量评估,支持不同的结果组合策略,如平均之平均(AVERAGE_OF_AVERAGES,每个子任务等权)和加权平均(WEIGHTED_AVERAGE,按实例数加权)。
- 格式化器(Formatters):将实例转换为语言模型请求。
- 评分器(Scorers):为每个实例/输出对计算分数。
- 指标(Metrics):跨响应聚合分数。
Harness 是评估运行的运行时编排层,结合主推理提供者与执行策略,如系统提示、工具、辅助提供者、沙箱、指标收集以及可选的脚手架用于多轮控制。关键概念:任何任务都可以在有或没有工具的情况下运行,这由 Harness 配置决定而非任务定义,从而允许在同一任务上比较基线与工具增强性能。
脚手架(Scaffolds)定义 Harness 如何执行带工具调用的多轮请求,处理代理循环:调用模型、执行工具、反馈结果。对于多轮执行需指定脚手架,单轮生成则不需要。
工具(Tools)将模式(给 LLM)和实现(用于执行)结合在单个定义中,使用 @registered_tool 自动注册。
适用场景
- 开放语言模型的基准评估,包括多轮代理任务和工具使用评估。
- 多模态评估:支持视觉语言模型在图像基准上的评估,包括图像问答、密集描述、指向任务、多图像任务以及文档 OCR 任务。内置五个图像任务家族,如 olmocr_bench、cc_ocr_multi_scene、omnidocbench 等,每个任务附带官方评分方法。
- 函数调用评估:Berkeley Function Calling Leaderboard v3 的单轮类别注册为 bfcl_* 任务,支持原生函数调用、提示模式和纯完成三种方式;多轮类别由 bfcl_multi_turn 脚手架驱动。
- 需要通过 LLM 作为评委进行评分的场景。
限制
- 部分多模态任务依赖外部 API(如 OpenAI API),需要设置 OPENAI_API_KEY。
- 图像数据需预先准备在只读目录树中,加载器不会构建缓存。
- OmniDocBench 的公式评分(CDM)需要网络访问、Linux x86_64 环境、apt 权限以及特定版本的 TeX Live、ImageMagick、Ghostscript 等工具链;若下载失败或测试公式无法渲染,任务会在推理前停止。
- 一些变体仅限英文(_en),某些基准的评分公式基于特定版本,不同版本之间不可直接比较。
- 官方资料中未提供具体的收费信息、定价模式或平台限制细节。