Spaces:
Sleeping
Download docs/ARCHITECTURE.zh-CN.md from adelevett/ELBench-live: direct link, hf CLI and curl.
- Browser
- Download file 7.62 kB
-
https://huggingface.co/spaces/adelevett/ELBench-live/resolve/main/docs/ARCHITECTURE.zh-CN.md
- Command line
-
hf download hf://spaces/adelevett/ELBench-live/docs/ARCHITECTURE.zh-CN.md
-
curl -L -o ARCHITECTURE.zh-CN.md https://huggingface.co/spaces/adelevett/ELBench-live/resolve/main/docs/ARCHITECTURE.zh-CN.md
A newer version of the Gradio SDK is available: 6.32.0
ELBench 架构说明
本文档描述 ELBench 的工程设计:注册表、provider 抽象、执行模型,以及如何扩展框架。基准与排行榜的总览见顶层 README。
ELBench 不是临时脚本,而是按正式工程维护的评测系统。当前仓库在一个统一框架下承载四个模块:
安全可信/ Safety & Trustworthiness高阶育人/ High-Level Educational Cultivation基本教育/ Basic Education通用模型/ General Capability
基本教育 已作为 ELBench 的正式模块接入。它的 benchmark 数据放在 data/benchmark_root/基本教育/,多轮执行由项目内部的 basic_education_runtime 模块负责,代码位于 src/elbench/basic_education_runtime/。这个内部运行时来源于 ELMES 项目,但现在已经按 ELBench 的内部模块方式接管和维护。
设计原则
- 评测流程由注册表和配置驱动,不在主流程里写死文件逻辑
- 模型调用统一走 provider adapter,不让厂商差异污染主 runner
- 客观题优先规则判分
- 主观和开放式任务采用
LLM-as-a-Judge - 稳定的机器可读输出、日志、检查点与汇总
- 中断后支持续跑
- 可配置并发,默认全局上限
100
当前实际接入的内容
已注册的 benchmark 文件
configs/file_registry.yaml 当前解析以下文件:
安全拒答.jsonl安全引导.jsonl安全回答.jsonlSATAs.xlsxadversarial_prompts.xlsx高阶育人-edu.jsonl高阶育人-omni.jsonlknowledge.yamlquestion.yamlcross.yamlconfig_guided_task.yamlmmlu_pro_sampled.jsonlceval_sampled.jsonlifeval_sampled.jsonlmath_500_sampled.jsonlaime24_sampled.jsonlaime25.jsonlaime26.jsonlgsm8k_sampled.jsonl
文件只有在注册之后才会被视为有效的 benchmark 输入。没有出现在 configs/file_registry.yaml 中的数据文件,不属于可运行基准的一部分。
当前判分策略
客观题用规则或参考答案匹配:
SATAs.xlsx高阶育人-omni.jsonlmmlu_pro_sampled.jsonlceval_sampled.jsonlifeval_sampled.jsonlmath_500_sampled.jsonlaime24_sampled.jsonlaime25.jsonlaime26.jsonlgsm8k_sampled.jsonl
主观或开放式任务用 LLM-as-a-Judge:
安全拒答.jsonl安全引导.jsonl安全回答.jsonladversarial_prompts.xlsx高阶育人-edu.jsonl
仓库把外部 provider 接入设计为可插拔。内置 mock.default 和 mock.judge,可在没有真实 API 的情况下本地验证完整流水线。
仓库结构
.
├── configs/
│ ├── app.yaml
│ ├── basic_education.yaml
│ ├── field_mappings.yaml
│ ├── file_registry.yaml
│ ├── judges.yaml
│ ├── models.yaml
│ ├── module_registry.yaml
│ └── providers.yaml
├── data/
│ └── benchmark_root/
│ ├── 安全可信/
│ ├── 高阶育人/
│ ├── 基本教育/
│ └── 通用/
├── docs/
│ └── TEAM_MAINTENANCE_GUIDE.zh-CN.md
├── results/
├── scripts/
│ └── run_benchmark.py
├── src/
│ └── elbench/
│ ├── basic_education_runtime/
│ ├── cli.py
│ ├── config/
│ ├── execution/
│ ├── judges/
│ ├── loaders/
│ ├── persistence/
│ ├── providers/
│ ├── registry/
│ ├── schemas/
│ ├── summary/
│ └── utils/
└── tests/
scripts/run_benchmark.py 刻意只是一个薄入口,真正的评测逻辑都在 src/elbench/ 下。
核心架构
注册表与 schema 适配
configs/file_registry.yaml把文件映射到模块、子集、任务、loader 与规范名。configs/field_mappings.yaml把原始数据集字段映射进 ELBench 的统一内部 schema。- JSONL、XLSX、基本教育 YAML 输入都被规范化为同一个
Sample结构。
统一的 sample/result schema
加载后的记录被规范化为稳定 schema,字段包括:
sample_idsource_filemodulesubsettaskdimensionpromptreferencemetadata
执行输出包括:
provider_namemodel_idmodel_namemodel_responsejudge_resultscorejudge_reasonjudge_metadatalatency_msretry_counttimestamp
Provider 抽象
ModelClient是模型执行的统一接口。- 厂商 API 差异都隔离在
src/elbench/providers/下。 - 一旦 adapter 存在,主 runner 不关心模型来自 OpenAI、Anthropic、Gemini 还是其他厂商。
执行、并发与恢复
runner 支持:
- 全局并发控制
- provider/模型级并发上限
- 指数退避重试
- 失败日志
- 基于检查点的续跑
- 原始响应持久化
- 判分结果持久化
- 汇总生成
configs/app.yaml 中默认全局最大并发为 100。
基本教育运行时
基本教育 与其他模块的差别只在执行方式,不在数据治理:
- benchmark 数据仍放在
data/benchmark_root/基本教育/ - 文件发现仍走
configs/file_registry.yaml - 运行时执行由
src/elbench/execution/basic_education.py负责 - 内部运行时实现位于
src/elbench/basic_education_runtime/
输出结构
outputs/
├── raw_responses/
├── judged_results/
├── summaries/
└── logs/
这些目录是运行时产物,刻意被 Git 忽略。整理后的排行榜与审计汇总提交在 results/ 下。
配置面
configs/models.yaml
具体的被测模型与裁判模型实例,含超时、重试、限速与 provider 参数。
configs/providers.yaml
provider adapter 注册表与默认 provider 能力。当前内置 adapter:
mockopenai_compatible
configs/judges.yaml
任务到裁判的路由:
rulellm
configs/basic_education.yaml
基本教育内部运行时的场景级设置。该文件不替代注册表,而是对其补充。
扩展 ELBench
新增 provider
- 在
src/elbench/providers/下实现 adapter。 - 在
configs/providers.yaml中注册。 - 在
configs/models.yaml中加入具体模型。
新增 benchmark 文件
- 把数据文件放到
data/benchmark_root/下。 - 在
configs/file_registry.yaml中注册。 - 在
configs/field_mappings.yaml中加字段映射。 - 在
configs/judges.yaml中路由判分。 - 新增或复用测试。
新增未来模块
ELBench 已为更多模块预留空间,预期路径仍是:
- 加模块注册
- 加文件注册
- 加字段映射
- 加裁判路由
- 仅当配置无法表达行为时才加任务专属逻辑
不需要重写主 runner。
维护
权威的团队维护指南是 docs/TEAM_MAINTENANCE_GUIDE.zh-CN.md,它说明每个维护目录的用途、哪些路径仅运行时、以及哪些该提交哪些不该提交。
状态
已实现:
- 配置系统
- 文件注册表
- JSONL/XLSX/YAML loader
- 统一 sample/result schema
- provider 抽象
- 并发 runner
- 重试与检查点续跑
- 原始/判分/汇总/日志输出
- 客观题规则裁判
- 主观题
LLM-as-a-Judge执行路径 - 基于内部运行时模块的基本教育桥接
仍刻意未完成:
- 面向每个外部厂商的生产级 adapter
- 最终化的主观裁判 rubric 与 prompt
- 超出当前已注册文件的完整未来模块接入