赞
踩
OpenCompass是上海人工智能实验室研发的大模型开源评测体系。该体系是面向大语言模型、多模态大模型等各类模型的一站式评测平台。
此篇几乎是copy的机智流的教程,可移步去查看详细:
按照前面的章节,配置好相应环境和模块:
- # 创建镜像并下载依赖
- 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
- 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
- # 下载数据集到 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文件中加载,如果路径不对,对应的数据集将会加载不到,如下所示:
- # 列出所有配置
- # 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模块并重新安装。
在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的超级课堂大体过了一遍,但也只是简简单单模拟了一遍,里面还有很多深奥的东西没有学透。后续会不断在大章节之间穿插小章节,深入研读一下里面的执行文件,同时后续也打算按照他们提供的课程,手搓大模型,并做相应笔记。
只要卷不死,就往死里卷!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。