Evaluation

评测框架

统一评测引擎:批量生成 → 答案提取 → 评分 → JSON 报告,四大内置基准开箱即用,支持跨实验对比。

pass@k
HumanEval · 代码生成
acc
GSM8K · 数学推理
acc
MMLU · 多学科知识
PPL
Perplexity · 语言建模

基准详情

统一 JSONL 数据格式,便于自定义扩展。

Benchmark维度指标数据格式
HumanEval代码生成pass@1 / pass@10prompt + test
GSM8K数学推理accuracyquestion + answer
MMLU多学科知识accuracyquestion + ABCD
Perplexity语言建模PPLtext

运行评测

全量或抽样评测,结果输出为可对比的 JSON 报告。

# 全量评测(四大基准) $ starmoon-z1 eval --model ./output/final \ --benchmarks humaneval,gsm8k,mmlu,perplexity # 快速验证(限制 50 条样本) $ starmoon-z1 eval --model ./output/final \ --benchmarks gsm8k --max-samples 50

eval 参数

常用参数与默认值一览:

参数默认值说明
--model必填模型路径
--benchmarksgsm8k逗号分隔:humaneval,gsm8k,mmlu,perplexity
--data-dirNone自定义数据目录
--output./eval_results报告输出目录
--max-new-tokens512最大生成长度
--temperature0.0采样温度(0 = greedy)
--max-samplesNone限制样本数

扩展自定义基准

继承 Benchmark 基类实现三个方法,注册即可接入统一引擎:

# 继承基类 → 注册 → 参与统一评测 class MyBenchmark(Benchmark): name = "my_bench" metric_name = "accuracy" def load_data(self, data_path=None): ... def build_prompt(self, sample): ... def score(self, sample, generation): ... BENCHMARK_REGISTRY["my_bench"] = MyBenchmark