PhyX-MC#

概述#

PhyX 是首个面向现实、视觉接地场景中物理推理的大规模基准测试。这是其多项选择题(multiple-choice)变体:每个大学水平的物理问题均附带一张图和四个选项,模型需输出正确选项对应的字母。

任务描述#

  • 任务类型:视觉多选物理问题求解

  • 输入:一张图像,以及问题描述、提问和四个带标签的选项

  • 输出:单个选项字母(A、B、C 或 D)

  • 领域:大学物理(力学、电磁学、热力学、波动/声学、光学、近代物理)

核心特性#

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

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

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

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

  • 官方提示词被逐字复现,包括要求仅输出选项字母的指令,以确保评分结果可与已发表数据直接比较。

评估说明#

  • 主要指标:acc(准确率),对所有题目取平均值,并报告整体及各领域的得分。

  • 默认评分方式为官方字符串级匹配:从模型回复中提取选项字母,并与标准答案比对,接受如 D:**D** 等符合提示格式的正确选项标记形式。

  • 若设置 judge.strategy='llm' 并指定 judge.models,则复现官方 LLM 判定模式。仅当无法从回复中提取选项字母时,才调用判别模型,与上游实现一致。

  • 图像以内联 base64 形式发送,最大约 5 MB;若所用模型对单图大小有限制,可在 dataset_args 中设置 max_image_bytes

  • 资源链接:论文 | GitHub | 项目主页

属性#

属性

基准测试名称

phyx_mc

数据集 ID

evalscope/PhyX

论文

Paper

标签

MCQ, MultiModal, Reasoning

指标

accuracy

默认示例数

0-shot

评估划分

test

数据统计#

指标

总样本数

3,000

提示词长度(平均)

487.19 字符

提示词长度(最小/最大)

178 / 2039 字符

各子集统计:

子集

样本数

提示平均长度

提示最小长度

提示最大长度

mechanics

550

471.63

203

1364

electromagnetism

550

466.88

189

1125

thermodynamics

500

498.81

178

1283

waves_acoustics

500

492.87

196

1880

optics

500

478.61

194

1376

modern_physics

400

525.59

199

2039

图像统计:

指标

图像总数

3,000

每样本图像数

最小: 1, 最大: 1, 平均: 1

分辨率范围

215x46 - 5712x4953

格式

jpeg, png

样例示例#

子集: mechanics

{
  "input": [
    {
      "id": "4334f3a0",
      "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 patient’s arm. How large should these pulls be?Please directly answer the question and provide the correct OPTION LETTER ONLY, e.g., A, B, C, D. OPTION: A: 7.55N B: 5.55N C: 7.65N D: 6.65N"
        }
      ]
    }
  ],
  "target": "A",
  "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_mc \
    --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_mc'],
    dataset_args={
        'phyx_mc': {
            # subset_list: ['mechanics', 'electromagnetism', 'thermodynamics']  # 可选,用于评估特定子集
        }
    },
    limit=10,  # 正式评估时请删除此行
)

run_task(task_cfg=task_cfg)