写在前面
OpenCompass是上海人工智能实验室研发的大模型开源评测体系。该体系是面向大语言模型、多模态大模型等各类模型的一站式评测平台。
此篇几乎是copy的机智流的教程,可移步去查看详细:
1、环境配置
按照前面的章节,配置好相应环境和模块:
# 创建镜像并下载依赖
conda create -n llama3 python=3.10
conda activate llama3
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia
# 安装git
mkdir -p ~/model
cd ~/model
apt install git git-lfs -y
# 获取权重模型
git clone https://code.openxlab.org.cn/MrCat/Llama-3-8B-Instruct.git Meta-Llama-3-8B-Instruct
2、安装OpenCompass
cd ~
git clone https://github.com/open-compass/opencompass opencompass
cd opencompass
pip install -e .
如果遇到错误,就执行:
pip install -r requirements.txt
pip install protobuf
export MKL_SERVICE_FORCE_INTEL=1
export MKL_THREADING_LAYER=GNU
3、准备数据
# 下载数据集到 data/ 处
# 不用更换文件夹路径,解压后自带data文件夹,无需把压缩包放置在新建的data文件夹下
wget https://github.com/open-compass/opencompass/releases/download/0.2.2.rc1/OpenCompassData-core-20240207.zip
unzip OpenCompassData-core-20240207.zip
需要注意说明的是,一定要注意data的路径,这个会在调用评测时候的/root/opencompass/opencompass/datasets/下的py文件中加载,如果路径不对,对应的数据集将会加载不到,如下所示:
4、命令行快速评测
# 列出所有配置
# python tools/list_configs.py
# 列出所有跟 llama (模型)及 ceval(数据集) 相关的配置
python tools/list_configs.py llama ceval
以ceval_gen数据集为例:
python run.py \
--datasets ceval_gen \
--hf-path /root/model/Meta-Llama-3-8B-Instruct \ # HuggingFace 模型路径
--tokenizer-path /root/model/Meta-Llama-3-8B-Instruct \ # HuggingFace tokenizer 路径(如果与模型路径相同,可以省略)
--tokenizer-kwargs padding_side='left' truncation='left' trust_remote_code=True \ # 构建 tokenizer 的参数
--model-kwargs device_map='auto' trust_remote_code=True \ # 构建模型的参数
--max-seq-len 2048 \ # 模型可以接受的最大序列长度
--max-out-len 16 \ # 生成的最大 token 数
--batch-size 4 \ # 批量大小
--num-gpus 1 \ # 运行模型所需的 GPU 数量
--debug
如果遇到ModuleNotFoundError: No module named 'rouge' 错误运行
git clone https://github.com/pltrdy/rouge
cd rouge
python setup.py install
评测完成后,执行结果页面有显示,也有保存在csv文件中:
之后尝试使用qwen数据集,也就是将上面的ceval_gen替换为qwen,结果报错ModuleNotFoundError: No module named 'rouge_chinese'。
那么就执行命令:
git clone https://github.com/Isaac-JL-Chen/rouge_chinese.git
cd rouge_chinese
python setup.py install
若还出现其他的问题,比如找不到opencompass模块,笔者认为是后面安装rouge以及rouge-chinese时更换了环境变量,那么就重新安装一遍opencompass模块并重新安装。
5、快速评测
在config下面添加模型配置文件eval_llama3_8b_demo.py文件,这里是使用ceval_gen数据集,没有使用mmlu_datasets,因为爆了内存,同时也修改了py文件中的batch_size为4,max_out_len为16,可以查看datasets/下面查看想要使用的数据集:
from mmengine.config import read_base
with read_base():
from .datasets.mmlu.mmlu_gen_4d595a import mmlu_datasets
datasets = [*mmlu_datasets]
from opencompass.models import HuggingFaceCausalLM
models = [
dict(
type=HuggingFaceCausalLM,
abbr='Llama3_8b', # 运行完结果展示的名称
path='/root/model/Meta-Llama-3-8B-Instruct', # 模型路径
tokenizer_path='/root/model/Meta-Llama-3-8B-Instruct', # 分词器路径
model_kwargs=dict(
device_map='auto',
trust_remote_code=True
),
tokenizer_kwargs=dict(
padding_side='left',
truncation_side='left',
trust_remote_code=True,
use_fast=False
),
generation_kwargs={"eos_token_id": [128001, 128009]},
batch_padding=True,
max_out_len=16,
max_seq_len=2048,
batch_size=4,
run_cfg=dict(num_gpus=1),
)
]
运行py文件可以得到评测结果。
(注意py的工作路径以及数据的路径为.datasets.mmlu.mmlu_gen_4d595a):
若出现加载数据报错,并且进入日志查看报错信息为:
Error: mkl-service + Intel(R) MKL: MKL_THREADING_LAYER=INTEL is incompatible with libgomp.so.1 library.
Try to import numpy first or set the threading layer accordingly. Set MKL_SERVICE_FORCE_INTEL to force it.
那么就添加环境变量控制:
export MKL_SERVICE_FORCE_INTEL=1
export MKL_THREADING_LAYER=GNU
小结
到这个章节,算是把机智流的Llama3的超级课堂大体过了一遍,但也只是简简单单模拟了一遍,里面还有很多深奥的东西没有学透。后续会不断在大章节之间穿插小章节,深入研读一下里面的执行文件,同时后续也打算按照他们提供的课程,手搓大模型,并做相应笔记。
只要卷不死,就往死里卷!!