EvoTrace
收藏EvoTrace 数据集概述
EvoTrace 是一个精炼、去重、匿名化的进化代码搜索轨迹数据集,包含 121 次进化代码搜索运行,覆盖 4 种后端和 2 个问题领域。该数据集由论文《What Do Evolutionary Coding Agents Evolve?》(arXiv:2605.20086)的实验生成。数据集总大小 1.7 GB,包含 10,672 条程序记录和 18,341 个唯一内容寻址代码/提示 blob。
数据集结构
数据集根目录布局如下:
EvoTrace/ ├── openevolve_native/ 44 runs, 497MB, 4,267 programs ├── evox/ 30 runs, 301MB, 2,396 programs ├── gepa_native/ 29 runs, 70MB, 429 accepted + 1,708 rejected ├── shinkaevolve/ 18 runs, 326MB, 1,872 programs ├── tools/ │ └── refine_outputs.py └── README.md
运行(Run)命名规则
每个运行目录的命名格式为:<problem>_<model_or_config>_<iterations>_<hash6>,其中末尾的 6 字符十六进制哈希用于区分相同问题/模型/迭代次数的不同运行。
问题领域划分
- ALE(62 个运行):运行名称以
ale_bench_或ahc<digit>开头,代表 AtCoder 启发式竞赛风格的 C++ 启发式算法。 - math(65 个运行):其他所有数学发现类问题(如
circle_packing、heilbronn_*、*_autocorr_ineq等)。
每个运行的目录结构(4 种后端通用)
每个运行目录包含以下文件:
| 文件 | 内容 |
|---|---|
meta.json |
后端、源路径、精炼时间戳、模式版本、计数信息 |
programs.jsonl |
每行一个唯一程序记录(按 UUID 去重),包含统一的字段 schema |
iterations.jsonl |
每个检查点的角色成员关系:{iteration, role, slot_key, program_id, value} |
iter_scalars.jsonl |
标量轨迹:{iteration, key, value}(如 best_program_id、last_iteration 等) |
blobs/<sha[:2]>/<sha>.<ext> |
内容寻址的源代码(.txt)和提示负载(.json) |
programs.jsonl 的统一字段定义
python { "id": str, # UUID "parent_id": str | None, "other_context_ids": list[str], # 兄弟/启发 ID "parent_info": dict | None, "context_info": dict | None, "iteration_found": int, # 首次生成的迭代编号 "generation": int, # 等同于 iteration_found(shinkaevolve 专用) "metrics": dict, # 指标,通常包含 "combined_score" "language": "python" | "cpp" | …, "status": "accepted" | "rejected" | "failed", "source": str, # 数据来源结构 "metadata": dict, # 后端特定元数据(含 model_name) "timestamp": float | None, "solution_sha256": str | None, # → blobs/XX/<HASH>.txt "prompts_sha256": str | None, # → blobs/XX/<HASH>.json "artifacts": dict | None, # 后端特定小型工件 }
各后端特有信息
| 后端 | 运行数 | 程序数 | 语言 | 额外特性 |
|---|---|---|---|---|
| openevolve_native | 44 | 4,267 | py/cpp | 多岛 MAP-Elites,含特征网格档案;额外文件:feature_stats.jsonl、best/、logs/ |
| evox | 30 | 2,396 | py/cpp | 协同进化,搜索算法与程序共同进化;额外文件:evox_search.jsonl、evox_failed_attempts.jsonl |
| gepa_native | 29 | 429 接受 + 1,708 拒绝 | py/cpp | 精英池 + 拒绝历史(含拒绝程序的记录) |
| shinkaevolve | 18 | 1,872 | cpp | 基于 bandit 的进化,SQLite 后端;额外文件:shinka_events.jsonl、shinka_attempts.jsonl、shinka_gen_metrics.jsonl、shinka_private_lineage.jsonl |
预计算分析(analysis/ 目录)
95 个运行包含分析输出,分为两个覆盖层级:
- 全量套件(80 个运行):覆盖 openevolve_native(26/44)、evox(28/30)、gepa_native(26/29),包含循环检测、编辑分类、最佳程序谱系、超参数计数以及 LLM 编辑分类。
- 仅 LLM 编辑分类(15 个 shinkaevolve 运行):仅包含
llm_edit_taxonomy.*文件。
| 文件 | 说明 |
|---|---|
cycle_classes.json / .summary.json / .programs.csv |
按类别分组的行级循环事件 |
edit_classification.json / .summary.json / .csv |
每次编辑的构成:调优/结构/注释/混合 |
best_so_far_lineages/ |
最佳程序谱系、目标列表、可视化图 |
hyperparameter_counts/ |
每个程序/每次迭代的数字字面量计数 |
llm_edit_taxonomy.csv / .jsonl / .summary.json |
每次编辑的 LLM 判断分类 |
数据集统计总览
| 后端 | 运行数 | 唯一程序数 | 备注 |
|---|---|---|---|
| openevolve_native | 44 | 4,267 | 多岛 MAP-Elites |
| evox | 30 | 2,396 | 协同进化 |
| gepa_native | 29 | 429 + 1,708 拒绝 | 精英池 + 拒绝历史 |
| shinkaevolve | 18 | 1,872 | Bandit 驱动,SQLite 后端 |
| 总计 | 121 | 10,672 |
匿名化说明
- 所有文本文件中的作者/机构/集群主机名引用已被替换。
- 符号链接已被实体化(
rsync -aL)以确保数据集独立可移植。 bandit_state.pkl文件已移除。- 所有 ISO 日期字符串和 Unix 时间戳已被置空。
- 运行目录和日志文件名中的日期后缀(
_YYYYMMDD_HHMMSS)已被移除,改用稳定的 6 字符十六进制哈希进行区分。
数据读取方式
推荐使用 huggingface_hub.snapshot_download 下载完整文件树:
python from huggingface_hub import snapshot_download local = snapshot_download(repo_id="ZIB-IOL/EvoTrace", repo_type="dataset")
配套分析库 evo_replay 可自动检测此布局并解析内容寻址 blob。也可使用标准库直接解析 programs.jsonl 和 blobs/ 目录。
许可协议
CC-BY-4.0




