lm-evaluation-harness 安装与配置快速上手指南:四步装好并跑通首次评估
2026/9/12 3:16:57 网站建设 项目流程

lm-evaluation-harness 安装与配置快速上手指南:四步装好并跑通首次评估

【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness

lm-evaluation-harness 是 EleutherAI 出品的开源框架,把同一个语言模型送进 60 多个学术基准统一跑分,让不同模型的分数可直接横向比较。本文带你走完整条上手链路:克隆仓库、分离式安装、YAML 配置、首次评估,每条命令都能直接复制执行。

快速开始:三条命令拿到第一个分数

先不追求完整环境,用 CPU 跑一个小模型、小数据量,确认工具链是通的。执行下面这组命令:克隆仓库、安装核心包和 Hugging Face 后端。

git clone --depth 1 https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness cd lm-evaluation-harness pip install -e . pip install "lm_eval[hf]"

装完后用 gpt2(一个 124M 参数的小模型)在 CPU 上跑 hellaswag 任务,--limit 10表示只取前 10 条样例,几秒钟就能看到结果:

lm-eval run --model hf \ --model_args pretrained=gpt2,dtype=float32 \ --tasks hellaswag \ --device cpu \ --limit 10

你会看到一张结果表,形如hellaswag | 0-shot | acc,none | 0.2000 | ...。gpt2 得分低很正常——这一步验证的是流程跑通,而不是模型能力。跑通之后,再按下面的章节把环境补齐。

项目速览:lm-evaluation-harness 能做什么

  • 定位:生成式语言模型统一评测框架,Hugging Face Open LLM Leaderboard 的后端,已被数百篇论文用于跨论文可比的分数字段。
  • 主要语言:Python(包名lm_eval,硬性要求 Python ≥ 3.10)。
  • 核心框架:Hugging Face transformers 加载本地模型、vLLM 做高吞吐推理、OpenAI/TextSynth 等商业 API、PEFT 支持 LoRA 适配器、GPTQ/AutoGPTQ 支持量化权重。
  • 适用场景:选型期多模型横评、微调前后回归对比、few-shot 能力测量;结果可落盘为 JSON,也能接 W&B、Zeno 做可视化。

"评测"在这里有明确含义:框架把每道题自动拼装成"任务描述 + 若干示例答案 + 待答题目"的 few-shot 提示,再喂给模型计分。下图是这个提示的构成(task description 是任务说明,examples 是示例,prompt 是真正要回答的那一句):

环境准备:lm-evaluation-harness 前置要求一览

项目要求说明
Python≥ 3.10pyproject.toml 中的硬性要求,低版本直接拒绝安装
GPU可选无 GPU 可用 CPU 跑小模型;NVIDIA 显卡需装好 CUDA 驱动
磁盘建议 ≥ 10 GB模型权重和任务数据集首次运行时会自动下载
网络必须任务数据来自 Hugging Face datasets,首次运行拉取
虚拟环境建议venv 或 conda 隔离,避免依赖污染全局 Python

Mac 用户没有 CUDA 也不影响:把--device cuda:0换成--device mps即可走 Metal 后端(需 PyTorch ≥ 2.1)。

安装步骤:lm-evaluation-harness 核心包与模型后端分开装

1. 克隆仓库。--depth 1只拉最新一次提交,省掉历史体积:

git clone --depth 1 https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness

你会得到本地lm-evaluation-harness目录,顶层有pyproject.tomllm_eval/docs/

2. 安装核心框架。可编辑安装(-e)让源码和站点包共用一份,后续改代码立即生效:

cd lm-evaluation-harness pip install -e .

预期输出以Successfully installed lm_eval-0.4.13.dev0 ...结尾。

3. 按需求装模型后端。从 2025/12 起基础包不再捆绑 transformers/torch,后端改用可选扩展(extras)单独安装,常用三组如下:

pip install "lm_eval[hf]" # transformers + torch + accelerate + peft pip install "lm_eval[vllm]" # vLLM 快速推理 pip install "lm_eval[api]" # OpenAI / Anthropic / 本地推理服务器

也可以一次装全:pip install "lm_eval[hf,vllm,api]"。装完后pip list里能看到transformerstorch等对应包。

4. 验证 CLI 是否可用。安装入口点注册了两个等价命令lm-evallm_eval,用帮助信息确认:

lm-eval --help

✅ 你会看到run(执行评估)、ls(列出任务/标签)、validate(校验任务配置)三个子命令的说明。

5.(可选)安装任务依赖。个别任务(math 判分、longbench 的 jieba 分词、IFEval 等)需要额外包;如果你只用 hellaswag、arc 这类基础任务可跳过:

pip install "lm_eval[tasks]"

安装完成后,运行lm-eval ls tasks可看到内置的全部任务名(数百行),后续选任务都从这份清单里挑。

配置与首次运行:lm-evaluation-harness 用一份 YAML 跑完整任务

参数多了以后,把配置写进 YAML 文件比一长串命令行更清晰。创建eval_config.yaml,内容如下:

