OpenCompass 是一个用于评测语言大模型和多模态大模型的算法库,中文文档连接:https://opencompass.readthedocs.io/zh-cn/latest/index.html
一、OpenCompass 安装
现创建 python 环境,版本为 3.10,然后克隆 git 仓库
conda create -n opencompass python=3.10
conda activate opencompass
git clone https://github.com/open-compass/opencompass opencompass
cd opencompass
pip install -e .
二、数据集下载
在 opencompass 文件夹下执行:
wget https://github.com/open-compass/opencompass/releases/download/0.1.8.rc1/OpenCompassData-core-20231110.zip
unzip OpenCompassData-core-20231110.zip
解压完后把文件夹改名为 data
但是 LawBench 的数据集暂时还没有被整合到 OpenCompass 的数据集中,需要自己手动下载
在 opencompass 文件夹执行:
git clone https://gitee.com/ljn20001229/LawBench.git
mkdir ./data/lawbench
cp -r ./LawBench/data/one_shot ./data/lawbench
cp -r ./LawBench/data/zero_shot ./data/lawbench
这样就把 LawBench 的数据集放到 OpenCompass 下了,操作完后的目录结构如下:
opencompass
|-- LawBench
|-- data
| |-- lawbench
| | |-- one_shot
| | `-- zero_shot
三、模型下载
这里我使用 Qwen2-1.5b 模型为例,这个模型运行时大约占用 8G 显存,如果显存不足请自行更换模型。
3.1 准备数据集配置文件
在 ./configs
文件夹下新增配置文件 eval_{模型名字}.py
,然后写入如下内容:
from mmengine.config import read_base
with read_base():
from .datasets.lawbench.lawbench_zero_shot_gen_002588 import lawbench_datasets as zero
from .datasets.lawbench.lawbench_one_shot_gen_002588 import lawbench_datasets as one
from .models.qwen.hf_qwen2 import models
datasets = [*zero, *one]
简单解释一下代码,数据集的读取程序存放在 ./datasets/lawbench/awbench_zero_shot_gen_002588.py
和 ./datasets/lawbench/awbench_one_shot_gen_002588.py
两个文件内,lawbench_datasets
是这两个文件内的 List,定义了数据格式和提取方式等信息,./models/qwen/hf_qwen2.py
文件保存了模型信息,后面会讲到这个文件如何配置
3.2 准备模型
对于开源模型,OpenCompass 默认直接使用 HuggingFace model ID 从 hf 上下载开源模型和权重,但是由于网络问题,有时需要提前把模型下载到本地进行评测,模型可以直接从 HuggingFace 或 ModelScope 上下载,下载好后把模型文件放到 opencompass 文件夹下
3.3 准备模型配置文件
在 ./configs/models/{模型名字}
目录下创建文件 hf_{具体模型名字}.py
,并且写入如下内容:
from opencompass.models import HuggingFaceBaseModel
models = [
dict(
type=HuggingFaceBaseModel,
abbr='qwen2-hf',
path='/home/spfa/repo/LawBench/opencompass/Qwen2',
tokenizer_path='/home/spfa/repo/LawBench/opencompass/Qwen2',
max_out_len=1024,
batch_size=1,
run_cfg=dict(num_gpus=1),
)
]
简单解释一下,该文件决定了模型该如何加载,path
和 tokenizer_path
通常填相同路径即可,最好填绝对路径。
此时的目录结构大概如下:
opencompass
|-- LawBench
|-- Qwen2
|-- data
| |-- lawbench
| | |-- one_shot
| | `-- zero_shot
|-- configs
| |-- eval_qwen2.py
| |-- models
| | |-- qwen
| | | |-- hf_qwen2.py
四、开始评测
在 opencompass 目录下,执行:
python run.py configs/eval_{模型名字}.py
如果想要显示详细的调试信息,可以加上 --debug
参数
最后的模型评测结果会保存在 ./outputs/default/{时间戳}/predictions
文件夹下
如果出现错误,请打开 --debug
参数查看调试信息,并在 ./outputs/default/{时间戳}/logs
文件夹下查看查看日志