评测
Harness评测
基本介绍
LM Evaluation Harness是一个开源语言模型评测框架,提供60多种标准学术数据集的评测,支持HuggingFace模型评测、PEFT适配器评测、vLLM推理评测等多种评测方式,支持自定义prompt和评测指标,包含loglikelihood、generate_until、loglikelihood_rolling三种类型的评测任务。基于Harness评测框架对MindFormers进行适配后,支持加载MindFormers模型进行评测。
目前已适配的模型和支持的评测任务如下表所示(其余模型和评测任务正在积极适配中,请关注版本更新):
适配的模型 |
支持的评测任务 |
---|---|
Llama3-8B |
Gsm8k、Boolq、Mmlu、Ceval |
Qwen2-7B |
Gsm8k、Boolq、Mmlu、Ceval |
安装
Harness支持pip安装和源码编译安装两种方式。pip安装更简单快捷,源码编译安装更便于调试分析,用户可以根据需要选择合适的安装方式。
pip安装
用户可以执行如下命令安装Harness:
pip install lm_eval==0.4.4
源码编译安装
用户可以执行如下命令编译并安装Harness:
git clone --depth 1 https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
git checkout v0.4.4
pip install -e .
使用方式
查看数据集评测任务
用户可以通过如下命令查看Harness支持的所有评测任务:
#!/bin/bash
python toolkit/benchmarks/eval_with_harness.py --tasks list
启动单卡评测脚本
评测前准备
执行以下评测命令
#!/bin/bash python toolkit/benchmarks/eval_with_harness.py --model mf --model_args "pretrained=MODEL_DIR,device_id=0" --tasks TASKS
注: 执行脚本路径:eval_with_harness.py
评测参数
Harness主要参数
参数 |
类型 |
参数介绍 |
是否必须 |
---|---|---|---|
|
str |
须设置为mf,对应为MindFormers评估策略 |
是 |
|
str |
模型及评估相关参数,见下方模型参数介绍 |
是 |
|
str |
数据集名称,可传入多个数据集,逗号分割 |
是 |
|
int |
批处理样本数 |
否 |
|
int |
每个任务的样本数,多用于功能测试 |
否 |
MindFormers模型参数
参数 |
类型 |
参数介绍 |
是否必须 |
---|---|---|---|
|
str |
模型目录路径 |
是 |
|
bool |
是否开启增量推理,generate_until类型的评测任务须开启 |
否 |
|
int |
设备id |
否 |
评测样例
#!/bin/bash
python eval_with_harness.py --model mf --model_args "pretrained=./llama3-8b,use_past=True" --tasks gsm8k
评测结果如下,其中Filter对应匹配模型输出结果的方式,Metric对应评测指标,Value对应评测分数,stderr对应分数误差。
Tasks |
Version |
Filter |
n-shot |
Metric |
Value |
Stderr |
||
---|---|---|---|---|---|---|---|---|
gsm8k |
3 |
flexible-extract |
5 |
exact_match |
↑ |
0.5034 |
± |
0.0138 |
strict-match |
5 |
exact_match |
↑ |
0.5011 |
± |
0.0138 |
VLMEvalKit评测
基本介绍
VLMEvalKit 是一款专为大型视觉语言模型评测而设计的开源工具包,支持在各种基准测试上对大型视觉语言模型进行一键评估,无需进行繁重的数据准备工作,让评估过程更加简便。 它支持多种图文多模态评测集和视频多模态评测集,支持多种API模型以及基于PyTorch和HF的开源模型,支持自定义prompt和评测指标。基于VLMEvalKit评测框架对MindFormers进行适配后,支持加载MindFormers中多模态大模型进行评测。
支持特性说明
支持自动下载评测数据集;
支持用户自定义输入多种数据集和模型(目前仅支持
cogvlm2-llama3-chat-19B
,后续版本会逐渐增加);一键生成评测结果。
安装
git clone https://github.com/open-compass/VLMEvalKit.git
cd VLMEvalKit
pip install -e .
使用方式
启动单卡评测脚本
#!/bin/bash
python eval_with_vlmevalkit.py \
--data MME \
--model cogvlm2-llama3-chat-19B \
--verbose \
--work-dir /{path}/evaluate_result \
--model-path /{path}/cogvlm2_model_path \
--config-path /{path}/cogvlm2_config_path
评测参数
VLMEvalKit主要参数
参数 |
类型 |
参数介绍 |
是否必须 |
---|---|---|---|
–data |
str |
数据集名称,可传入多个数据集,空格分割。 |
是 |
–model |
str |
模型名称,可传入多个模型,空格分割。 |
是 |
–verbose |
/ |
输出评测运行过程中的日志。 |
否 |
–work-dir |
str |
存放评测结果的目录,默认存储在当前目录与模型名称相同的文件夹下。 |
否 |
–model-path |
str |
包含模型所有相关文件(权重、分词器文件、配置文件、processor文件)的路径,可传入多个路径,按照模型顺序填写,空格分割。 |
是 |
–config-path |
str |
模型配置文件路径,可传入多个路径,按照模型顺序填写,空格分割。 |
是 |
评测前准备
创建模型目录model_path;
模型目录下须放置yaml配置文件(*.yaml)、分词器文件(*_tokenizer.model),获取方式参考模型库中各模型说明文档;
配置yaml配置文件,参考配置文件说明。
yaml配置样例:
load_checkpoint: "/{path}/model.ckpt" # 指定权重文件路径
model:
model_config:
use_past: True # 开启增量推理
is_dynamic: False # 关闭动态shape
tokenizer:
vocab_file: "/{path}/tokenizer.model" # 指定tokenizer文件路径
评测样例
#!/bin/bash
export USE_ROPE_SELF_DEFINE=True
python eval_with_vlmevalkit.py \
--data COCO_VAL \
--model cogvlm2-llama3-chat-19B \
--verbose \
--work-dir /{path}/evaluate_result \
--model-path /{path}/cogvlm2_model_path \
--config-path /{path}/cogvlm2_config_path
评测结果如下,其中Bleu
和ROUGE_L
表示评估翻译质量的指标,CIDEr
表示评估图像描述任务的指标。
{
"Bleu": [
15.523950970070652,
8.971141548228058,
4.702477458554666,
2.486860744700995
],
"ROUGE_L": 15.575063213115946,
"CIDEr": 0.01734615519604295
}