eval_framework / docs /DATA_CONVERSION.md
LCZZZZ's picture
Upload eval_framework source code
85b19cf verified

VisTrajQA → Eval Framework 数据适配指南

概述

convert_vistrajqa.py 将 VisTrajQA 的 sessions-*.jsonl 转换为 eval_framework 所需的 domain_a_v2 三文件格式,从而可以用 Mem-Gallery / A-Mem / MemoryOS 等 baseline 进行统一评测。

快速使用

# 转换所有数据源(text-only 模式,默认)
python -m eval_framework.datasets.convert_vistrajqa \
    --input data/generated/sessions-vab.jsonl \
           data/generated/sessions-eb-nav.jsonl \
           data/generated/sessions-arena.jsonl \
           data/generated/sessions-eb-alfred.jsonl \
           data/generated/sessions-infini-thor.jsonl \
    --output eval_framework/converted/all

# 只转换某个数据源
python -m eval_framework.datasets.convert_vistrajqa \
    --input data/generated/sessions-vab.jsonl \
    --output eval_framework/converted/vab

# multimodal 模式(image caption 作为 attachment 而非内联文本)
python -m eval_framework.datasets.convert_vistrajqa \
    --input data/generated/sessions-vab.jsonl \
    --output eval_framework/converted/vab-mm \
    --multimodal

# 转换后直接跑 eval
python -m eval_framework.cli \
    --dataset eval_framework/converted/all \
    --baseline FUMemory \
    --output-dir eval_framework/results/FUMemory

转换映射

数据结构映射

VisTrajQA session                →  eval_framework sample
├── session_id                   →  sample_id
├── step_plan[]                  →  sessions[].dialogue[] (user + assistant turns)
├── probes[]                     →  checkpoints[] (probe checkpoints)
├── post_trajectory_qa[]         →  checkpoints[-1] (post-trajectory checkpoint)
└── memory_points[]              →  gold memory points (S00 embedded + stage4)

Session 切分

一条 VisTrajQA 轨迹(如 30 步,4 个 probe 在 step 6/12/18/24)按 probe 边界切分为 5 个 session:

步骤 1-6   → S00   (probe 1 在此 session 结束后触发)
步骤 7-12  → S01   (probe 2)
步骤 13-18 → S02   (probe 3)
步骤 19-24 → S03   (probe 4)
步骤 25-30 → S04   (post-trajectory QA 在全部 session 结束后触发)

这样保证 eval_framework 的 runner 在每个 session 完成后恰好触发对应的 checkpoint。

Turn 构建

每个 step 生成 2 个 dialogue turn:

Turn Role 内容
User turn user OBSERVATION + FEEDBACK + IMAGE caption(text-only 模式)
Assistant turn assistant THOUGHT + ACTION

text-only 模式(默认):image caption 直接写入 user turn 文本,格式为 IMAGE: <caption>。适用于所有 text-only baseline。

multimodal 模式--multimodal):image caption 作为 attachment 附加,不写入正文。适用于 MMMemory 等多模态 baseline。

Memory Point 映射

VisTrajQA 字段 eval_framework 字段 说明
mp_id memory_id mp_S04_1
content memory_content 一句话事实描述
type memory_type event_memory / state_memory / spatial_memory
source memory_source primary (文本) / secondary (推断)
is_update is_update 是否为更新型记忆
original_memories original_memories 被替换的旧内容列表
importance importance 0.4 / 0.6 / 0.8 / 1.0
update_type update_type status_update / location_change / ...

Memory point 按 step_num 分配到对应 session:

  • S00 的 memory points 嵌入在 domain_a_v2.json 的 session 对象中
  • 其他 session 的 memory points 写入 stage4_memory_points.jsonl

QA / Checkpoint 映射

Probe checkpoint:每个 probe 生成一个 checkpoint,covered_sessions 为该 probe 及之前所有 session。

Post-trajectory checkpoint:覆盖全部 session,包含 9 类 QA。

VisTrajQA QA type eval_framework question_type 缩写
FR factual_recall FR
DU dynamic_update DU
MB memory_boundary MB
TR temporal_reasoning TR
KR knowledge_reasoning KR
VFR visual_factual_recall VFR
VS visual_search VS
VU visual_update VU
CMR cross_modal_reasoning CMR

Evidence 字段从 ["mp_S04_1"](字符串列表)转换为 [{"memory_id": "mp_S04_1"}](字典列表)以匹配 eval_framework 格式。

输出文件

eval_framework/converted/all/
├── domain_a_v2.json               # 主对话数据 (JSON array)
├── stage4_memory_points.jsonl     # 每 session 的 gold memory points
└── stage4b_qa_checkpoints.jsonl   # checkpoint QA 题目

评测维度与 VisTrajQA 的对应

eval_framework 维度 测量内容 对应 VisTrajQA 特性
Memory Recall 记忆系统存储了多少 gold points 直接对应,所有 MP 类型
Memory Correctness 存储的记忆是否正确 检测 hallucination
Update Handling 更新型记忆是否正确替换 对应 is_update=true 的 MP
Interference Rejection 干扰信息是否被过滤 VisTrajQA 无 interference 标注,此维度为空
QA Accuracy 问答正确率 对应 9 类 QA (FR/DU/MB/TR/KR/VFR/VS/VU/CMR)
Evidence Coverage 回答引用了多少 gold evidence 对应 evidence memory_point_ids

注意:VisTrajQA 没有 interference(干扰信息)标注,因此 eval_framework 的 Interference Rejection 维度在评测结果中会为空值。MB(Memory Boundary)类型的题目在 QA 层面测试了类似能力。

注意事项

  1. text-only baseline(FU/ST/LT/GA/MG/RF):使用默认 --text-only,image caption 内联到用户消息文本中
  2. multimodal baseline(MM/MMFU/NG/AUGUSTUS):使用 --multimodal,caption 作为 attachment
  3. caption 质量:text-only baseline 对图像的理解完全依赖 caption 质量。如果 image_caption 为空,用户 turn 中不会有任何视觉信息
  4. Arena 数据:observation 恒为空字符串,视觉信息完全来自 image_caption
  5. 转换器会自动验证:运行后会调用 load_domain_a_v2_academic 检验输出是否合法