在 lm-evaluation-harness 中评测 GreekMMLU:原生希腊语多任务基准的接入、分组与源码剖析
【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness
GreekMMLU 是一个完全以希腊语原生编写、覆盖 45 个学科领域、总计 21,805 道选择题的大规模多任务语言理解基准,专门用于检验大语言模型在希腊语上的真实能力。本指南以 lm_eval/tasks/greekmmlu/README.md 为骨架,结合仓库内的 YAML 配置与 utils.py 源码,完整讲解如何在本项目(lm-evaluation-harness)中加载 GreekMMLU、运行整体/分领域评测、理解提示词构造与答案解析机制,以及如何将结果输出为可复现的报告。
GreekMMLU 基准背景
为什么需要希腊语原生基准
大语言模型通常在海量多语种语料上训练,其中包含希腊语,但可靠的希腊语评测基准长期缺乏——尤其是基于真实、母语来源内容的基准。以往的数据集往往是从英语机器翻译而来,难以捕捉希腊语的语言学与文化的独特性。GreekMMLU 正是为弥补这一缺口而设计:全部题目均出自希腊学术、专业和政府考试,由母语者撰写或审定,而非翻译产物。
数据集规模与设计要点
| 设计维度 | 具体内容 |
|---|---|
| 题目总数 | 21,805 道多选题 |
| 学科领域 | 45 个科目,隶属新定义的学科分类法 |
| 难度分层 | 从小学到专业考试的多个教育难度等级 |
| 公开样本 | 16,857 条(公开释放) |
| 私有样本 | 4,948 条(保留给私有榜单,用于抗污染评测) |
据论文摘要,研究者在超过 80 个开源与闭源 LLM 上评测后发现:前沿模型与开放权重模型之间、以及希腊语适配模型与通用多语模型之间存在显著的性能差距,并系统分析了模型规模、适配与提示词等因素对性能的影响。
在 lm-evaluation-harness 中加载 GreekMMLU
任务目录与文件组成
GreekMMLU 在仓库中的注册目录为 lm_eval/tasks/greekmmlu/,包含 50 个科目 YAML、4 个领域聚合 YAML、1 个顶层聚合 YAML、1 个默认模板 YAML、1 个 README 与 1 个工具函数模块:
_default_greekmmlu_template_yaml:所有科目任务共用的默认配置模板;_greekmmlu.yaml:顶层组greekmmlu(聚合四大领域);_greekmmlu_stem.yaml/_greekmmlu_humanities.yaml/_greekmmlu_social_sciences.yaml/_greekmmlu_other.yaml:四个领域组;greekmmlu_*.yaml(50 个):每个科目一个任务;utils.py:负责题目与选项的格式化、答案标签提取;_generate_configs.py:从科目清单批量生成 YAML 的脚本(可推断其用于辅助维护配置)。
默认模板详解
所有科目任务通过include继承同一个模板 lm_eval/tasks/greekmmlu/_default_greekmmlu_template_yaml,其关键字段如下:
dataset_path: dascim/GreekMMLU test_split: test fewshot_split: dev fewshot_config: sampler: first_n output_type: multiple_choice doc_to_text: !function utils.doc_to_text doc_to_choice: !function utils.doc_to_choice doc_to_target: answer metric_list: - metric: acc aggregation: mean higher_is_better: true metadata: version: 1.0各字段含义:
dataset_path:Hugging Face 数据集标识符dascim/GreekMMLU,评测时按需自动下载;test_split/fewshot_split:测试集与 few-shot 样本取自test与dev两个划分;fewshot_config.sampler: first_n:取前 N 条样本作为示例(即默认顺序采样);output_type: multiple_choice:声明这是多选任务,lm-evaluation-harness 会按多选题逻辑(对每个选项计算对数似然并取最高者)评分;doc_to_text/doc_to_choice/doc_to_target:分别指定如何生成提示文本、候选答案标签、标准答案字段;metric_list:使用acc(准确率),聚合方式为mean,值越高越好;metadata.version: 1.0:任务版本号,用于缓存键与结果溯源。
科目任务的继承结构
每个科目任务只是极薄的继承文件,例如 greekmmlu_biology.yaml:
include: _default_greekmmlu_template_yaml tag: greekmmlu_stem_tasks task: greekmmlu_biology task_alias: Biology dataset_name: Biologytag: greekmmlu_stem_tasks:把该任务归入 STEM 领域标签;dataset_name: Biology:指定 HF 数据集中对应的子集名称。
类似地,greekmmlu_physics_professional.yaml使用dataset_name: Physics_Professional,greekmmlu_geography_primary_school.yaml使用dataset_name: Geography_Primary_School并归入greekmmlu_social_sciences_tasks。由此可以确认:数据集的每个子集名直接与科目+难度(如Primary_School、University、Professional)对应,这正体现了基准按教育难度分层设计。
分组(Groups)与评测命令
顶层组与领域组
README 中定义了一个顶层组与四个领域组:
gmmlu:评测全部 GreekMMLU 任务;gmmlu_stem:仅 STEM(科学、技术、工程、数学)领域;gmmlu_social_sciences:仅社会科学领域;gmmlu_humanities:仅人文学科领域;gmmlu_other:其余科目。
对应的聚合配置在 lm_eval/tasks/greekmmlu/_greekmmlu.yaml 中可以看到顶层组的实现:
aggregate_metric_list: - aggregation: mean metric: acc weight_by_size: true group: greekmmlu task: - greekmmlu_social_sciences - greekmmlu_stem - greekmmlu_other - greekmmlu_humanities四个领域组的配置结构完全一致,例如 lm_eval/tasks/greekmmlu/_greekmmlu_stem.yaml:
aggregate_metric_list: - metric: acc weight_by_size: true group: greekmmlu_stem group_alias: stem task: - greekmmlu_stem_tasks注意weight_by_size: true:领域组与顶层组的汇总准确率均按各子任务样本量加权平均,而非简单平均,这样大样本科目对总分的影响更符合其规模。group_alias则为stem等短名,便于在结果展示与 CLI 参数中使用。
运行整体评测
使用lm_eval命令行工具(入口见 lm_eval/_cli/run.py)即可评测整个 GreekMMLU 组:
lm_eval --model hf \ --model_args pretrained=meta-llama/Llama-3.2-3B \ --tasks gmmlu \ --batch_size 8 \ --output_path results/greekmmlu参数说明:
--model hf:使用 Hugging Face transformers 加载模型;--model_args pretrained=...:指定模型名称或本地路径;--tasks gmmlu:评测顶层组(含全部 45 个学科任务);--batch_size 8:推理批大小,可按显存调整;--output_path results/greekmmlu:把完整结果(含每个任务的 acc 明细与聚合值)写入该目录。
如需只评测某个领域,将--tasks换成gmmlu_stem、gmmlu_social_sciences、gmmlu_humanities或gmmlu_other即可。
评测单个科目
--tasks同样接受单个科目任务名,例如:
lm_eval --model hf \ --model_args pretrained=meta-llama/Llama-3.2-3B \ --tasks greekmmlu_biology \ --batch_size 8这在调试某个科目配置或快速验证数据集加载时非常有用。任务名即各 YAML 中的task字段,如greekmmlu_biology、greekmmlu_physics_professional。
提示词构造与答案解析源码剖析
希腊语提示词模板
lm_eval/tasks/greekmmlu/utils.py 是整个任务格式化的核心,其提示模板为:
PROMPT = "Αυτό είναι μια ερώτηση {}. Επίλεξε τη σωστή απάντηση!\n\nΕρώτηση: {}\n{}\n\n Απάντηση:"该模板的含义是:“这是一个关于{学科}的问题。请选择正确的答案!\n\n问题:{题目}\n{选项}\n\n 答案:”。也就是说,每一道题都会带上用希腊语书写的学科名(subject),向模型传递领域上下文,这与 MMLU 系基准的常见做法一致。
学科名的希腊语映射
doc_to_text首先把数据集中的英文学科名通过subjects_gr字典转换为希腊语。例如:
Economics→ΟικονομικώνMedicine→ΙατρικήςPhysics→ΦυσικήςGreek Mythology→Ελληνικής ΜυθολογίαςComputer Networks & Security→Δικτύων Υπολογιστών και Ασφάλειας
字典中共有 30 个映射(utils.py 中subjects_gr),当科目名不在映射中时会原样回退为英文,避免 KeyError 导致评测中断。从源码结构看,该字典维护了英文名与希腊语学科名的双语言对应关系,是提示词本地化的关键。
选项标签与答案提取
选项统一使用希腊字母标签:
LABELS = ["Α.", "Β.", "Γ.", "Δ."]doc_to_text会把每个选项拼成"Α. 选项文本"、"Β. 选项文本"这样的行,并用换行连接后填入提示模板;doc_to_choice则根据选项数量len(doc["choices"])返回对应的单个字母标签列表(如['Α', 'Β', 'Γ', 'Δ']),供 lm-evaluation-harness 的多选题评分逻辑逐选项计算对数似然、取概率最高者作为模型预测。
核心代码如下:
def doc_to_text(doc): question = doc["question"] choices = doc["choices"] subject = doc["subject"] subject_gr = subjects_gr.get(subject, subject) formatted_choices = [f"{LABELS[i]} {choice}" for i, choice in enumerate(choices)] choices_text = "\n".join(formatted_choices) return PROMPT.format(subject_gr, question, choices_text) def doc_to_choice(doc): num_choices = len(doc["choices"]) return [LABELS[i][0] for i in range(num_choices)]doc_to_target: answer则直接引用数据集中的answer字段作为标准答案。整个“提示词 → 标签 → 标准答案”的链路与默认模板中的output_type: multiple_choice配合,形成了完整的多选题评测闭环。
结果解读与复现建议
输出结果包含什么
运行完成后,--output_path指定的目录下会生成评测结果文件。以gmmlu顶层组为例,你可以获得:
- 每个科目任务的
acc值(如greekmmlu_biology、greekmmlu_law各自的准确率); - 每个领域组的加权聚合值(
stem、humanities、social_sciences、other); - 顶层组
gmmlu的整体加权准确率。
由于weight_by_size: true,请勿把各科目准确率直接求平均与组结果比较,应以结果文件中的聚合值为准。
与论文结论对照阅读
论文摘要给出的三个核心观察——前沿与开放权重模型差距明显、希腊语适配模型优于通用多语模型、规模与提示方式影响显著——都可以通过本仓库的配置逐一复现验证:
- 用
--tasks gmmlu在同一模型上重复评测,观察整体加权 acc; - 对比
gmmlu_stem与gmmlu_humanities的领域差异; - 对比同一模型带/不带 few-shot(调整
--num_fewshot)的表现差异,检验提示方式的影响。
引用与版权
如需在论文或技术报告中引用该基准,可直接使用 README 中提供的 BibTeX:
@article{zhang2026greekmmlu, title={GreekMMLU: A Native-Sourced Multitask Benchmark for Evaluating Language Models in Greek}, author={Zhang, Yang and Konomi, Mersin and Xypolopoulos, Christos and Divriotis, Konstantinos and Skianis, Konstantinos and Nikolentzos, Giannis and Stamou, Giorgos and Shang, Guokan and Vazirgiannis, Michalis}, journal={arXiv preprint arXiv:2602.05150}, year={2026} }小结
本文以 lm_eval/tasks/greekmmlu/README.md 为主线,完整梳理了 GreekMMLU 在 lm-evaluation-harness 中的落地方式:数据集来自dascim/GreekMMLU,50 个科目任务通过共享模板与标签机制组织成四个领域组和一个顶层组gmmlu;评测时既可用--tasks gmmlu一键跑全量,也可精确到领域或单个科目;提示词由 utils.py 中的希腊语模板、学科名映射与希腊字母标签共同构造。读者可在此基础上直接开展希腊语模型能力的基准评测与复现实验。
【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考