
大模型推理模型微调模型推理服务【免费下载链接】s1s1: Simple test-time scaling项目地址https://gitcode.com/gh_mirrors/s1/s1点击查看免费下载导读本文面向在 lm-evaluation-harness 框架中复现多语言常识推理评测的开发者系统讲解 arc_multilingual 任务组的完整实现它源自 Okapi 项目提出的多语言指令微调评测体系将经典的 AI2 ARCAI2 Reasoning Challenge科学选择题数据集扩展至 31 种语言。读完本文你将掌握该任务组的目录结构、YAML 配置继承机制、多语言数据处理管线process_docs以及实际运行评测与解读指标的方法。背景Okapi 与多语言评测基准多语言 ARC 任务组由 Okapi 项目引入。Okapi 是第一个基于 RLHF人类反馈强化学习对 LLM 进行多语言指令微调的系统其核心论文Okapi: Instruction-tuned Large Language Models in Multiple Languages with Reinforcement Learning from Human Feedback指出当时的开源指令微调模型大多只覆盖英语和少数流行语言而少数多语言指令微调工作也仅使用 SFT监督微调方法。为此 Okapi 提出了包含指令与回答排序数据在内的 26 种语言资源并配套发布了多语言生成式 LLM 评测基准数据集以便研究者公平地评估 RLHF 与 SFT 在多语言指令微调上的效果差异。本任务组所评测的底层数据是 m_arc 多语言 ARC 数据集。ARC 数据集本身由 AI2Allen Institute for AI发布包含约 7,787 道科学考试选择题原文为英文涵盖多个年级水平题目被划分为挑战集Challenge Set2,590 道检索与共现方法均无法答对的难题与易集Easy Set5,197 道。多语言版本将这组科学选择题翻译为多种语言用于检验模型在非英语环境下的常识与科学推理能力。事实说明以上背景均来自 arc_multilingual/README.md 中引用的论文摘要以及 arc/README.md 对原始 ARC 数据集的描述。任务组定义31 个语言子任务根据 arc_multilingual/README.md 的 Groups and Tasks 一节任务组Grouparc_multilingual任务Tasksarc_{ar,bn,ca,da,de,es,eu,fr,gu,hi,hr,hu,hy,id,it,kn,ml,mr,ne,nl,pt,ro,ru,sk,sr,sv,ta,te,uk,vi,zh}即按 ISO 语言代码拆分为 31 个独立子任务覆盖阿拉伯语ar、孟加拉语bn、加泰罗尼亚语ca、丹麦语da、德语de、西班牙语es、巴斯克语eu、法语fr、古吉拉特语gu、印地语hi、克罗地亚语hr、匈牙利语hu、亚美尼亚语hy、印尼语id、意大利语it、卡纳达语kn、马拉雅拉姆语ml、马拉地语mr、尼泊尔语ne、荷兰语nl、葡萄牙语pt、罗马尼亚语ro、俄语ru、斯洛伐克语sk、塞尔维亚语sr、瑞典语sv、泰米尔语ta、泰卢固语te、乌克兰语uk、越南语vi与中文zh。在 lm-evaluation-harness 的目录布局中每个语言对应一个独立的 YAML 配置文件例如 arc_de.yaml、arc_zh.yaml。评测时既可以对单个语言子任务单独评测也可以以arc_multilingual作为组名一次性评测全部 31 个语言并聚合结果。配置体系基类 YAML 与语言级 YAML 的继承与 lm-evaluation-harness 中绝大多数任务一样多语言 ARC 采用基类 子类的 YAML 继承组织方式将公共配置收敛到基类文件中语言差异仅体现在少量字段上。基类配置_arc_yaml基类配置 定义了所有语言子任务共享的评测协议tag: - arc_multilingual dataset_path: null dataset_name: null output_type: multiple_choice training_split: train validation_split: validation test_split: test process_docs: !function utils.process_docs doc_to_text: query doc_to_target: gold doc_to_choice: choices should_decontaminate: true doc_to_decontamination_query: query metric_list: - metric: acc aggregation: mean higher_is_better: true - metric: acc_norm aggregation: mean higher_is_better: true metadata: version: 2.0各字段含义如下tag: [arc_multilingual]为所有子任务打上统一标签便于按标签批量筛选与分组聚合dataset_path/dataset_name在基类中置为null由各语言子类分别覆盖分别指向数据集仓库alexandrainst/m_arc与语言代码output_type: multiple_choice声明该任务是多项选择任务框架将据此走multiple_choice的采样与打分逻辑training_split/validation_split/test_split指定各切分名称。这里值得注意的是多语言 ARC 把 HuggingFace 数据集中的train、validation、test三个切分均纳入配置评测时框架默认使用测试切分test训练/验证切分的存在为需要 few-shot 示例或需要校准的研究留出了余地process_docs: !function utils.process_docs通过!function语法指向同目录 utils.py 中的process_docs函数完成原始样本到评测样本的转换详见下文doc_to_text/doc_to_target/doc_to_choice分别声明从处理后样本中取出问题文本query、正确答案索引gold与候选选项列表choices的字段should_decontaminate: true与doc_to_decontamination_query: query开启去污染检查以query作为去污染匹配的文本输入用于检测评测数据是否已出现在模型训练语料中该机制与仓库中 decontamination 子系统的 n-gram 匹配流程配套使用metric_list注册acc与acc_norm两个指标聚合方式均为均值mean且higher_is_better: true。其中acc为原始答案匹配准确率acc_norm为按答案长度归一化后的对数似然准确率是多项选择任务中区分模型是否偏好更短选项的重要参照metadata.version: 2.0标记任务实现版本便于跨版本对比结果。语言级子任务 YAML每个语言子任务仅需四行配置即可完成继承。以德语子任务 arc_de.yaml 为例include: _arc_yaml task: arc_de dataset_path: alexandrainst/m_arc dataset_name: de training_split: train validation_split: validation test_split: test中文子任务 arc_zh.yaml 与阿拉伯语子任务 arc_ar.yaml 结构完全一致仅task名称与dataset_name语言代码不同。由此可以推断31 个语言子任务均复用同一基类唯一的差异点就是 HuggingFace 数据集alexandrainst/m_arc中的dataset_name语言子集字段这保证了各语言之间的评测协议完全一致评测结果的差异可以归因于语言本身而非流程差异。数据处理管线utils.py 源码解析多语言 ARC 的样本转换逻辑集中在 utils.py全文仅两个函数职责清晰import re import datasets def preprocess(text): text text.strip() text text.replace( [title], . ) text re.sub(\\[.*?\\], , text) text text.replace( , ) return text def process_docs(dataset: datasets.Dataset) - datasets.Dataset: def _process_doc(doc): # breakpoint() out_doc { id: doc[id], query: Question: preprocess(doc[instruction]) \nAnswer:, choices: [ preprocess(option) for option in [ doc[option_a], doc[option_b], doc[option_c], doc[option_d], doc[option_e], ] if option ], gold: [A, B, C, D, E].index(doc[answer]), } return out_doc return dataset.map(_process_doc)其工作原理可以拆解为四步文本清洗preprocess对原始文本依次执行strip()去除首尾空白、将 [title]替换为句点加空格、用正则\[.*?\]剔除所有方括号内容例如图片占位标记最后合并连续空格。这一步保证了送入模型的文本是干净的自然语言构造问题模板将清洗后的instruction字段拼接为Question: 题目\nAnswer:形式产出字段query与基类中doc_to_text: query对应。这种题目 Answer: 的模板与 lm-evaluation-harness 中多项选择任务的常见做法一致构造候选选项choices依次读取option_a至option_e五个选项字段逐个经preprocess清洗后加入列表并过滤掉空选项。因此不同样本可能呈现 3~5 个不等的选项数属于数据本身的可变结构字段名与基类doc_to_choice: choices对应确定标准答案gold从[A, B, C, D, E]中定位doc[answer]字母的索引作为整数标签与基类doc_to_target: gold对应。注意若某样本的标准答案是E但option_e为空此映射会因索引越界而异常——这是数据层面需要留意的边界情况从源码注释中遗留的# breakpoint()调试标记可以推断作者在开发期也曾在此处逐步调试数据形态。最终process_docs通过dataset.map(_process_doc)对整个数据集批量应用转换输出可直接被multiple_choice评测器消费的标准化样本集合。如何运行评测在 lm-evaluation-harness 中运行该任务组的命令格式与其他任务完全一致。假设已按仓库根目录 requirements.txt 安装依赖并通过 lm_eval 入口 以lm_eval命令行方式调用# 评测单个语言子任务以德语为例 lm_eval --model hf --model_args pretrainedmeta-llama/Llama-2-7b-hf \ --tasks arc_de --batch_size auto # 评测整个多语言 ARC 任务组31 个语言结果按组聚合 lm_eval --model hf --model_args pretrainedmeta-llama/Llama-2-7b-hf \ --tasks arc_multilingual --batch_size auto要点说明--tasks参数既可接收单个任务名如arc_de也可接收任务组名arc_multilingual一次性跑完全部 31 个语言结果报告中会分别给出每个语言子任务的acc/acc_norm并聚合组级指标--model支持仓库中已集成的多种后端包括 huggingface.py 对应的hf、vllm_causallms.py 对应的vllm、openai_completions.py 对应的 API 模型等可按硬件与需求选择由于基类开启了should_decontaminate: true默认流程中会附带数据去污染检查如无此需求可通过--decontamination_ngrams_path相关参数控制具体以仓库 README 与 evaluator 的实现为准评测结果以 JSON 形式输出包含各子任务明细与组聚合结果可直接用于多语言能力的横向对比。从 lm-evaluation-harness 的任务组织方式看arc_multilingual组与同目录下的 hellaswag_multilingual、mmlu_multilingual、truthfulqa_multilingual 共同构成了 Okapi 多语言评测矩阵覆盖了常识推理ARC、HellaSwag、知识问答MMLU与事实一致性TruthfulQA等维度适合作为多语言模型能力评估的完整基准组合。指标解读与注意事项acc与acc_norm的差异acc直接比较模型对各选项的原始对数似然acc_norm则按选项长度归一化。当模型存在偏好短选项倾向时二者会出现明显分化建议同时报告两个指标选项数可变由于process_docs会过滤空选项不同样本的选项数可能不同对比不同语言的分数时要留意这一点去污染开关should_decontaminate: true意味着该任务被设计为需要检查训练语料污染若你的评估目标是纯粹的推理能力可结合仓库 decontamination 文档 理解其影响版本追踪基类中metadata.version: 2.0标识当前实现版本引用结果时应附带该版本号以保持可复现性。引用信息若在多语言 LLM 研究或评测工作中使用该任务组建议同时引用 Okapi 论文与原始 ARC 论文。Okapi 论文的 BibTeX 已收录在 arc_multilingual/README.md 中article{dac2023okapi, title{Okapi: Instruction-tuned Large Language Models in Multiple Languages with Reinforcement Learning from Human Feedback}, author{Dac Lai, Viet and Van Nguyen, Chien and Ngo, Nghia Trung and Nguyen, Thuat and Dernoncourt, Franck and Rossi, Ryan A and Nguyen, Thien Huu}, journal{arXiv e-prints}, pages{arXiv--2307}, year{2023} }原始 ARC 数据集的引用格式可参见 arc/README.md。小结多语言 ARC 任务组是 Okapi 多语言评测体系中直接面向科学常识推理的一环。从仓库实现看它通过_arc_yaml基类统一了 31 个语言子任务的评测协议多项选择输出、双指标、去污染开关通过utils.py的process_docs完成了从alexandrainst/m_arc原始字段到标准评测样本的转换而各语言 YAML 仅需声明dataset_name即可完成接入。这一基类统一 逐语言薄封装的模式既是 lm-evaluation-harness 任务库的典型组织范式也为新增其他多语言评测数据集提供了可直接复用的参考样板。赞分享大模型推理模型微调模型推理服务【免费下载链接】s1s1: Simple test-time scaling项目地址https://gitcode.com/gh_mirrors/s1/s1点击查看免费下载相关推荐300GB PS2 库压到 150GBchdman 转 CHD 后交给 ROMm 扫描入库300GB PS2 库压到 150GBchdman 转 CHD 后交给 ROMm 扫描入库 用 chdman 把 PS2 光盘镜像 ISO 压成 CHD丢进后端前端Win11Debloat 完整指南免费移除预装应用、关闭遥测的 PowerShell 脚本Win11Debloat 完整指南免费移除预装应用、关闭遥测的 PowerShell 脚本 Win11Debloat 是一款免费开源的 PowerShell桌面应用CLI使用 lm-evaluation-harness 的 arc_mt 任务族评估多语言机器翻译版 ARC Challenge使用 lm evaluation harness 的 arc_mt 任务族评估多语言机器翻译版 ARC Challenge 本指南完整讲解 lm evaluat人工智能模型评测AI 评测上一篇Mosquitto 0.6.1 发布说明修复持久化数据库自动升级缺陷开启候选版本发布机制下一篇三步搞定百度网盘限速Python直链解析工具完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考