sora 13274243a0 Bump vendored EvalScope and add K3-ready DPV4 configs.
Keep K3 suite selection and report-schema scoring in bash, merge K3/vision dataset_args into dpv4 yamls, and pin EvalScope at 735d920ee911 with local patches.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 07:30:48 +00:00

5.2 KiB
Raw Permalink Blame History

PhyX-OE

概述

PhyX 是首个面向现实、视觉接地场景中物理推理的大规模基准测试。这是其开放式变体:不提供选项,模型必须从图示中推导出大学水平物理问题的答案并明确陈述。

任务描述

  • 任务类型:视觉开放式物理问题求解
  • 输入:一张图示,加上问题描述和提问
  • 输出:包含逐步推导过程并以最终答案(带单位的数值或公式)结尾的解答
  • 领域:大学水平物理(力学、电磁学、热力学、波动/声学、光学、现代物理)

关键特性

  • 包含 3,000 道大学水平题目(test),覆盖 6 个核心领域和 25 个子领域,每个领域作为独立子集提供;设置 eval_split='test_mini' 可选择官方的 1,000 题 testmini 测试集。

  • 每道题均基于一张图示,其中包含文本未重复说明的信息,因此模型必须结合视觉线索与隐含的物理定律进行推理。

  • 涵盖 6 种推理类型(物理模型接地、多公式、空间关系、数值、预测性及隐含条件推理)。

  • 采用论文默认的 Text-DeRedundancy 输入风格:简化后的问题描述加提问,并附上图示。

  • 官方提示词被逐字复现,包括对逐步推理的要求,以确保评分结果与已发表数据具有可比性。

评估说明

  • 主要指标:acc,即各题目的平均准确率,整体及按领域分别报告。
  • 最终答案从 \boxed{...} 中提取;若无,则从 'final answer:' / 'correct answer:' 语句中提取;若仍无,则将整个回复与标准答案比较。若回复在给出答案前被截断,则得分为 0此情况与模型物理能力无关请为模型设置足够大的 generation_config.max_tokens
  • 答案为自由格式的带单位数值,因此默认使用 LLM 评判器(官方推荐):设置 judge.strategy='auto''llm' 并提供 judge.models。仅当答案字符串不完全匹配时才调用评判器。
  • 若设置 judge.strategy='rule',则回退到官方的字符串级匹配模式,但会低估准确率,因为等效表达(如 0.5 m50 cm)在字面上并不相同。
  • 图像以内联 base64 形式发送,最大约 5 MB若所用模型对单张图像有更小的大小限制请在 dataset_args 中设置 max_image_bytes
  • 资源链接:论文 | GitHub | 项目主页

属性

属性
基准测试名称 phyx_oe
数据集ID evalscope/PhyX
论文 Paper
标签 MultiModal, QA, Reasoning
指标 accuracy
默认示例数 0-shot
评估划分 test

数据统计

指标
总样本数 3,000
提示词长度(平均) 364.68 字符
提示词长度(最小/最大) 93 / 1874 字符

各子集统计:

子集 样本数 提示词平均长度 提示词最小长度 提示词最大长度
mechanics 550 356.92 124 1273
electromagnetism 550 326.73 107 1032
thermodynamics 500 390.86 93 1174
waves_acoustics 500 379.95 101 1731
optics 500 361.15 109 1215
modern_physics 400 380.12 106 1874

图像统计:

指标
图像总数 3,000
每样本图像数 最小: 1, 最大: 1, 平均: 1
分辨率范围 215x46 - 5712x4953
格式 jpeg, png

样例示例

子集: mechanics

{
  "input": [
    {
      "id": "508a6723",
      "content": [
        {
          "image": "[BASE64_IMAGE: png, ~35.6KB]"
        },
        {
          "text": "A patient with a dislocated shoulder is put into a traction apparatus as shown in figure. The pulls $\\vec{A}$ and $\\vec{B} must combine to produce an outward traction force of 12.8 N on the patients arm. How large should these pulls be? Please answer the question with step by step reasoning."
        }
      ]
    }
  ],
  "target": "7.55N",
  "id": 0,
  "group_id": 0,
  "metadata": {
    "index": "0",
    "category": "Mechanics",
    "subfield": "Statics",
    "reasoning_type": [
      "Spatial Relation Reasoning"
    ]
  }
}

提示模板

未定义提示模板。

使用方法

使用 CLI

evalscope eval \
    --model YOUR_MODEL \
    --api-url OPENAI_API_COMPAT_URL \
    --api-key EMPTY_TOKEN \
    --datasets phyx_oe \
    --limit 10  # 正式评估时请删除此行

使用 Python

from evalscope import run_task
from evalscope.config import TaskConfig

task_cfg = TaskConfig(
    model='YOUR_MODEL',
    api_url='OPENAI_API_COMPAT_URL',
    api_key='EMPTY_TOKEN',
    datasets=['phyx_oe'],
    dataset_args={
        'phyx_oe': {
            # subset_list: ['mechanics', 'electromagnetism', 'thermodynamics']  # 可选,用于评估特定子集
        }
    },
    limit=10,  # 正式评估时请删除此行
)

run_task(task_cfg=task_cfg)