T
traeai
登录
返回首页
Hugging Face Blog

olmo-eval: An evaluation workbench for the model development loop

8.5Score

TL;DR · AI 摘要

olmo-eval 是一个用于大模型开发循环的评估工具,支持灵活配置和多步骤评估。

核心要点

  • olmo-eval 支持多步骤和代理评估,提升模型开发效率。
  • 相比 OLMES,olmo-eval 提供更灵活的评估配置和更高效的分析工具。
  • olmo-eval 可用于实时评估模型在不同检查点的表现。

结构提纲

按章节快速跳转。

  1. 介绍模型开发过程中评估的重要性及现有工具的不足。

  2. ·OLMES 的局限性

    OLMES 虽然标准化了评估,但无法满足模型开发过程中的动态需求。

  3. ·olmo-eval 的设计目标

    olmo-eval 旨在提供更灵活、高效的评估工具,支持模型开发的全流程。

  4. 支持多步骤评估、代理评估和灵活的评估配置。

  5. olmo-eval 更适合模型开发的日常任务,而 Harbor 专注于代理评估。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • olmo-eval
    • 功能
      • 多步骤评估
      • 代理评估
      • 灵活配置
    • 与 OLMES 的区别
      • 更灵活的评估配置
      • 更高效的分析工具
    • 与 Harbor 的区别
      • 专注于模型开发

金句 / Highlights

值得收藏与分享的关键句。

#LLM#评估工具#Hugging Face#模型开发
打开原文

olmo-eval:用于模型开发循环的评估工作台

返回文章列表

