文章目录
1. 什么是 OpenCompass
官方看这里。OpenCompass 是一个开源项目,旨在为机器学习和自然语言处理领域提供多功能、易于使用的工具和框架。其中包含的多个开源模型和开源数据集(BenchMarks),方便进行模型的效果评测。具体文档介绍看这里。
2. 通用评估流程
以下在官方文档中也有说明。
2.1 安装依赖库
GPU 环境:
conda create --name opencompass python=3.10 pytorch torchvision pytorch-cuda -c nvidia -c pytorch -y
conda activate opencompass
git clone https://github.com/open-compass/opencompass opencompass
cd opencompass
pip install -e .
CPU 环境:
conda create -n opencompass python=3.10 pytorch torchvision torchaudio cpuonly -c pytorch -y
conda activate opencompass
git clone https://github.com/open-compass/opencompass opencompass
cd opencompass
pip install -e .
# 如果需要使用各个API模型,请 `pip install -r requirements/api.txt` 安装API模型的相关依赖
2.2 数据准备
# 下载数据集到 data/ 处
wget https://github.com/open-compass/opencompass/releases/download/0.1.8.rc1/OpenCompassData-core-20231110.zip
unzip OpenCompassData-core-20231110.zip
2.3 评测
确保按照上述步骤正确安装 OpenCompass 并准备好数据集后,可以通过以下命令评测 LLaMA-7b 模型在 MMLU 和 C-Eval 数据集上的性能:
python run.py --models hf_llama_7b --datasets mmlu_ppl ceval_ppl
注意,通用流程中评测的是内置的一些模型,如何查看内置有哪些模型:
# 列出所有配置
python tools/list_configs.py
如下:
3. 如何使用其他模型评测
3.1 准备评测配置文件
新增如下文件./configs/eval_{你的模型名字}.py
,
里面的内容比如:
from mmengine.config import read_base
with read_base():
from .datasets.collections.base_medium_llama import piqa_datasets, siqa_datasets
from .models.hf_llama.hf_llama_7b import models
datasets = [*piqa_datasets, *siqa_datasets]
本段配置代码主要输出两个重要配置:
- 评测数据集 datasets,当前是 piqa_datasets 和 siqa_datasets,也可以选择多个评测集
- 待评测模型 models,当前是 hf_llama_7b
3.2 【可选】准备模型
对于无法连接外网的、或者需要评测非开源模型的,那么需要提前准备模型。
对于开源模型,OpenCompass 默认直接使用 HuggingFace model ID 从 hf 上下载开源模型和权重,点击这里,对于一些无法访问外网的机器,这里很容易网络连接失败。
对于评测开源模型的,需要先准备好模型文件,如果无法访问外网下载,可以通过 ModelScope ,这里搜索一些开源的模型,很多是 copy HuggingFace 的。
下载具体的模型,建议用官方提供 Python 代码去下载,下载之后记得把模型拷贝到自己熟悉的目录下!
例如,我把下载的模型拷贝到 OpenCompass 的项目下了:
如果你是用自己的模型,那你就把你的模型拷贝到你指定的目录下即可!
3.3 修改模型配置
模型的下载没有问题后,通过如下方式来指定模型配置文件:./configs/models/{模型名字}/{具体模型名字}.py
,如图:
即刚刚在上个配置文件中指定的模型配置,内容修改的地方如下:
from opencompass.models import HuggingFaceCausalLM
models = [
# LLaMA 7B
dict(
type=HuggingFaceCausalLM,
abbr='llama-7b-hf',
path="/root/data/opencompass-main/llmmodel/llama-7b", # 你的模型存放的实际路径,建议使用完整绝对路径
tokenizer_path='/root/data/opencompass-main/llmmodel/llama-7b', # 你的模型存放的实际路径,建议使用完整绝对路径
tokenizer_kwargs=dict(padding_side='left',
truncation_side='left',
use_fast=False,
),
max_out_len=100,
max_seq_len=2048,
batch_size=8,
model_kwargs=dict(device_map='auto'),
batch_padding=False, # if false, inference with for-loop without batch padding
run_cfg=dict(num_gpus=1, num_procs=1),
)
]
将 path 和 tokenizer_path 指向本地模型目录即可。
3.4 启动评测
直接使用项目根目录下的 run.py,指定我们定义好的评测配置,即可运行:
python run.py configs/eval_{你的模型名字}.py
最终的评测结果会在 outputs/default/{时间戳}
输出:
4. 参考
https://zhuanlan.zhihu.com/p/669291064?utm_id=0
欢迎关注本人,我是喜欢搞事的程序猿; 一起进步,一起学习;
也欢迎关注我的wx公众号:一个比特定乾坤