model: hf model_args: pretrained: gpt2 dtype: float32 tasks: - hellaswag - arc_easy num_fewshot: 0 batch_size: auto device: cpu output_path: ./results/gpt2/ log_samples: true

逐条解释关键字段:

  • model:后端类型,hf(transformers)、vllmlocal-completions(OpenAI 兼容服务器)等。
  • model_args:透传给模型构造器,pretrained可以是 Hub 名称或本地路径,dtype控制计算精度。
  • tasks:任务名列表,支持通配符,如lambada_openai_mt_*一次选中所有机器翻译 lambada 变体。
  • num_fewshot:提示中放几道示例题,0 即纯 zero-shot。
  • batch_sizeauto会自动探测当前显存/内存能塞下的最大批量,auto:4表示重新探测 4 次以进一步提速。
  • devicecuda:0cpumps三选一。
  • output_path+log_samples:评估结果存成results.json,逐条输入输出也落盘,方便事后复查哪道题答错了。

用配置文件启动评估,命令行会覆盖文件中的同名项(比如临时加--tasks mmlu --limit 100):

lm-eval run --config eval_config.yaml

你会看到 hellaswag 和 arc_easy 两张得分表依次打印,./results/gpt2/目录下出现results.json和样例文件。

lm-evaluation-harness 单 GPU 评估与 batch_size 调优

有 CUDA 显卡时把设备指到cuda:0,批量交给auto自动探测,能显著减少手动试批量的成本:

lm-eval run --model hf \ --model_args pretrained=EleutherAI/gpt-j-6B \ --tasks hellaswag \ --device cuda:0 \ --batch_size auto

预期与 CPU 版一致:任务得分表打印完毕即成功;若中途报显存不足,把auto换成一个较小的整数(如 8)。

lm-evaluation-harness 多 GPU 并行评估配置

模型放得进单卡时,用 accelerate 启动器做数据并行——每张卡加载一份完整模型,K 张卡约 K 倍速度:

accelerate launch -m lm_eval run \ --model hf \ --tasks lambada_openai,arc_easy \ --batch_size 16

⚠️ 注意:数据并行与 FSDP 权重切分互斥,accelerate config里需关闭 FSDP 或选 NO_SHARD 模式。

模型大到单卡装不下时,不加启动器、直接在model_args里声明切分,权重会被摊到所有可用 GPU 上:

lm-eval run --model hf \ --tasks lambada_openai,arc_easy \ --model_args parallelize=True \ --batch_size 16

两种手段还可以叠加(启动器起多份副本、每份内部再切分)。如果你用 vLLM 后端,并行参数改在model_args里写:tensor_parallel_size(张量并行卡数)、data_parallel_size(副本数),配合--batch_size auto享受其连续批处理。

lm-evaluation-harness 无 GPU 环境(CPU / Mac MPS)运行

纯 CPU 机器把--device cpu加上、模型选 gpt2/pythia 级别即可完整走通;Mac 用户换成--device mps。这条路径与 GPU 版唯一区别就是设备参数,其余命令完全相同,可作为 CI 环境里的冒烟测试。

常见问题:lm-evaluation-harness 安装与运行排错

现象:lm_eval: command not found原因:pip 装的入口点不在当前 shell 的 PATH 里,常见于混用了多个 Python 环境。 解决:先确认包装没装错——运行python -m lm_eval --help,能出帮助说明包本身没问题,重新激活对应虚拟环境再敲lm-eval即可;装错环境就回到正确环境执行pip install -e .重装。

现象:--model hf时报No module named 'transformers'原因:2025/12 起基础包默认不含 transformers 和 torch,这是设计变更而不是安装失败。 解决:执行pip install "lm_eval[hf]"。外层引号别省,否则 bash 会把方括号当通配符解析。

现象:评估中途RuntimeError: CUDA out of memory原因:批量过大,或权重加激活超过了单卡显存。 解决:按从轻到重依次尝试——--batch_size auto或换更小的整数批量;--model_args parallelize=True切分到多卡;给model_argsload_in_4bit=True做 4bit 量化加载。

现象:Task xxx not found原因:任务名拼写有误,或该任务属于外部任务集、未挂进来。 解决:用lm-eval ls tasks核对正确名称;外部任务通过--include_path /path/to/tasks挂载,并可用lm-eval validate --tasks xxx先校验配置再运行。

延伸资源:深入官方文档与任务体系

  • CLI 全部参数与子命令说明:docs/interface.md
  • YAML 配置文件完整字段参考:docs/config_files.md
  • Python API(simple_evaluate())编程式调用:docs/python-api.md
  • 内置任务清单与任务 YAML 写法:lm_eval/tasks/README.md
  • 各模型后端接口详解:docs/model_guide.md
  • 编写新任务指南与空白模板:docs/new_task_guide.md、templates/new_yaml_task/
  • 交互式入门 notebook:examples/lm-eval-overview.ipynb

到这里工具链已经就绪。下一步建议先把你真正要评的模型换进model_args,用--limit 10抽查几条生成样例确认打分符合预期,再放开限制跑完整任务。

【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询