Evalita-LLM:在 lm-evaluation-harness 中评估意大利语大语言模型的多任务基准指南 📅 发布时间:2026/9/15 12:42:29 👁 浏览次数: Evalita-LLM在 lm-evaluation-harness 中评估意大利语大语言模型的多任务基准指南【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harnessEvalita-LLM 是专为意大利语大语言模型LLM评估设计的基准由 Magnini 等人在 2025 年提出arXiv:2502.02289。本指南围绕该基准在 lm-evaluation-harness 中的完整集成实现展开讲解其任务分组体系、YAML 配置结构、多提示词multi-prompt评估机制以及生成式任务的指标聚合原理读者将掌握通过lm_eval命令一键评估任意模型在 10 个意大利语任务上表现的具体方法并理解其评测结果在仓库中的计算方式。一、基准背景为什么需要原生意大利语评估Evalita-LLM 是 EVALITA 评测活动意大利语自然语言处理评测衍生出的 LLM 基准其设计目标与仓库中其他多语言基准如 global_mmlu不同它具备三个区分性特征所有任务均为原生意大利语native Italian数据直接以意大利语构建避免了从英语翻译成意大利语所带来的语言损耗和潜在文化偏见在成熟的多选题任务之外引入生成式任务generative tasks使模型评测更接近与 LLM 的自然交互方式而非仅限于基于困惑度perplexity的选项打分每个任务都使用多个提示词prompts进行评估缓解模型对特定提示词的敏感性使评测结果更公平、更客观。在仓库中该基准的完整实现位于 lm_eval/tasks/evalita_llm核心入口文档即 lm_eval/tasks/evalita_llm/README.md。引用信息如果论文或报告中使用了该基准README 提供了标准的 BibTeX 引用Magnini, Zanoli, Resta, Cimmino, Albano, Madeddu, Patti《Evalita-LLM: Benchmarking Large Language Models on Italian》2025。二、任务分组体系三个组合评测入口仓库将 Evalita-LLM 的全部任务组织为三个层级的组group分别在三个 YAML 文件中定义组名别名group_alias包含内容定义文件evalita-mpEvalita-LLM全部 10 个任务perplexity 类 生成类_evalita-mp.yamlevalita-mp_genEvalita-LLM - Generative仅生成式任务4 个_evalita-mp_gen.yamlevalita-mp_mcEvalita-LLM - PPL-based仅基于困惑度的任务6 个_evalita-mp_mc.yaml2.1 全量组 evalita-mp_evalita-mp.yaml 通过task列表聚合 10 个任务并使用aggregate_metric_list声明组级聚合指标为acc准确率且weight_by_size: True表示按样本量加权平均group: evalita-mp group_alias: Evalita-LLM task: - evalita-mp_te - evalita-mp_sa - evalita-mp_wic - evalita-mp_hs - evalita-mp_at - evalita-mp_faq - evalita-mp_sum_fp - evalita-mp_ls - evalita-mp_ner_group - evalita-mp_re aggregate_metric_list: - metric: acc weight_by_size: True metadata: version: 12.2 生成式子组 evalita-mp_gen_evalita-mp_gen.yaml 只保留 4 个generate_until输出类型的任务Summarizationevalita-mp_sum_fp、Lexical Substitutionevalita-mp_ls、Named Entity Recognitionevalita-mp_ner_group、Relation Extractionevalita-mp_re。2.3 困惑度子组 evalita-mp_mc_evalita-mp_mc.yaml 只保留 6 个multiple_choice输出类型的任务Textual Entailmentevalita-mp_te、Sentiment Analysisevalita-mp_sa、Word in Contextevalita-mp_wic、Hate Speech Detectionevalita-mp_hs、Admission Testsevalita-mp_at、FAQevalita-mp_faq。三、可单独评估的 10 个任务README 明确列出以下任务均可脱离组单独评估每个任务名即--tasks参数可用的任务标识符任务标识符任务名称意大利语任务输出类型evalita-mp_teTextual Entailment文本蕴含multiple_choiceevalita-mp_saSentiment Analysis情感分析multiple_choiceevalita-mp_wicWord in Context上下文词义multiple_choiceevalita-mp_hsHate Speech Detection仇恨言论检测multiple_choiceevalita-mp_atAdmission Tests入学测试multiple_choiceevalita-mp_faqFAQ问答multiple_choiceevalita-mp_sum_fpSummarization摘要生成generate_untilevalita-mp_lsLexical Substitution词汇替换generate_untilevalita-mp_ner_groupNamed Entity Recognition命名实体识别generate_untilevalita-mp_reRelation Extraction关系抽取generate_until从源码结构可以推断每个任务的实现采用模板 提示词变体的分层组织底层是_*_template_yaml定义数据集、输出类型、目标提取与指标上层是_evalita-mp_*_pN.yamlN1..6定义不同提示词的变体再由_evalita-mp_*_tasks.yaml通过tag机制聚合。四、快速上手运行评估README 给出的标准评估命令如下使用 Hugging Face 模型后端hf加载 Llama-2-7B在cuda:0上以auto批大小运行全量基准lm_eval --model hf --model_args pretrainedmeta-llama/Llama-2-7b-hf --tasks evalita-mp --device cuda:0 --batch_size auto参数含义与仓库 CLI 实现lm_eval/_cli对应如下--model hf使用 huggingface.py 实现的本地 Hugging Face 模型加载器--model_args pretrained...指定模型名称或本地路径--tasks evalita-mp评测全量组也可替换为evalita-mp_gen、evalita-mp_mc或上表中的单个任务名支持逗号分隔多个任务--device cuda:0指定推理设备--batch_size auto自动选择批大小。若只评估生成式子集可运行lm_eval --model hf --model_args pretrainedmeta-llama/Llama-2-7b-hf --tasks evalita-mp_gen --device cuda:0 --batch_size auto五、基于困惑度的任务实现详解evalita-mp_mc 组这 6 个任务全部使用output_type: multiple_choice即对每个选项计算对数似然取概率最高的选项作为答案。所有数据集托管在 Hugging Face 的evalitahf组织下。5.1 Textual Entailmentevalita-mp_te模板 _te_template_yaml 定义dataset_path: evalitahf/textual_entailment output_type: multiple_choice test_split: test fewshot_split: dev validation_split: dev doc_to_target: {{ 0 if entailment SI else 1 }} doc_to_choice: [Sì, No] metric_list: - metric: acc aggregation: mean higher_is_better: true标签字段entailment为SI时目标为 0Sì是否则为 1No否选项为意大利语的是/否提示词变体 _evalita-mp_te_p1.yaml 定义了doc_to_textLa frase: {{text1}} implica logicamente che la frase: {{text2}} sia vera?句子 X 在逻辑上蕴含句子 Y 为真吗。仓库保留被注释的旧提示词用于对比说明多提示词策略的演进任务组 _evalita-mp_te_tasks.yaml 以tag: evalita-mp_te_tasks关联所有 prompt 变体并以acc按样本量加权聚合。5.2 Sentiment Analysisevalita-mp_sa模板 _sa_template_v2_yaml 定义四分类情感任务dataset_path: evalitahf/sentiment_analysis output_type: multiple_choice test_split: test fewshot_split: train validation_split: test doc_to_target: !function utils.sa_doc_to_target_v2 doc_to_choice: [positivo, negativo, neutrale, misto]数据集字段opospositive 极性与onegnegative 极性被 utils.py 中的sa_doc_to_target_v2映射为 0/1/2/3 四个类别索引pos1,neg0 → 0pos0,neg1 → 1双 0 → 2双 1 → 3对应选项[positivo, negativo, neutrale, misto]该任务不是简单用acc而是使用 F1 指标且聚合函数为 metrics.py 中的自定义_aggreg_sa由于提示词把任务改写成四分类多项选择而原始标注是正向/负向两个独立二分类opos、oneg聚合时先通过_map_to_original_labels将四分类预测/标签还原成两个二分类标签序列再分别计算两个类的 F1 并取平均从而与原始任务的评分口径对齐提示词变体 _evalita-mp_sa_p1.yaml 的doc_to_text为Qual è il sentiment espresso nel seguente tweet: {{text}}?。5.3 Word in Contextevalita-mp_wic模板 _wic_template_yamldataset_path: evalitahf/word_in_context dataset_name: default output_type: multiple_choice test_split: test fewshot_split: dev validation_split: dev doc_to_target: label # 0: No, 1: Si doc_to_choice: [No, Sì] metric_list: - metric: f1 higher_is_better: true aggregation: f1该任务判断同一单词在两个上下文中是否词义一致目标字段为label0 表示否、1 表示是选用 F1 指标。5.4 Hate Speech Detectionevalita-mp_hs模板 _hs_template_yamldataset_path: evalitahf/hatespeech_detection output_type: multiple_choice test_split: test_all fewshot_split: dev validation_split: dev doc_to_target: hs # 0 Falso, 1 Vero doc_to_choice: [Falso, Vero]判断文本是否包含仇恨言论选项为意大利语Falso假/ Vero真测试划分使用test_all。5.5 Admission Testsevalita-mp_at模板 _at_template_yaml 为多选题任务dataset_path: evalitahf/admission_test output_type: multiple_choice test_split: test fewshot_split: dev validation_split: test doc_to_target: Correct doc_to_choice: [A, B, C, D, E]提示词变体 _evalita-mp_at_task_p1.yaml 将其塑造成医学入学考题doc_to_text: Dato il seguente quesito di medicina: {{Question}} qual è la risposta corretta? doc_to_choice: {{[A,B,C,D,E]}} doc_to_target: {{ A if Correct A else B if Correct B else C if Correct C else D if Correct D else E}} metric_list: - metric: acc aggregation: mean higher_is_better: true - metric: acc_norm aggregation: mean higher_is_better: true该变体同时上报acc与acc_norm两种指标acc_norm按选项长度归一化对数似然且通过 Jinja 表达式把正确答案字母映射为对应选项文本作为目标。5.6 FAQevalita-mp_faq模板 _faq_template_yamldataset_path: evalitahf/faq test_split: test_1 fewshot_split: dev_1 doc_to_target: !function utils.faq_doc_to_target doc_to_choice: [A, B, C, D] output_type: multiple_choice目标由 utils.py 的faq_doc_to_target将数据集字段correct_answerA/B/C/D映射为选项索引若取值不在范围内会通过日志发出警告。六、生成式任务实现详解evalita-mp_gen 组这 4 个任务使用output_type: generate_until模型自由生成文本再通过process_results函数与金标对比计算指标。生成停止条件统一使用until: [/s]。6.1 Summarizationevalita-mp_sum_fp模板 _sum_template_fp_yaml 使用 Fanpage 新闻摘要数据集dataset_path: ARTeLab/fanpage output_type: generate_until generation_kwargs: until: - /s test_split: test doc_to_target: {{target}}指标计算依赖 sum_utils.pyprocess_results_sum通过evaluate库加载 ROUGE 指标对每个样本计算rouge1并以rouge1作为metric_list中的上报指标。组定义 _evalita-mp_sum_fp_task.yaml 声明metric: rouge1、weight_by_size: True。仓库中还存在基于silvia-casola/WITS数据集与test_100划分的另一套摘要模板 _sum_template_yaml可作为对比参考。6.2 Lexical Substitutionevalita-mp_ls模板 _ls_template_yamldataset_path: evalitahf/lexical_substitution test_split: test validation_split: dev fewshot_split: dev output_type: generate_until generation_kwargs: until: - /s doc_to_target: !function utils.ls_doc_to_target process_results: !function utils.ls_process_results metric_list: - metric: f1 higher_is_better: True aggregation: !function metrics._aggreg_ls该任务要求模型为句子中目标词给出同义词。评分逻辑在 utils.py 中金标由ls_doc_to_target序列化为逗号分隔的同义词列表若无标注则返回占位符NOSYNls_process_results用正则LS_SPLIT_REGEX r[^,]切分模型输出最多取前 10 个候选词与标注者给出的同义词及其频次比对计算精度precision并返回(prec, has_answ, has_annotation)三元组组级聚合 metrics.py 的_aggreg_ls在语料层面汇总|A|模型给出答案数与|T|有标注数计算最终 precision、recall 与 F1并对分母为 0 的情况做了保护。6.3 Named Entity Recognitionevalita-mp_ner_groupNER 是唯一拥有子组结构的生成式任务。_evalita-mp_ner_group.yaml 聚合三个领域子组evalita-mp_ner_tasks_fic虚构类、evalita-mp_ner_tasks_adg、evalita-mp_ner_tasks_wn对应仓库中的_evalita-mp_ner_fic*、_evalita-mp_ner_adg*、_evalita-mp_ner_wn*系列文件。模板 _ner_template_yamldataset_path: evalitahf/entity_recognition output_type: generate_until generation_kwargs: until: - /s - \n doc_to_target: !function utils.ner_doc_to_target process_results: !function utils.ner_process_results metric_list: - metric: f1 higher_is_better: True aggregation: !function metrics._aggreg_ner模型输出采用实体$类型,实体$类型的序列化格式分隔符见 utils.py 中的NER_ENTITY_SEPARATOR ,与NER_TYPE_SEPARATOR $无实体时返回NOENT。ner_process_results将解析后的(实体文本, 类型)列表与金标实体逐项匹配把结果映射为 PER/LOC/ORG/O 四类标签NER_MAPPING并对预测多于金标补齐假阳性与无实体且无预测空标签等边界情况做了显式处理组级聚合_aggreg_ner将语料内所有预测/金标拼接后计算除O类以外的平均 F1。6.4 Relation Extractionevalita-mp_re模板 _re_template_yamldataset_path: evalitahf/relation_extraction test_split: test output_type: generate_until generation_kwargs: until: - /s doc_to_target: !function utils.re_doc_to_target process_results: !function utils.rel_process_results_v3 metric_list: - metric: f1 higher_is_better: True aggregation: !function metrics._aggreg_rel输出格式为实体1$实体2%实体3$实体4INTRA_REL_SEPARATOR $、INTER_REL_SEPARATOR %无关系返回NOREL。rel_process_results_v3实现不区分关系抽取顺序的评分完整覆盖四种情形——模型未答且金标存在假阴性、均无真阴性、模型多答假阳性、以及逐条比对匹配已匹配的关系从候选集中删除多余预测计为假阳性。组级聚合_aggreg_rel按 macro 平均计算 F1。七、多提示词multi-prompt机制同一任务 6 套提示词README 强调的所有任务用多个提示词评估在仓库中体现为_evalita-mp_*_p1.yaml至_evalita-mp_*_p6.yaml的变体文件各任务变体数量不一如 TE/SA/WIC/HS/FAQ 有 6 个LS 有 2 个AT 有 6 个。每个变体的结构一致tag: evalita-mp_te_tasks # 与组定义中的 task 项对应的 tag include: _te_template_yaml # 继承模板的全部字段 task: evalita-mp_te_prompt-1 # 变体任务名 task_alias: prompt-1 # 报告中的显示别名 doc_to_text: ... # 该变体独有的提示词以 TE 为例_evalita-mp_te_p1.yaml 通过include继承模板的dataset_path、output_type、doc_to_target等全部字段仅重写doc_to_text并允许在变体级别覆盖metric_list如 SA 变体即覆盖了聚合函数。这种模板继承 变体重写的设计使得新增提示词只需新增一个几行的 YAML 文件与仓库任务配置规范见 docs/config_files.md一致。八、指标与自定义聚合函数总览汇总各任务的评测指标与实现位置任务指标聚合方式实现位置TE / AT / FAQaccAT 另有 acc_normmean组级按样本加权内建指标SAf1自定义_aggreg_sa还原 opos/oneg 二分类后平均metrics.pyWICf1内建 f1内建指标HSacc组级mean内建指标SUM_FProuge1内建 rouge1sum_utils.pyLSf1自定义_aggreg_ls语料级 P/R/F1metrics.pyNERf1自定义_aggreg_ner去除 O 类的平均 F1metrics.pyREf1自定义_aggreg_relmacro F1metrics.pymetrics.py 基于sklearn.metrics的f1_score、precision_score、recall_score实现全部自定义聚合并在文件末尾保留了文档定年Document Dating任务的_aggreg_dd说明该文件随基准演进持续扩展。九、版本变更记录与维护说明README 记录了当前唯一一条变更v0.1将evalita-mp_sum_fp的小型变体组重命名为evalita-mp_sum_fp_small以解决其与完整变体full variant之间的重复组名冲突。仓库文件系统印证了这一变更摘要任务目录中同时存在_evalita-mp_sum_fp-small_task.yaml、_evalita-mp_sum_fp-small_p1.yaml、_evalita-mp_sum_fp-small_p2.yaml与_evalita-mp_sum_fp_task.yaml、_evalita-mp_sum_fp_p1.yaml等文件二者分别对应不同的数据规模变体。十、配套测试与质量保障作为 lm-evaluation-harness 的标准任务Evalita-LLM 的实现遵循仓库统一的配置加载、few-shot 上下文构建与指标上报流程相关机制见 docs/task_guide.md 与 docs/interface.md。所有任务的metadata.version均为 1 或 1.0符合任务版本化要求README 末尾的 Checklist 也确认该基准已有公开论文已引用、原始实现由基准作者直接贡献且仓库 README 对各变体的评估目标给出了明确说明。结语Evalita-LLM 在 lm-evaluation-harness 中的集成是一个原生语言基准 模板化任务组织 多提示词 生成式指标定制的完整范例通过evalita-mp、evalita-mp_gen、evalita-mp_mc三个入口即可对任意 Hugging Face 模型展开全量或分组的意大利语评测include继承机制让 10 个任务 60 余个提示词变体得以极简维护而metrics.py与utils.py中的自定义函数则保证了生成式任务在语料层面的精确评分。读者可直接复制上文命令将--tasks替换为所需的组名或任务名快速复现论文中的意大利语评测流程。【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考