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公众号:一个比特定乾坤

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