Llama 3.1 模型评估全解析:30+ 基准的评测配置、方法论与复现要点 📅 发布时间:2026/9/16 13:39:16 👁 浏览次数: Llama 3.1 模型评估全解析30 基准的评测配置、方法论与复现要点【免费下载链接】llama-modelsUtilities intended for use with Llama models.项目地址: https://gitcode.com/GitHub_Trending/ll/llama-models导读本文以开源仓库 models/llama3_1/eval_details.md 为骨架系统梳理 Meta Llama 3.1 8B、70B、405B 三档 pre-trained预训练与 post-trained后训练/指令微调模型在 30 余个公开基准上的评测设置包括 few-shot 配置、CoT 提示、最大生成长度、评分口径与公平性处理。读完本文你将掌握每个基准官方分数是怎么跑出来的理解生成任务与选择任务在实现层面的差异并能结合仓库内 generation.py、tokenizer.py、chat_format.py 的源码印证这些配置在推理链路中的落点为自己的模型评测与复现提供可直接套用的参数基线。一、评估总体方法论一致性、公平性与可复现性文档开篇即明确了 Llama 3.1 评测工作的三条核心原则见 eval_details.md设置一致性对于给定基准所有被评估模型包括外部模型都尽量使用一致的评估设置。评测团队会尽力为外部模型争取最优分数包括处理模型特有的解析parsing和分词tokenization需求。分数口径透明当外部模型在同等或更保守设置下的得分低于其官方自报分数时报告中采用其自报分数避免因评测口径差异造成不公平的低估。数据与配方公开评测中针对公开基准生成的数据随 Llama 3.1 Evals Huggingface collection 一并发布同时在官方 llama-recipes 仓库的tools/benchmarks/llm_eval_harness/meta_eval_reproduce目录下提供了基于 lm-evaluation-harness 的评估复现配方eval reproduction recipe配合 3.1 evals 数据集即可在选定任务上逼近官方报告的分数。这一小节为整份文档奠定了可复现的基调文档后续每一个基准条目本质都是对该基准评估设置 评分指标的精确描述。二、两类评测范式生成任务与选择任务通读整份 eval_details可以发现所有基准可归入两种实现范式这与仓库推理代码的两种输出路径一一对应生成任务generative task让模型自由生成文本再按指标pass1、EM、F1、accuracy与参考答案比对。对应仓库 generation.py 中generate()的自回归解码流程——按max_gen_len截断、遇到stop_tokens停止。选择任务choice task把候选选项全部放进 prompt计算各选项对应的负对数似然NLL或直接让模型输出选项字符。文档中反复出现的使用 MMLU setup在 prompt 中提供全部选项并计算 choice 字符上的似然即为此类。选择任务在文档中占比很高MMLU、ARC-Challenge、CommonSenseQA、WinoGrande、RACE、WorldSense、PiQA、SiQA、OpenBookQA、BoolQ 都属此类。其优势是无需生成即可稳定打分适合 pre-trained 基座模型基座模型不擅长指令跟随式生成。三、知识类基准MMLU / MMLU-Pro / ARC-Challenge / GPQA / AGIEval / CommonSenseQA / RACE / OpenBookQAMMLUpre-trained 模型5-shot 配置。使用标准 MMLU prompt通过比较各 choice 的负对数似然NLL判定答案不生成文本。post-trained 模型同时报告 5-shot 与 0-shot 两档分数要求模型生成最佳 choice 字符。0-shot 使用 CoTchain of thought提示。最大生成长度分别为 5-shot 10 tokens、0-shot 1024 tokens。报告口径默认报告宏平均macro average。5-shot 配置下的微平均分数如下配置8B70B405Bpre-trained 5-shot65.679.085.4post-trained 5-shot69.4484.087.71MMLU-Propre-trained 与 post-trained 均使用5-shot CoT要求模型先输出推理过程、再输出最佳 choice 字符。最大生成长度pre-trained 512 tokenspost-trained 1024 tokens。微平均分数配置8B70B405Bpre-trained35.652.059.6post-trained47.065.172.2ARC-Challenge仅使用 Arc 基准中的 Challenge 子集。pre-trained25-shot 配置套用 MMLU 选择任务设置计算 choice 字符似然。post-trained0-shot让模型直接生成 choice 字符。最大生成长度统一 100 tokens。GPQA仅针对 post-trained 模型0-shot 配置分带 CoT与不带 CoT两种使用主数据集main set在候选选项上报告精确匹配exact match。最大生成长度无 CoT 96 tokens有 CoT 2048 tokens。AGIEval English仅针对 pre-trained 模型使用 AGIEval 官方默认 few-shot 与 prompt 设置分数对全部英语子任务取平均最大生成长度 10 tokens。CommonSenseQA仅针对 pre-trained 模型采用 Wei et al. (2022) 的 7-shot CoT 配置套用 MMLU 选择任务设置计算 choice 字符似然。RACE仅针对 pre-trained 模型0-shot选择任务同样使用 MMLU 设置计算 choice 字符似然。OpenBookQA与 PiQA、SiQA 并列报告见后文0-shot选择任务报告平均准确率。四、代码生成基准HumanEval / MBPP / Multipl-EHumanEval / HumanEvalpre-trained 与 post-trained 均用 0-shot报告 pass1最大生成长度 1024 tokens。MBPPpre-trained 与 post-trained 均用 3-shot报告 pass1生成任务最大生成长度 256 tokens。MBPP EvalPlus (base)0-shot报告 pass1生成任务最大生成长度 1024 tokens。Multipl-E HumanEval 与 Multipl-E MBPP仅 post-trained0-shot报告 pass1最大生成长度 512 tokens。报告 Multipl-E 平均分时对基准中全部 6 种语言取平均。pass1 是代码生成的标准指标每个问题只生成一次即判定是否通过强调单次生成的可靠性。0-shot 代码评测则用于考察模型对无示例编程指令的泛化能力。五、数学推理基准GSM8K / GSM Plus / MATH / Multilingual MGSMGSM8Kpre-trained 与 post-trained 均采用 Wei et al. (2022) 的 8-shot CoT 配置maj1多数投票取 1 次生成最大生成长度 1024 tokens。GSM Plus仅 pre-trained同样 8-shot CoT (maj1)最大生成长度 512 tokens。MATHpre-trainedLewkowycz et al. (2022) 的 4-shot 配置maj1最大生成长度 512 tokens。post-trained0-shot CoT。答案比对先经 sympy 做表达式化简再使用 openai simple-evals 中的 equality template 配合 judge 判定复杂表达式是否等价最大生成长度5120 tokens。MATH 分数覆盖完整数据集其中 MATH-HARDLvl 5分数为 8B 25.4、70B 43.8、405B 53.4。Multilingual MGSM仅 post-trained0-shot CoT报告 exact matchmaj1最大生成长度 2048 tokens。分数对 MGSM 基准中全部11 种语言取平均——注意其中包含 Llama 模型并不支持的语言因此该指标同时反映模型的跨语言迁移与稳健性。MATH 的 post-trained 设置格外值得关注它展示了生成 符号化简 判题器的三段式打分流水线这与简单的字符串精确匹配完全不同也是高难度数学题评估的常见做法。六、阅读理解与长上下文基准标准与对抗式 SQuADSQuAD仅 pre-trained使用 SQuADv21-shot 配置报告 exact match生成任务最大生成长度 32 tokens。prompt 模板形如{few-shot example} {passage} {all previous Q A pairs for passage} {input question}——同一篇章内此前所有问答对都会拼入 prompt详细示例数据见官方发布的 evals 数据集。Dynabench SQuAD / Adversarial SQuAD与标准 SQuAD 相同设置1-shot、exact match用于测试模型在对抗性改写问题下的鲁棒性。其他阅读理解与事实问答QuAC仅 pre-trained1-shot报告 F1生成任务最大生成长度 32 tokens。BoolQ仅 pre-trained0-shot报告平均准确率选择任务。DROP仅 pre-trained每个验证样例从训练集随机抽取 3 个 few-shot 示例报告 F1最大生成长度 32 tokens。PAWS仅 pre-trained5-shot报告 exact match生成任务最大生成长度 32 tokens。TriviaQA-WIKI在 Wiki 验证集上评估5-shot报告平均 exact match生成任务最大生成长度 24 tokens。长上下文系列SCROLLS / ZeroSCROLLS / InfiniteBench / NIH Multi-needleLlama 3.1 的核心卖点之一是128K 上下文窗口见 models/llama3_1/MODEL_CARD.md 中 128k 的规格描述以下四个基准正是围绕长上下文能力设计的SCROLLS仅 pre-trained5-shot最大生成长度 32 tokens。最大输入 prompt 长度为 131072 减去生成 token 数即 131040即评测时把上下文窗口压到理论极限。ZeroSCROLLS仅 post-trained0-shot。QuALITY 与 SQuALITY 最大生成长度 64 tokensQasper 为 128 tokens。Llama 模型最大输入长度为 131072 减生成数131008 / 130944非 Llama 模型为 128000 减生成数。评测时保证所有模型上下文都保留全部相关信息以实现公平对比。InfiniteBench仅 post-trained0-shot。En.QA 与 En.MC 任务最大生成长度 20 tokens最大输入 131052非 Llama 模型为 127980。同样保证相关信息全部留在上下文中。NIH/Multi-needle仅 post-trained0-shot。上下文长度在2000 与 131072 之间等距取 10 个区间含端点非 Llama 模型上界为 128000最大生成长度 256 tokens。多针测试用于评估模型在超长上下文中精确检索多处关键信息的能力。长上下文评测对推理实现有直接要求仓库 generation.py 的generate()会按params.max_seq_len做total_len min(max_gen_len max_prompt_len, params.max_seq_len)的预算钳制generation.py因此要复现上述 131072 量级的评测必须将模型配置的max_seq_len调至 131072 或以上而不是使用 args.py 中max_seq_len: int 2048的默认值。七、指令跟随与通用能力IFEval / BIG-Bench Hard / WinoGrande / WorldSense / PiQA / SiQAIFEval仅 post-trained使用论文默认设置。计算 prompt 级分数与 instruction 级 strict/loose 准确率最终报告所有分数的平均值。IFEval 专门考察模型输出是否严格遵循指令中的可验证约束格式、长度、关键词等。BIG-Bench Hard仅 pre-trained3-shot CoT对子集计算平均 exact match作为生成任务运行最大生成长度 512 tokens。WinoGrande仅 pre-trained5-shot 选择任务将空缺处分别填入两个候选词计算后缀上的 log-likelihood套用 MMLU 设置。WorldSense仅 pre-trained0-shot 选择任务。与原基准不同未对三分区做归一化因此随机猜测准确率不是 0.5而是平均 0.46——这是阅读官方报告时必须注意的口径细节。PiQA / SiQA仅 pre-trained0-shot报告平均准确率选择任务。八、多语言基准Multilingual MMLU 与 Multipl-EMultilingual MMLU仅 post-trained5-shot作为生成任务运行最大生成长度 10 tokens。分数对7 种 Llama 模型支持的非英语语言葡萄牙语、西班牙语、意大利语、德语、法语、印地语、泰语分别报告并取平均。Multipl-E HumanEval / MBPP见第四节覆盖 6 种编程语言相关的自然语言变体。九、工具调用与函数调用基准Llama 3.1 引入的ipython角色与工具调用能力见 models/llama3_1/prompt_format.md 及 chat_format.py 中对|python_tag|、|eom_id|的编码逻辑对应着四个专门基准Berkeley Function Calling Leaderboard (BFCL)直接运行开源评估仓库 gorilla 的berkeley-function-call-leaderboard固定 commit7bef000不做任何改动取得结果保证与社区排行榜口径一致。Nexus使用 NexusRaven 的开源 prompt 与评估函数配合官方公开的 GPT4_Evaluation notebook 计算分数。API Bank0-shot使用自定义 prompt 与解析函数以降低误判false negatives同时修正/补全了数据集中原本错误或不完整的 ground truth。评估指标被改进为将关键字参数分为两组有唯一 ground truth 的参数用 exact match接受任意等价语义字符串的参数用 ROUGE 分数。Gorilla API Bench仅 post-trained0-shot使用原论文的 prompt 与评估函数。与开源 gorilla 实现一致将检索到的 API 调用所属 domain 与 ground truth 比对domain 相同且 API 存在于数据库即视为成功其余一律失败。工具调用评测对解析层要求极高——模型输出可能是tool.call(query...)形式或 JSON 形式。仓库 tokenizer.py 将eos_id、eom_id、eot_id一并纳入stop_tokens正是为了保证生成停在消息/回合边界便于解析器完整切分出一次工具调用。十、评估配置背后的实现落点文档中每个基准条目都至少包含三个可量化维度few-shot 数、是否 CoT、最大生成长度。这些维度在仓库源码中均有对应实现最大生成长度max_gen_len对应 generation.py 中generate()的参数。注意其钳制逻辑if max_gen_len is None or max_gen_len 0 or max_gen_len self.args.max_seq_len: max_gen_len self.args.max_seq_len - 1。也就是说当评测配置未显式设置生成长度时实际生成上限由模型配置的max_seq_len决定args.py 默认 2048需按模型规格覆盖为 8192/131072 等。文档中 MMLU 的 10 tokens、HumanEval 的 1024 tokens、MATH post-trained 的 5120 tokens 等值都应原样传入该参数。解码采样评测若要确定性地复现分数常用temperature0走贪心解码——generation.py 中if temperature 0: ... else: next_token torch.argmax(logits[:, -1], dim-1)明确实现了这一分支仓库测试 test_generation.py 也以temperature0断言输出确定性。而temperature 0时则走softmax / temperature后按top_p做 nucleus 采样。选择任务的似然计算文档中MMLU setup需要比较各 choice 的 NLL即对完整 prompt 每个候选选项分别计算前缀 log-likelihood。仓库虽未内置 harness但其Tokenizer与ChatFormatchat_format.py提供了精确重建评测 prompt 的全部基础能力_encode_header负责角色头|start_header_id|...|end_header_id|encode_dialog_prompt负责追加|begin_of_text|与 assistant 起始头。停止条件生成任务中的 max length 与停止 token 共同决定输出边界。tokenizer.py 的stop_tokens [eos_id, eom_id, eot_id]是基准评测与日常推理共用的停止集合——对 pre-trained 模型评测基座模型只输出|end_of_text|与 post-trained 工具调用评测可能输出|eom_id|或|eot_id|分别适配。十一、从文档到实战如何复现与验证获取官方复现配方在 llama-recipes 仓库的tools/benchmarks/llm_eval_harness/meta_eval_reproduce下可找到基于 lm-evaluation-harness 的复现脚本配合 Llama 3.1 Evals 数据集合eval_details.md 中指明可复现选定任务的官方数字。按条目设置参数把本文梳理的每一行配置few-shot 数、CoT 开关、max_gen_len、评分指标逐项映射到 harness 的对应参数。特别注意几处容易出错的口径MMLU 的 5-shot 与 0-shot 双档、MATH 的 sympy judge 判题流程、WorldSense 未归一化的 0.46 随机基线、长上下文任务 131072 的上限钳制。用仓库源码做本地验证直接基于本仓库的 generation.py、tokenizer.py、chat_format.py 搭建最小评测管线对选择任务用temperature0或似然比较对生成任务设置与文档一致的max_gen_len即可在小样本上核对输出格式与停止行为是否符合预期。注意公平性口径文档明确说明评测中外部模型采用同等设置、必要时使用其自报分数对比任何第三方数字前务必确认对方的评测设置few-shot、CoT、生成长度、指标口径与本文档一致否则比较不成立。结语这份 eval_details 的价值在于把分数还原成了可复现的实验配置每个基准都给出了 few-shot、CoT、生成长度、评分指标与公平性处理。配合本仓库的推理与分词源码读者既能读懂官方数字是怎么来的也能在本地搭建同口径的评估管线用于 Llama 3.1 系列以及同类模型的对比验证。评测不是黑箱配置即方法论——这正是本文档希望传达的核心信息。【免费下载链接】llama-modelsUtilities intended for use with Llama models.项目地址: https://gitcode.com/GitHub_Trending/ll/llama-models创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考