SuperAPI AI 工具集

evaluating-llms-harness

测试与质量

查看项目

更新于 10-14 14:45

技能介绍

lm-evaluation-harness 是用于大语言模型(LLM)基准评测的工具,通过标准化提示与指标,在 60 多个学术基准上评估模型。

【用途】 适用于以下场景:为学术论文评测模型;在标准任务上比较不同模型的质量;跟踪训练进度;报告标准化指标(所有人使用相同提示);需要可复现的评测。如果你需要更广泛的评测(如公平性、效率、校准),可考虑 HELM(Stanford);指令遵循的 LLM 评委评测可考虑 AlpacaEval;多轮对话评测可考虑 MT-Bench;领域特定评测可考虑自定义脚本。

【安装与快速开始】 安装命令:

pip install lm-eval

评估任意 HuggingFace 模型:

lm_eval --model hf
--model_args pretrained=meta-llama/Llama-2-7b-hf
--tasks mmlu,gsm8k,hellaswag
--device cuda:0
--batch_size 8

查看可用任务:

lm_eval --tasks list

【主要能力与基准】 核心推理基准:MMLU(Massive Multitask Language Understanding,57 个学科,选择题)、GSM8K(小学数学应用题)、HellaSwag(常识推理)、TruthfulQA(真实性与事实性)、ARC(AI2 Reasoning Challenge,科学问题)。代码基准:HumanEval(Python 代码生成,164 道题)、MBPP(Mostly Basic Python Problems,Python 编程)。模型发布推荐的标准套件:

--tasks mmlu,gsm8k,hellaswag,truthfulqa,arc_challenge

【常见工作流】 一、标准基准评测:选择基准套件、配置模型、运行评测、分析结果。配置模型时可指定 HuggingFace 模型:

lm_eval --model hf
--model_args pretrained=meta-llama/Llama-2-7b-hf,dtype=bfloat16
--tasks mmlu
--device cuda:0
--batch_size auto

量化模型(4-bit/8-bit):

lm_eval --model hf
--model_args pretrained=meta-llama/Llama-2-7b-hf,load_in_4bit=True
--tasks mmlu
--device cuda:0

自定义 checkpoint:

lm_eval --model hf
--model_args pretrained=/path/to/my-model,tokenizer=/path/to/tokenizer
--tasks mmlu
--device cuda:0

运行完整 MMLU(57 学科):

lm_eval --model hf
--model_args pretrained=meta-llama/Llama-2-7b-hf
--tasks mmlu
--num_fewshot 5
--batch_size 8
--output_path results/
--log_samples

一次运行多个基准:

lm_eval --model hf
--model_args pretrained=meta-llama/Llama-2-7b-hf
--tasks mmlu,gsm8k,hellaswag,truthfulqa,arc_challenge
--num_fewshot 5
--batch_size 8
--output_path results/llama2-7b-eval.json

结果保存在 JSON 中,包含各任务的指标(如 mmlu 的 acc、gsm8k 的 exact_match、hellaswag 的 acc_norm)及其标准误,以及模型与 num_fewshot 等配置信息。

二、跟踪训练进度:定期评估 checkpoint。快速基准包括 HellaSwag(单 GPU 约 10 分钟)、GSM8K(约 5 分钟)、PIQA(约 2 分钟);不适合频繁评估的包括 MMLU(约 2 小时,57 学科)与 HumanEval(需要执行代码)。可将评测脚本集成到训练循环中,或使用 PyTorch Lightning 的 Callback 在验证周期结束时保存 checkpoint 并调用 lm_eval,再读取各步骤结果绘制学习曲线。

三、比较多模型:在 models.txt 中列出模型(如 meta-llama/Llama-2-7b-hf、meta-llama/Llama-2-13b-hf、mistralai/Mistral-7B-v0.1、microsoft/phi-2),循环调用 lm_eval 分别评测并输出各模型 JSON,再汇总为对比表格。

四、使用 vLLM 加速评测:先 pip install vllm,然后以 vLLM 后端运行:

lm_eval --model vllm
--model_args pretrained=meta-llama/Llama-2-7b-hf,tensor_parallel_size=1,dtype=auto,gpu_memory_utilization=0.8
--tasks mmlu
--batch_size auto

资料称 vLLM 比标准 HuggingFace 快 5-10 倍。

【使用方式与限制】 运行前需准备模型与对应 tokenizer,任务名称需精确(如 mmlu,而非 mmlu_direct 或 mmlu_fewshot);多数论文使用 --num_fewshot 5。若评测过慢,可改用 vLLM 后端、减少 fewshot 或只评测 MMLU 子集(如 mmlu_stem)。若显存不足,可减小 batch size、使用量化或启用 CPU offloading。若结果与已报告数值不一致,需检查 fewshot 数量、任务名称与模型/tokenizer 是否匹配。HumanEval 需安装 human-eval 并添加 --allow_code_execution 才能执行代码。

硬件要求:NVIDIA GPU(CUDA 11.8+),也可在 CPU 上运行但非常慢。显存方面:7B 模型 bf16 约 16GB 或 8-bit 约 8GB;13B 模型 bf16 约 28GB 或 8-bit 约 14GB;70B 模型需要多 GPU 或量化。单张 A100 上 7B 模型的耗时约为:HellaSwag 10 分钟、GSM8K 5 分钟、完整 MMLU 2 小时、HumanEval 20 分钟。

【资源与进阶】 GitHub:https://github.com/EleutherAI/lm-evaluation-harness Docs:https://github.com/EleutherAI/lm-evaluation-harness/tree/main/docs 任务库包含 60+ 任务(MMLU、GSM8K、HumanEval、TruthfulQA、HellaSwag、ARC、WinoGrande 等)。 排行榜:https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard(使用本 harness)。 进阶主题:基准描述见 references/benchmark-guide.md;自定义任务见 references/custom-tasks.md;API 评测见 references/api-evaluation.md;多 GPU 策略见 references/distributed-eval.md。

【暂未提供的信息】 资料未提供该工具的收费、价格、版本号、开发团队背景、许可证细节、官方支持渠道与更新日志等信息。