目录结构
benchmark.yaml
benchmark.yaml
字段
string
必填
叶子名。已发布的包引用形式是
<owner>.<name>;内置的保持裸名。lm-eval | evalscope | rtl | judge | safety
必填
哪个 harness 执行评测。见下表。
string[]
必填
runner 认识的 suite 名。对
lm-eval 来说就是它的 task 名。string
默认值:"general"
看板分区——
math、code、knowledge、chinese、instruction 等。mixed
跑它的默认参数。
batch_size 默认 auto,limit 限制样本数。用户提交时都能覆盖;
你声明的是「不加任何参数时该是什么」。这正是包存在的意义:不该有人需要记住 GSM8K 要 5-shot,或者 HumanEval 需要
--confirm_run_unsafe_code。<owner>/<name>
只有
judge runner 读它,而对那个 runner 来说它就是这个 benchmark 的定义。
换个 rubric 就是另一个 benchmark——所以它是一个声明字段,
而不是埋在 extra_args 里、从 catalog 上看不见的一个 flag。指标
每一条说明从 runner 的报告里取哪个数、怎么呈现它。string
必填
runner 产出的原始 metric 名,一字不差——lm-eval 的
exact_match,strict-match。
这是给机器看的名字,不可翻译。string
看板列头显示什么。默认取
key——那对机器够用,对人不够。higher | lower | neutral
默认值:"higher"
哪个方向算好。对比视图据此给回退上色。
bool
默认值:"true"
值是不是 0–1 的占比,决定看板按不按百分比渲染。
bool
默认值:"false"
跨 run 对比默认看的那个指标。应当恰好有一个是 primary;一个都没有时取第一个。
五个 runner
lm-eval 和 evalscope 用规则判对错——精确匹配、解析答案。judge 和 safety
用你的团队写的 rubric 判。后两者的 suite 策略和 rubric 内容平台都不提供:
它们属于部署方,平台内置任何一个都等于替别人下了一个它没资格下的结论。双语展示文案
manifest 用英文写,翻译放i18n: 块——包级和每个 metric 上都可以:
确认成功
在外部打分的基准
打分发生在平台够不到的地方时——有授权限制的 harness、真实的测试台架—— 不要在这里跑,把分数报回来:内置了哪些
gsm8k、math、humaneval、mmlu、ceval、ifeval,以及 RTL 系列
(rtl-repo、rtllm-v2、verilogeval-v2、verilogeval-v2-completion、cvdp)。
这几个轴是刻意挑的:数学、代码、知识回退、中文、指令遵循。
后训练最常见的情况是「改好了一个,悄悄弄坏了另一个」,
同时跑好几个的意义就是让这件事在一屏之内可见。