LLM评估全攻略:从分数泡沫到真实能力,一文说透模型评测的“潜规则“
发布时间:2026/8/11 21:49:25 作者:尧图编辑部 阅读量:1,286

目录评估体系的设计原则传统NLP基准与任务大模型综合基准MMLU推理与代码基准人类评估与LLM-as-Judge评估偏差与数据污染评估工具链与最佳实践摘要模型评估回答一个核心问题:如何用可复现、可比较的方式度量 LLM 的多维能力。本文以 MMLU、GSM8K、HumanEval 等基准为主线,拆解评估体系的设计原则、指标选择、人类评估与 LLM-as-Judge 方法,并量化分析数据污染与评估偏差的影响。最后给出基于 lm-evaluation-harness 与 OpenCompass 的评估流水线落地实践。1. 评估体系的设计原则评估体系的设计决定了评测结果是否可信、是否可复现、能否支撑选型与上线决策。本节从目标分解、指标匹配与配置固定三个层面建立评估体系的第一性框架。评估体系目标分解指标匹配配置固定知识维度推理维度代码维度安全维度准确率与精确匹配生成类指标采样通过率固定随机种子贪心解码few-shot 模板1.1 评估目标分解与能力矩阵评估的首要问题是明确测什么。单一总分无法刻画模型能力,业界把模型能力拆解为知识、推理、代码、指令遵循、安全与真实性等维度,每个维度再落到具体任务上。能力矩阵(capability matrix)是这种拆解的产物:行为能力维度,列为代表性任务,单元格标注对应基准与核心指标。完整的矩阵决定评估预算的分配方向,也决定报告里应该出现哪些分数。不同能力维度的提升速度并不均匀。以 7B 与 70B 参数规模的差距为例,MMLU 上通常相差 12-18 个点,GSM8K 上相差 15-40 个点,HumanEval 上相差 30-50 个点。如果只报告一个平均分,模型在代码上的短板会被知识分数掩盖,选型决策就会失真。能力矩阵的价值正在于暴露这种不均匀。表:能力维度矩阵与 7B 量级参考分能力维度代表性任务典型基准核心指标7B 量级参考分知识多项选择MMLUaccuracy58-70数学推理应用题求解GSM8Kexact match35-80代码生成函数补全HumanEvalpass@130-67指令遵循单轮对话AlpacaEvalwin rate10-30安全与真实性有害性检测TruthfulQAMC1 accuracy35-50参考分区间整理自多份公开模型技术报告,随训练数据与对齐方法不同而浮动。矩阵中的权重不是固定的,知识型产品应提高知识维度权重,代码助手应提高代码维度权重。工程上把权重与基准映射固化到一个配置文件里,便于多项目复用与对比。# 来源:自实现 / eval_scripts/capability_matrix.pyimportjsonfrompathlibimportPath# 能力矩阵: 能力维度 - (基准名, 权重) 列表CAPABILITY_MATRIX={"knowledge":[("mmlu",0.5),("triviaqa",0.3),("natural_questions",0.2)],"reasoning":[("gsm8k",0.5),("math",0.3),("hellaswag",0.2)],"code":[("humaneval",0.6),("mbpp",0.4)],"safety":[("truthfulqa",0.7),("toxigen",0.3)],}defaggregate_capability(scores:dict)-dict:"""按能力矩阵权重聚合各基准分数为维度分数。"""result={}fordim,benchesinCAPABILITY_MATRIX.items():total=0.0forbench,weightinbenches:ifbenchinscores:total+=scores[bench]*weight result[dim]=round(total,2)returnresultif__name__=="__main__":run=json.loads(Path("latest_run.json").read_text(encoding="utf-8"))print(json.dumps(aggregate_capability(run),ensure_ascii=False,indent=2))矩阵的设计要注意两个边界。其一,维度之间并非完全正交,MMLU 的某些科目同时测量知识与推理,聚合时会重复计算。其二,参考分区间来自不同实现,直接跨论文比较有实现差异风险,能力矩阵更适合在统一工具链内做横向对比。1.2 指标选择与任务类型匹配指标必须匹配任务类型。分类任务用准确率与宏平均 F1;多项选择题在 LLM 场景用字母提取后的精确匹配;生成任务分两类,参考译文类(机器翻译)用 BLEU 与 chrF,摘要类用 ROUGE;代码任务用 pass@k 衡量通过单元测试的比例。量化上,BLEU 对词序强匹配场景有效,但对同义词改写完全不敏感,改写后得分可能下降 30-50%。ROUGE-L 的 F 值对摘要关键信息召回有指示性,但对长度有隐性偏好。pass@k 对采样数量敏感,k 从 1 提升到 100 时分数可能提升 40 个百分点以上,报告必须标注采样数与温度。表:指标与任务的匹配关系指标适用任务输出格式主要失效场景accuracy分类、多项选择字母或标签类别不均衡macro F1不均衡分类概率分布极端小样本exact match抽取式问答短文本答案表述变体BLEU机器翻译译文同义改写ROUGE-L摘要摘要文本长度偏好pass@k代码生成程序文本采样设置不标注指标选择的另一个原则是输出格式匹配。LLM 评测里最常见的错误是把自由文本输出强行套用精确匹配,导致分数被人为压低。正确做法是先定义输出解析器(提取字母、提取数字、解析 JSON),再套指标。# 来源:自实现 / eval_scripts/metric_dispatcher.pyfromevaluateimportloaddefbuild_metric(task_type:str):"""按任务类型返回 Hugging Face evaluate 指标对象。"""metric_map={"classification":"accuracy","multiple_choice":"exact_match","translation":"sacrebleu","summarization":"rouge",}iftask_typenotinmetric_map:raiseValueError(f"不支持的任务类型:{task_type}")returnload(metric_map[task_type])defcompute_accuracy(predictions,references)-float:metric=build_metric("classification")returnmetric.compute(predictions=predictions,references=references)["accuracy"]if__name__=="__main__":preds=["A","B","A","C"]refs=["A","B","B","C"]print("accuracy:",compute_accuracy(preds,refs))边界提示:任何 n-gram 类指标都不评估语义正确性,只评估表层重叠。跨语言、跨领域的分数不可直接比较,报告必须绑定语料、分词器与归一化规则。1.3 可复现性与评估配置固定评估结果不可复现的第一大原因是配置漂移。采样温度、top_p、max_tokens、few-shot 示例顺序、提示词模板甚至并发批次大小都会改变分数。经验数据表明,同一模型在同一基准上,温度从 0 调到 0.7,MMLU 分数波动约 2-3 个百分点;few-shot 示例顺序重排也可能带来 1-2 个百分点差异。当模型间差距只有 1 个点时,这些波动足以颠倒排名。工程上要求把评估配置固化为独立对象:固定随机种子、固定解码参数、固定提示模板版本、固定数据切分,并记录模型权重的哈希指纹。报告必须附带完整配置与指纹,否则分数无法对照复现。配置对象应使用不可变数据结构,防止运行中被意外修改。# 来源:自实现 / eval_scripts/eval_config.pyimporthashlibimportjsonfromdataclassesimportdataclass,asdict@dataclass(frozen=True)classEvalConfig:model_id:strbenchmark:strnum_fewshot:int=5temperature:float=0.0top_p:float=1.0max_tokens:int=512seed:int=42batch_size:int=16deffingerprint(self)-str:raw=json.dumps(asdict(self),sort_keys=True).encode("utf-8")returnhashlib.sha256(raw).hexdigest()[:12]if__name__=="__main__":cfg=EvalConfig(model_id="llama-3-8b",benchmark="mmlu")print("config hash:",cfg.fingerprint())配置固定的落地还要覆盖提示词模板的版本管理。模板应作为一个独立资源文件受版本控制,任何改动都提升版本号。解码建议默认温度 0 加贪心解码,评测型任务不需要采样多样性;需要测 pass@k 的任务才单独放宽温度并记录采样数。这一配置纪律是后续所有基准评测可比较的前提,也是进入传统 NLP 基准章节前必须建立的基线。2. 传统NLP基准与任务传统 NLP 基准在 2018-2021 年主导了模型对比,其词法级指标与任务体系至今仍是回归测试的主力。本节梳理 BLEU、ROUGE、GLUE、SuperGLUE 的机制与局限。