用途
lm-evaluation-harness 用于在 60 多个学术基准上评估大语言模型(LLM),采用标准化提示词和指标,适合以下场景:为学术论文做模型基准测试、跨标准任务比较模型质量、跟踪训练进度、报告标准化指标(所有人使用相同提示词)、需要可复现的评估。
主要能力
- 覆盖 60 多个任务,包括 MMLU、GSM8K、HumanEval、TruthfulQA、HellaSwag、ARC、WinoGrande 等。
- 核心推理基准:MMLU(57 个学科,多选题)、GSM8K(小学数学应用题)、HellaSwag(常识推理)、TruthfulQA(真实性与事实性)、ARC(科学问题)。
- 代码基准:HumanEval(Python 代码生成,164 道题)、MBPP(基础 Python 编程题)。
- 支持 HuggingFace 模型、量化模型(4-bit/8-bit)、自定义检查点。
- 支持 vLLM 后端,推理速度比标准 HuggingFace 快 5-10 倍。
- 可保存单个预测结果(--log_samples),输出 JSON 格式结果。
使用方式
安装:
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
标准套件(推荐用于模型发布):
--tasks mmlu,gsm8k,hellaswag,truthfulqa,arc_challenge
量化模型:
lm_eval --model hf \
--model_args pretrained=meta-llama/Llama-2-7b-hf,load_in_4bit=True \
--tasks mmlu \
--device cuda:0
自定义检查点:
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
vLLM 后端评估:
pip install 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
常见工作流
- 标准基准评估:选择基准套件、配置模型、运行评估、分析结果。结果保存为 JSON,包含各任务的指标(如 mmlu 的 acc、gsm8k 的 exact_match、hellaswag 的 acc_norm)及配置信息。
- 跟踪训练进度:设置周期性评估、选择快速基准(HellaSwag 约 10 分钟、GSM8K 约 5 分钟、PIQA 约 2 分钟;MMLU 约 2 小时、HumanEval 需代码执行,不适合频繁评估)、自动化评估、绘制学习曲线。
- 比较多个模型:定义模型列表、运行评估、生成对比表格。
- 使用 vLLM 评估:安装 vLLM、配置 vLLM 后端、运行评估。
适用场景与限制
适用:学术论文基准测试、跨标准任务比较模型质量、跟踪训练进度、报告标准化指标、需要可复现评估。
替代方案:HELM(Stanford,更广泛的评估,含公平性、效率、校准)、AlpacaEval(使用 LLM 评判的指令遵循评估)、MT-Bench(多轮对话评估)、自定义脚本(领域特定评估)。
硬件要求、常见问题、基准描述、自定义任务、API 评估、多 GPU 策略等详见参考资料文件(references/common-issues.md、references/benchmark-guide.md、references/custom-tasks.md、references/api-evaluation.md、references/distributed-eval.md、references/hardware-requirements.md)。
操作规范
- 检查环境:确认模型、检查点、基准版本和评估工具版本。
- 明确输入:从数据或用户处确认格式、标识符和参数;对影响结果的任何值应询问而非猜测。
- 先运行小版本:在小规模子集上评估以验证提示词、解析和评分。
- 执行完整任务。
- 验证结果:使用基准的官方划分和指标;检查污染;报告不同随机种子或提示词下的方差。
- 报告:说明运行了什么(版本、命令、参数)、检查了什么、仍不确定什么。
完整性规则
- 绝不捏造结果、参数、标识符、引用或统计数据。无法运行或验证的内容应明确说明。
- 完整报告评估设置;绝不挑选提示词、随机种子或子集。
- 版本相关细节可能过时,应以已安装版本的官方文档为准。
- 涉及费用、共享 GPU 或云配额、个人或患者数据、不可撤销操作时,应先询问。
相关技能
evaluating-code-models:在 HumanEval、MBPP、MultiPL-E 及 15 个以上基准上评估代码生成模型,使用 pass@k 指标。
nemo-evaluator-sdk:在来自 18 个以上工具的 100 多个基准(MMLU、HumanEval、GSM8K、安全、VLM)上评估 LLM,支持多后端执行。
hqq-quantization:无需校准数据的 LLM 半二次量化。
资源
GitHub:https://github.com/EleutherAI/lm-evaluation-harness
文档:https://github.com/EleutherAI/lm-evaluation-harness/tree/main/docs
排行榜:https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard(使用此工具)