一、目录
- 环境配置
- 环境测试
- 本地模型测评
二、实现
- 环境配置
>>创建环境
conda create --name opencompass python=3.10 pytorch torchvision pytorch-cuda -c nvidia -c pytorch -y
source activate opencompass
git clone https://github.com/open-compass/opencompass opencompass #下载模型
cd opencompass
pip install -e .
下载数据集,解压并放于opencompass 文件夹下
# 下载数据集到 data/ 处
wget https://github.com/open-compass/opencompass/releases/download/0.1.8.rc1/OpenCompassData-core-20231110.zip
unzip OpenCompassData-core-20231110.zip
在opencompass 文件夹下执行 测试命令, 如 >>python run.py --models hf_llama_7b --datasets mmlu_ppl ceval_ppl
- 测试 (在线)`
python run.py --models hf_llama_7b --datasets mmlu_ppl ceval_ppl
- 本地模型测评,配置文件 eval_demo.py (离线)
参考:https://blog.csdn.net/qq_36803941/article/details/135938692
3.1 修改 模型加载文件
>>cd /home/opencompass/configs/models/hf_llama
本人采用llama3 模型测试,但并没有llama3 相关文件,因此创建模型加载文件
>>vim hf_llama3_8b.py
#参考其他文件,书写模型配置,进行加载模型。
from opencompass.models import HuggingFaceCausalLM
models = [
# LLaMA 7B
dict(
type=HuggingFaceCausalLM,
abbr='llama3-8b-hf',
path="/home/Meta-Llama-3-8B-Instruct", # 你的模型存放的实际路径,建议使用完整绝对路径
tokenizer_path='/home/Meta-Llama-3-8B-Instruct', # 你的模型存放的实际路径,建议使用完整绝对路径
tokenizer_kwargs=dict(padding_side='left',
truncation_side='left',
use_fast=False,
),
max_out_len=1000,
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),
)
]
3.2. 查看模型配置文件是否成功
3.3. 修改评估配置
>>cd configs
vim eval_demo.py
#配置
from mmengine.config import read_base
with read_base():
from .datasets.collections.base_medium_llama import piqa_datasets, siqa_datasets #加载的数据集
from .datasets.ceval.ceval_ppl import ceval_datasets
from .models.hf_llama.hf_llama3_8b import models #加载的模型
datasets = [*piqa_datasets, *siqa_datasets,*ceval_datasets]
#执行:>>python run.py configs/eval_demo.py
方式二、 配置文件中加载模型、加载数据集(配置文件必须放在configs 文件夹下,不然找不到路径),eval_demo.py, 无需单独去配置模型。
from mmengine.config import read_base
from opencompass.models import HuggingFaceCausalLM
batch_size = 20
# 指定评测模型
model_name_or_paths = [ #可以多个模型
'/home/Meta-Llama-3-8B-Instruct'
]
models = [] #模型以及配置放于列表中
for model_name_or_path in model_name_or_paths:
abbr = model_name_or_path.split('/')[-1]
model = dict(
type=HuggingFaceCausalLM,
abbr=abbr,
path=model_name_or_path,
tokenizer_path=model_name_or_path,
tokenizer_kwargs=dict(padding_side='left',
truncation_side='left',
use_fast=False,
trust_remote_code=True
),
max_out_len=1000,
max_seq_len=2048,
batch_size=batch_size,
model_kwargs=dict(device_map='auto', trust_remote_code=True),
batch_padding=False, # if false, inference with for-loop without batch padding
run_cfg=dict(num_gpus=2, num_procs=2),
)
models.append(model)
# 指定评测集
with read_base():
from .datasets.ceval.ceval_ppl import ceval_datasets #数据集路径。
datasets = [*ceval_datasets] #数据集,放于列表中
# python run.py configs/eval_demo.py -w outputs/firefly