用途
lm-evaluation-harness 用于在 60 多个学术基准上评估 LLM,通过标准化提示和指标得到可复现的评测结果。典型用途包括:为论文或模型发布提供基准成绩、横向量化比较不同模型质量、追踪训练过程中的检查点进展,以及报告统一标准的指标。
主要能力
- 任务库:MMLU(57 个学科多选题)、GSM8K(小学数学应用题)、HellaSwag(常识推理)、TruthfulQA(真实性与事实性)、ARC(AI2 推理挑战,科学题)、HumanEval(Python 代码生成,164 题)、MBPP(基础 Python 编程)等 60 多个任务。
- 模型支持:HuggingFace 模型、4-bit/8-bit 量化模型、自定义检查点和 tokenizer;vLLM 后端可用于加速推理。
- 输出:结果写入 JSON,包含各任务的准确率、精确匹配等指标及标准误,可结合 --log_samples 保存逐条预测。
使用方式
安装:
pip install lm-eval
查看可用任务:
lm_eval --tasks list
评估 HuggingFace 模型示例:
lm_eval --model hf \
--model_args pretrained=meta-llama/Llama-2-7b-hf \
--tasks mmlu,gsm8k,hellaswag \
--device cuda:0 \
--batch_size 8
量化模型可加 load_in_4bit=True;自定义检查点通过 pretrained=/path/to/my-model,tokenizer=/path/to/tokenizer 指定。完整 MMLU 评测常用 --num_fewshot 5、--output_path results/ 和 --log_samples。
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 结果);训练进度追踪(每 N 步评测检查点,用 GSM8K、HellaSwag、PIQA 等快速任务,再用脚本绘制学习曲线);多模型对比(脚本循环评测并生成对比表);vLLM 加速评测。HumanEval 需要 --allow_code_execution,并安装 pip install human-eval。
适用场景与限制
适合学术论文基准、标准任务上的模型质量比较、训练进度监控和可复现评测。若需要公平性、效率、校准等更广评估可用 HELM;指令跟随的 LLM 评判可用 AlpacaEval;多轮对话可用 MT-Bench;领域特定评测可用自定义脚本。硬件方面:7B 模型约需 16GB 显存(bf16)或 8GB(8-bit),13B 约 28GB 或 14GB,70B 需多卡或量化。单张 A100 上 7B 模型 HellaSwag 约 10 分钟、GSM8K 约 5 分钟、MMLU 全量约 2 小时、HumanEval 约 20 分钟。评测过慢可改用 vLLM、减少 fewshot 或只评测 MMLU 子集;显存不足可减小 batch size、启用量化或 CPU offloading;结果与报告不一致时应核对 fewshot 数、任务名及模型与 tokenizer 是否匹配。