📚
大模型跑分统一框架,60+学术基准评测,HuggingFace官方榜单后台引擎
🗺️ 学习路径

📖 学习笔记
Harness:LLM 评测框架学习包
项目:lm-evaluation-harness
难度:高级 | 动手为主 | 15+ 小时
🎯 核心概念
什么是 Harness?
想象你买了一部新手机,怎么知道它好不好?跑分。
大模型也一样。Harness = 统一的跑分工具,用来测试生成式语言模型在各种标准任务上的表现。
这个工具是 Hugging Face 官方榜单 Open LLM Leaderboard 的后台引擎,NVIDIA、Cohere、Nous Research 等团队都在用。
🗂️ 四个阶段学习路径
阶段一:基础认知(30分钟)
核心任务:理解评测框架是什么、做什么
| 问题 | 答案 |
|---|---|
| 为什么要评测? | 口头说"这个模型好"不算,要有数据 |
| 评什么? | 60+ 学术基准(常识推理/数学/代码/语言理解...) |
| 怎么评? | 拿模型输出和标准答案对比打分 |
关键术语:
阶段二:安装配置(1-2小时)
```bash
1. 克隆项目
git clone --depth 1 https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
pip install -e .
2. 按需安装模型后端(可多选)
pip install "lm_eval[hf]" # HuggingFace transformers
pip install "lm_eval[vllm]" # vLLM 加速推理
pip install "lm_eval[api]" # 商业 API(OpenAI 等)
3. 一行命令跑评测
lm_eval --model hf \
--model_args pretrained=EleutherAI/gpt-j-6B \
--tasks hellaswag \
--device cuda:0 \
--batch_size 8
```
支持哪些"考场"(Task)?
查看可评测列表:
```bash
lm_eval ls tasks
```
热门任务:
阶段三:核心操作(3-5小时)
1️⃣ 评测本地模型
```bash
HuggingFace 模型
lm_eval --model hf \
--model_args pretrained=model-name \
--tasks hellaswag,arc_easy \
--device cuda:0
GGUF 量化模型
lm_eval --model hf \
--model_args pretrained=/path/to/gguf,gguf_file=model.gguf \
--tasks hellaswag
```
2️⃣ vLLM 加速推理
```bash
lm_eval --model vllm \
--model_args pretrained=model-name,tensor_parallel_size=2 \
--tasks gsm8k_cot \
--batch_size auto
```
3️⃣ 商业 API 评测
```bash
本地推理服务器(OpenAI 兼容)
lm_eval --model local-completions \
--model_args model=your-model,base_url=http://localhost:8000/v1/completions \
--tasks gsm8k
```
4️⃣ 多 GPU 并行
```bash
数据并行(每块 GPU 各跑一遍)
accelerate launch -m lm_eval --model hf \
--tasks lambada_openai --batch_size 16
模型切分(太大放不下就分开)
lm_eval --model hf \
--model_args pretrained=big-model,parallelize=True \
--tasks lambada_openai
```
阶段四:自定义评测(5+小时)
写自己的评测题:
1. 创建 YAML 配置文件(考什么、怎么评分)
2. 设置评测参数(few shot 次数、批大小)
3. 加入多模态输入(图片+文字)
4. 分析结果:输出 JSON 报告
```yaml
示例:自定义任务 YAML
task: my_math_test
dataset_path: my_math_questions.json
output_type: generate_until
metric_list:
- metric: exact_match
```
进阶玩法:
📐 动手练习
入门级(必须完成)
进阶级(选做 2 个以上)
挑战级
🛠️ 快速命令速查
```bash
查看所有可评测任务
lm_eval ls tasks
验证任务数据完整性
lm_eval --model hf --model_args pretrained=model --tasks task_name --check_integrity
只看前 N 题
lm_eval --model hf --model_args pretrained=model --tasks task_name --limit 10
导出模型输出(不评分,仅看答案)
lm_eval --model hf --model_args pretrained=model --tasks task_name --predict_only
自动批大小
lm_eval --model hf --model_args pretrained=model --tasks task_name --batch_size auto
写题目原文到文件(调试用)
python write_out.py --tasks task_name --num_examples 10 --output_base_path /tmp/out
```
💡 学习建议
1. 先跑通再理解— 不要试图把 848 行 README 全读完再动手
2. 从单 GPU 单任务开始— `--limit 10` 快速验证
3. 结果导向— 最终产出一张表:模型 A vs 模型 B 在各任务上的分数
4. 关注 Hugging Face Leaderboard— 这是 Harness 跑出来的结果,是业界的"跑分榜"