lm-evaluation-harness 安装配置实战:从装好到跑通第一个评估任务
【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness
如果你想在同一套框架下反复比较不同语言模型在 hellaswag、MMLU、ARC 等学术基准上的表现,lm-evaluation-harness 就是为此设计的:它由 EleutherAI 维护,内置 60 多个标准基准和数百个子任务,把「加载模型 → 组装 prompt → 计分」整条流程统一起来,省去为每个基准各写一套评测脚本的麻烦。这篇安装配置教程带你从克隆仓库到跑通第一条评估命令。
它解决什么问题
做模型评估最耗时间的不是调模型,而是给每个基准重写数据加载、prompt 模板和计分逻辑。这个框架把这三件事都标准化了:任务以 YAML 配置定义,提示词公开可复现,分数可直接跨论文对比。
适合两类人:要选模型的工程团队,以及需要复现论文数字的研究者。它支持的模型覆盖面很广——Hugging Facetransformers加载的本地权重、vLLM/SGLang 加速推理、GGUF 量化模型,以及 OpenAI、Anthropic、TextSynth 等商业 API,连 LoRA 这类 PEFT 适配器也能直接评。
装之前,先确认这三样东西
- Python ≥ 3.10:
pyproject.toml中声明requires-python = ">=3.10",低于这个版本装不上。用python --version确认。 - Git:克隆仓库用。
- GPU/CUDA:README 的标准示例假设你有 CUDA GPU(
--device cuda:0)。没有 GPU 也能跑:把设备换成cpu,Mac 可换成mps(需 PyTorch ≥ 2.1),只是速度较慢。
⚠️ 注意一个新版变化:基础包不再包含transformers/torch,模型后端要单独装(下文会给出对应命令),否则--model hf会直接报错。
三步装好
一条命令搞定克隆、进目录、安装,装完lm-eval -h能看到帮助信息就说明成功了:
git clone --depth 1 https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness cd lm-evaluation-harness pip install -e .由于基础包更轻了,跑 Hugging Face 模型前再补一个后端依赖(约等于装 transformers、torch、accelerate、peft):
pip install "lm_eval[hf]"验证安装是否成功:运行lm-eval -h,会列出run、ls、validate三个子命令及常用参数,顺便扫一眼你计划用的参数名。
跑通你的第一个评估
下面这条命令直接来自 README 官方示例:用 GPT-J-6B 在 hellaswag 上评测(首次运行会从 Hub 下载模型权重,需要耐心等):
lm_eval --model hf \ --model_args pretrained=EleutherAI/gpt-j-6B \ --tasks hellaswag \ --device cuda:0 \ --batch_size 8逐个拆开看:
--model hf:选模型后端。hf表示用 transformers 加载 Hugging Face Hub 上的权重,也可以填本地路径。--model_args pretrained=...:传给模型构造函数的参数,这里指定要评哪个模型,逗号后可继续追加dtype=、revision=等。--tasks hellaswag:要跑的基准,逗号分隔可一次跑多个;不确定有什么任务就跑lm-eval ls tasks看全量清单。--device cuda:0:指定第一张 GPU;无卡改成cpu,Mac 改成mps。--batch_size 8:批大小。显存吃紧就调小,写auto则自动探测当前设备能塞下的最大批。
跑完最后会在终端打印一张结果表,包含样本数和指标得分。想先快速验证流程通不通,加--limit 10只跑 10 条样本,几秒出结果。
进阶:多卡与常用变体
多卡数据并行——模型能放进单卡时,用accelerate启动器让 K 张卡各跑一份,理论 K 倍提速(记得在accelerate config里禁用 FSDP 分片):
accelerate launch -m lm_eval --model hf \ --tasks lambada_openai,arc_easy \ --batch_size 16模型比单卡还大——不走启动器,把权重切开铺到所有卡上,给--model_args加parallelize=True:
lm_eval --model hf \ --tasks lambada_openai,arc_easy \ --model_args parallelize=True \ --batch_size 16评 LoRA/PEFT 适配器——在基座模型的命令后追加,peft=PATH,一行改动:
lm_eval --model hf \ --model_args pretrained=EleutherAI/gpt-j-6b,parallelize=True,load_in_4bit=True,peft=nomic-ai/gpt4all-j-lora \ --tasks openbookqa,arc_easy,winogrande,hellaswag,arc_challenge,piqa,boolq \ --device cuda:0评商业 API——先装 api 后端并设置密钥,命令里不再需要--device:
pip install "lm_eval[api]" export OPENAI_API_KEY=YOUR_KEY_HERE lm_eval --model openai-completions \ --model_args model=davinci-002 \ --tasks lambada_openai,hellaswagvLLM 加速推理——pip install "lm_eval[vllm]"后使用,建议始终配--batch_size auto吃满连续批处理:
lm_eval --model vllm \ --model_args pretrained={model_name},tensor_parallel_size={GPUs_per_model},dtype=auto,gpu_memory_utilization=0.8,data_parallel_size={model_replicas} \ --tasks lambada_openai \ --batch_size auto接下来做什么
把--tasks换成mmlu、leaderboard这类任务组,一次评完整基准集;加--output_path results把结果和样本落盘,配合--log_samples便于事后分析;跑的过程中按需调--num_fewshot、--batch_size和--limit观察分数与速度的变化。参数总表、YAML 配置写法与任务清单分别见 CLI 参考、配置指南 和 任务目录说明。
【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考