LLM微调评估先行:全面掌握 lm-eval 工具的实战与原理
LLM 微调流程常见如下:但真正高效的实践顺序应当是:原因是:选择容易评估的任务,如:选择评估成本可控、有现成数据或可收集的数据集,如:🔑 核心判断标准:任务是否可评估/易评估!评估流程包括:明确任务目标(分类 / 生成)选择合适指标:例如在 GSM8k 上:5. 有没有工具能帮我们评估?✅ 有!推荐使用:lm-evaluation-harness(简称 lm-eval)GitHub 地址:ht
📌 目录
- 1. 为什么微调前要先做评估?
- 2. 微调任务如何选择?
- 3. 如何选择评估数据?
- 4. 评估 LLM 在 GSM8k 等任务上的方法
- 5. 有没有工具能帮我们评估?
- 6. 如何安装 lm-eval 工具?
- 7. 如何快速评估模型性能?
- 8. 支持哪些模型类型?
- 9. 是否支持 LoRA 等微调模型?
- 10. 是否支持评估 OpenAI 等闭源模型?
- 11. 是否支持本地部署的 API 模型?
- 12. 是否支持 delta weights 模型?
- 13. 是否支持量化模型?
- 14. 支持哪些评估任务与评估方式?
- 15. 如何自定义评估任务?
- 16. 如何使用多 GPU 进行评估?
1. 为什么微调前要先做评估?
LLM 微调流程常见如下:
任务设定 → 数据准备 → 模型选择 → 微调 → 评估
但真正高效的实践顺序应当是:
任务设定 → 评估机制建立 → 数据准备 → 微调
原因是:
- ✅ 帮助理解任务目标;
- ✅ 指导选择合适模型;
- ✅ 避免“调了半天不知道变好没”。
2. 微调任务如何选择?
技术学习方向:
选择容易评估的任务,如:
- 数学客观题(GSM8k)
- 翻译
- 关键词提取等
项目实战方向:
选择评估成本可控、有现成数据或可收集的数据集,如:
- 医疗 QA
- 编程助手
- 法律问答
🔑 核心判断标准:任务是否可评估/易评估!
3. 如何选择评估数据?
技术学习:
- 推荐使用开放数据集:GSM8k、ARC、HellaSwag、BoolQ
项目开发:
- 根据业务领域构建数据,或复用已有标注数据集
4. 评估 LLM 在 GSM8k 等任务上的方法
评估流程包括:
-
明确任务目标(分类 / 生成)
-
选择合适指标:
- 分类:准确率 / 精度 / 召回
- 生成:exact match、BLEU
- QA类:F1 / EM
例如在 GSM8k 上:
lm_eval --model hf \
--model_args pretrained=Qwen/Qwen2.5-7B-Instruct \
--tasks gsm8k_cot \
--device cuda:0 \
--batch_size 4
5. 有没有工具能帮我们评估?
✅ 有!推荐使用:
lm-evaluation-harness(简称 lm-eval)
GitHub 地址:https://github.com/EleutherAI/lm-evaluation-harness
特点:
- 支持 Huggingface / OpenAI / Anthropic 等模型
- 支持 LoRA、delta weights、量化推理
- 提供 60+ benchmark 任务支持
6. 如何安装 lm-eval 工具?
✅ 方法一(推荐,支持自定义 task):
git clone --depth 1 https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
pip install -e .
✅ 方法二(使用标准 task):
pip install lm-eval
7. 如何快速评估模型性能?
示例:
lm_eval --model hf \
--model_args pretrained=Qwen/Qwen2.5-7B-Instruct,dtype=bfloat16 \
--tasks gsm8k_cot \
--log_samples --output_path results \
--device cuda:0 --batch_size 4
参数解释:
--model hf
使用 Huggingface 模型--log_samples
保存预测详情--output_path
结果输出路径
8. 支持哪些模型类型?
模型类型 | 支持与否 | 示例参数 |
---|---|---|
Huggingface 模型 | ✅ 支持 | --model hf |
OpenAI GPT | ✅ 支持 | --model openai-completions |
vLLM / 本地 API | ✅ 支持 | --model local-completions |
delta weights | ✅ 支持 | delta=xxx |
LoRA 微调模型 | ✅ 支持 | peft=xxx |
9. 是否支持 LoRA 等微调模型?
支持使用 Peft 库加载 LoRA / QLoRA 模型:
lm_eval --model hf \
--model_args pretrained=gpt-j-6b,peft=nomic-ai/gpt4all-j-lora,load_in_4bit=True \
--tasks arc_easy,piqa,boolq \
--device cuda:0
10. 是否支持评估 OpenAI 等闭源模型?
支持,需要配置 API Key:
export OPENAI_API_KEY=YOUR_KEY
lm_eval --model openai-completions \
--model_args model=gpt-4 \
--tasks lambada_openai,hellaswag
11. 是否支持本地部署的 API 模型?
支持,例如 Ollama / FastChat 提供的本地服务:
lm_eval --model local-completions --tasks gsm8k \
--model_args model=facebook/opt-125m,base_url=http://localhost:8000/v1/completions
12. 是否支持 delta weights 模型?
支持,指定基础模型 + delta 模型路径:
lm_eval --model hf \
--model_args pretrained=Ejafa/llama_7B,delta=lmsys/vicuna-7b-delta-v1.1 \
--tasks hellaswag
📌 delta weights 是微调权重差异文件,需要和基础模型合并才能推理。
13. 是否支持量化模型?
支持 GPTQ、GGUF 等格式:
GGUF 示例(llama.cpp)
python3 -m llama_cpp.server --model llama-model.gguf
lm_eval --model gguf --model_args base_url=http://localhost:8000 --tasks gsm8k
GPTQ 示例:
lm_eval --model hf \
--model_args pretrained=model-path,gptqmodel=True \
--tasks hellaswag
14. 支持哪些评估任务与评估方式?
支持超过 60 个 benchmark,包含多个子任务:
- 数据路径:
lm_eval/tasks
- 任务示例:GSM8k、ARC、BoolQ、HellaSwag
评估方式支持:
- exact_match
- BLEU
- accuracy
- self-consistency 等
15. 如何自定义评估任务?
任务配置示例(以 GSM8k 为例):
task: gsm8k
dataset_path: gsm8k
doc_to_text: "Question: {{question}}\nAnswer:"
doc_to_target: "{{answer}}"
metric_list:
- metric: exact_match
aggregation: mean
参考文档:
16. 如何使用多 GPU 进行评估?
✅ 数据并行(加速推理):
accelerate launch -m lm_eval --model hf \
--tasks arc_easy \
--batch_size 16
✅ 模型并行(切分模型到多卡):
lm_eval --model hf \
--tasks arc_easy \
--model_args parallelize=True \
--batch_size 16
📎 小结
能力 | 是否支持 |
---|---|
Huggingface 模型 | ✅ |
OpenAI API | ✅ |
LoRA 微调模型 | ✅ |
delta weights | ✅ |
本地 API 服务 | ✅ |
量化模型(GGUF/GPTQ) | ✅ |
多GPU/模型并行 | ✅ |
自定义任务/评估方式 | ✅ |
📚 参考资料
- 🔗 项目主页:https://github.com/EleutherAI/lm-evaluation-harness
- 📄 参数说明:https://github.com/EleutherAI/lm-evaluation-harness/blob/main/docs/interface.md
- 🧩 自定义任务:https://github.com/EleutherAI/lm-evaluation-harness/blob/main/docs/new_task_guide.md
- 📋 chat template:https://github.com/EleutherAI/lm-evaluation-harness/blob/main/docs/chat-template-readme.md
更多推荐
所有评论(0)