SuperAPI AI 工具集

evaluating-llms-harness

测试与质量

查看项目

更新于 10-21 16:17

技能介绍

用途

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

常见工作流

  1. 标准基准评估:选择基准套件、配置模型、运行评估、分析结果。结果保存为 JSON,包含各任务的指标(如 mmlu 的 acc、gsm8k 的 exact_match、hellaswag 的 acc_norm)及配置信息。
  2. 跟踪训练进度:设置周期性评估、选择快速基准(HellaSwag 约 10 分钟、GSM8K 约 5 分钟、PIQA 约 2 分钟;MMLU 约 2 小时、HumanEval 需代码执行,不适合频繁评估)、自动化评估、绘制学习曲线。
  3. 比较多个模型:定义模型列表、运行评估、生成对比表格。
  4. 使用 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(使用此工具)