[0

[-1

企业

]

文章

发布于2026年6月12日

点赞

8

[

  • +2

Tyler Murray

undfined

关注

allenai

Kyle Wiggers

Ai2Comms

💻 代码:https://github.com/allenai/olmo-eval

在构建一个大型语言模型(LLM)时,你会在许多干预措施下反复评估它。对模型数据、架构或超参数的每一次调整,以及规模的每一次提升,都会让你重新经历相同的循环:添加或重新配置基准测试,在每个新的模型检查点上重新运行它们,记录结果,并检查在小规模实验中有所帮助的某些因素是否在完整训练运行中仍然有效。

大多数评估工具并不是为这种场景设计的——它们要么是构建在已完成模型上运行已建立基准测试的工具,要么是在沙盒环境中运行模型通过多步骤、使用工具的问题。它们无法跟上一个持续变化的模型,也无法反映模型在特定现实条件下的行为。

我们之前解决这一评估挑战的最后一个项目是OLMES,即开放语言模型评估标准。OLMES于2024年推出,旨在使大型语言模型(LLM)基准测试得分更容易在不同版本之间进行比较。相同模型在不同方式上被评分——诸如提示格式和任务定义等要素经常从论文到论文有所不同——因此,关于哪些模型表现最佳的主张通常无法复现。OLMES将基准测试的选择固定在一个开放且有文档记录的标准中,并成为从Olmo到Tulu的开放模型评估的基础。

但模型的最终得分只是评估过程的一部分——这就是我们发布olmo-eval的原因,这是一个建立在OLMES之上并扩展到整个大型语言模型(LLM)开发的新工作台。与OLMES相比,olmo-eval减少了实现新评估的工作量,提供了在定义评估运行位置和方式时的更多灵活性,并使将单个组件组合成更大工作流变得更加容易。代理和多轮评估作为首要用例得到支持,更强大的分析工具帮助你判断干预措施是否确实提升了基线,还是差异仅仅是噪声。

olmo-eval与现有工具的不同之处

性能提升2.4个百分点是否足以做出判断?

olmo-eval在某些方面与Harbor重叠,Harbor是一个用于在容器化和沙盒环境中评估AI代理的开放框架。但这两个工具在范围上有所不同。Harbor主要用于运行和发布代理基准测试;olmo-eval则是为模型开发的日常工作而构建的——添加和配置基准测试,跨检查点运行它们,并按提示逐个分析结果,而不是作为一个整体得分。

Harbor以相同的方式运行所有内容——在密封且可复现的容器中。由于容器可能资源密集,olmo-eval允许你选择每个基准测试的运行方式。一个只需要模型回答问题的基准测试可以直接运行,这更快且更便宜;一个需要锁定环境的基准测试——例如,运行模型编写的代码的环境——会获得一个隔离的容器设置。轻量级路径是默认设置,只有当基准测试确实需要时,olmo-eval才会选择重型设置。

Harbor 添加基准的过程是为计划发布和公开共享的评估而设计的,包含额外的验证步骤。olmo-eval 则是为开发过程中快速迭代而设计的,添加基准的方式取决于基准的需求:对于基本评估,只需一个简短的定义,并提供选项让模型在完成基准时使用工具;而对于已有代码和流程的基准,则使用一个轻量级的封装器,使 olmo-eval 可以直接运行并以相同格式报告结果,与其他基准得分并列显示。

Harbor 和 olmo-eval 都将基准与运行时策略(模型如何运行以生成答案)分开,这样你可以修改其中一项而无需重写另一项,但 olmo-eval 的设计更注重模块化。在 olmo-eval 中,被评估的模型、可用的工具、容器化环境以及任何辅助模型(如作为裁判的 LLM)都是可替换的组件。你可以在多个测试套件中重复使用工具,或者将评分模型插入一个基准而不影响其他基准,并且可以轻松调整小的设置(例如提示的确切措辞)。

Harbor 为每个模型报告一个总体得分。olmo-eval 也报告这些得分,每个得分都附有标准误差和最小可检测效应(可从噪声中可靠区分的最小差异)。但更有用的视角是将相同的问题在两个模型检查点上对齐,并逐一进行比较,其他条件保持不变。这有助于你判断总体平均值的微小变化是否表明真正的改进,还是仅仅是噪声。

如果你正在寻找...

olmo-eval 提供

编写一个包含多个示例的基准

具有

code
DataSource

、指标和评分接口的任务子类

用其自己的运行器包装一个现有的代理风格基准

code
ExternalEval

code
SandboxedExternalEval

;基准保留其循环和评分,结果会以 olmo-eval 的格式呈现

在固定基准下更换运行时

code
--harness

和 harness 预设;harness 包含提供者、工具、框架、沙箱和辅助提供者

并行容器执行

用于并行执行器的沙箱实例,支持基于能力的路由,Docker 或 Modal 模式

跨任务和测试套件可重复使用的工具定义

带有可选全局注册表的

code
@tool

装饰器

多轮执行循环

框架,例如

code
openai_agents

,按测试套件选择,而不是硬编码到任务定义中

一个集成的评估堆栈

olmo-eval 由四个组件组成,这些组件单独使用时都有用,但设计上是为了协同工作,以收紧实验性 LLM 开发的循环:

  • 一个任务/套件/测试套件的抽象,将基准逻辑与运行时策略解耦。在 olmo-eval 中,任务是你定义基准的方式——评估的内容。套件将任务组合成一组一起运行的集合,而测试套件控制每个任务是如何运行的。这种分离使得相同的任务可以作为标准基线运行,也可以使用工具和框架运行,而不会改变它所测量的内容。
  • 一个沙箱和基于能力的路由层,包括一个异步沙箱规划器。这支持评估那些模型响应依赖于其使用工具所采取的动作的情况,例如编写并运行代码或浏览网页。目的是评估模型的实际工具使用情况:当基准要求使用工具时,olmo-eval 会运行这些工具,并将结果反馈给模型。
  • 一种标准化的实验模式,用于以相同的结构化格式记录每次运行、其配置和结果。这使得可以将相关实验分组,随时间比较检查点,并避免在长期运行的模型开发工作流程中经常积累的不一致性。
  • 一种用于成对模型比较的结果查看器:通过逐个问题地将两个模型或检查点进行对比,可以揭示总体平均值可能隐藏的小但真实的表现变化。

在大多数模型评估设置中,添加一个基准通常是一个规模较大的集成项目。在 olmo-eval 中,所需的一切只是一个任务——任务定义了基准数据集、如何构建评估请求以及如何对模型答案进行评分(所有代码均使用 Python):

code
from
olmo_eval.common.formatters
import
ChatFormatter
from
olmo_eval.common.metrics
import
AccuracyMetric
from
olmo_eval.common.scorers
import
ExactMatchScorer
from
olmo_eval.common.types
import
Instance, SamplingParams
from
olmo_eval.data
import
DataLoader, DataSource
from
olmo_eval.evals.tasks.common
import
Task, register, register_variant
@register(
"internal_freshqa"
)
class
InternalFreshQA
(
Task
):
    data_source = DataSource(path=
"s3://evals/internal/freshqa.jsonl"
, split=
"test"
)
    formatter = ChatFormatter()
    sampling_params = SamplingParams(temperature=
0.0
)
    metrics = (AccuracyMetric(scorer=ExactMatchScorer),)
@property
def
instances
(
self
):
        loader = DataLoader()
for
idx, doc
in
enumerate
(loader.load(self.config.get_data_source())):
yield
Instance(
                question=doc[
"question"
],
                gold_answer=doc[
"answer"
],
                metadata={
"id"
: doc.get(
"id"
,
f"freshqa_
{idx}
"
)},
            )

变体可以在不复制基准的情况下表达评估策略的变化:

code
register_variant(
"internal_freshqa"
,
"3shot"
, num_fewshot=
3
, fewshot_seed=
1234
)
register_variant(
"internal_freshqa"
,
"zero"
, num_fewshot=
0
)

套件将基准分组为标准集合,您可以一起运行这些集合:

code
from
olmo_eval.evals.suites
import
Suite, register

register(Suite(
    name=
"base_qa_few_shot"
,
    tasks=(
"sciq:mc:3shot"
,
"arc_challenge:mc:3shot"
,
"internal_freshqa:mc:3shot"
,
    ),
))

由于运行时策略位于框架中而不是任务定义中,因此可以在不同的执行条件下轻松重新运行相同的基准,而不是依赖于生成的点是否看起来合理。

code
#
基线
olmo-eval run -m my-instruct-checkpoint -t internal_freshqa:zero
#
相同任务,相同评分,启用搜索/工具运行时
olmo-eval run -m my-instruct-checkpoint -t internal_freshqa:zero --harness search_agent

开源的可重复评估

当评估是持续模型开发的一部分,而不是一次性运行时,使用 olmo-eval——当您需要在可重复的条件下跨检查点多次运行相同的基准,并在汇总和每个问题级别上比较干预措施时。

如果您的反复问题是“这个检查点与上一个相比有什么不同,它在哪些地方改进或退步了?”,那么这就是 olmo-eval 所构建的工作流程。

可重复的评估应与模型的构建方式保持同步,而不仅仅是模型完成后如何评分。olmo-eval 将 OLMES 标准带入活跃的模型开发中,我们将其开源,以便社区可以在此基础上进行构建。

更多来自该作者的内容

OlmoEarth v1.1:更高效的地球观测模型家族

22

2026年5月19日

EMO:用于涌现模块化的专家混合预训练

38

2026年5月8日

社区

编辑

预览

通过将文件拖拽到文本输入框、粘贴或

点击此处

来上传图片、音频和视频。

轻点或粘贴此处以上传图片

评论

· 注册或登录以发表评论

AI 可能会生成不准确的信息,请核实重要内容