作业(5)

大模型opencompass测评作业
在这里插入图片描述

基础作业

使用 OpenCompass 评测InternLM2-Chat-7B 模型在 C-Eval 数据集上的性能

在InternStudio开发机进行以下操作,如果不是使用该服务器,需手动下载

1 安装

面向GPU的环境安装

conda create --name opencompass --clone=/root/share/conda_envs/internlm-base
source activate opencompass
git clone https://github.com/open-compass/opencompass
# 如果github拉取有问题可以选择国内的gitee(但是版本相较于github上的更新较慢)
#git clone https://gitee.com/open-compass/opencompass
cd opencompass
pip install -e .

2 数据准备

# 解压评测数据集到 data/ 处
cp /share/temp/datasets/OpenCompassData-core-20231110.zip /root/opencompass/
unzip OpenCompassData-core-20231110.zip
# 将会在opencompass下看到data文件夹

查看支持的数据集和模型

# 列出所有跟 internlm 及 ceval 相关的配置
python tools/list_configs.py internlm ceval

将会看到
在这里插入图片描述

3 启动评测

确保按照上述步骤正确安装 OpenCompass 并准备好数据集后,可以通过以下命令评测 InternLM2-Chat-7B 模型在 C-Eval 数据集上的性能。由于 OpenCompass 默认并行启动评估过程,我们可以以 --debug 模式启动评估,并检查是否存在问题。在 --debug 模式下,任务将按顺序执行,并实时打印输出。

python run.py \
--datasets ceval_gen \
--hf-path internlm/internlm2-chat-7b \
--tokenizer-path internlm/internlm2-chat-7b \
--tokenizer-kwargs padding_side='left' truncation='left' trust_remote_code=True \
--model-kwargs trust_remote_code=True device_map='auto' \
--max-seq-len 2048 \
--max-out-len 16 \
--batch-size 4 \
--num-gpus 1 \
--debug

之前查看时share文件夹内的model_repos还没有internlm2-chat-7b,所以采用huggingface.co模型库的加载方式,后面查看已经有了更新,所以上述命令也可以更改为如下情况,但是我执行以下指令时会出现文件找不到的错误,最后结果全都没有

python run.py \
--datasets ceval_gen \
--hf-path /share/temp/model_repos/internlm2-chat-7b/ \
--tokenizer-path /share/temp/model_repos/internlm2-chat-7b/ \
--tokenizer-kwargs padding_side='left' truncation='left' trust_remote_code=True \
--model-kwargs trust_remote_code=True device_map='auto' \
--max-seq-len 2048 \
--max-out-len 16 \
--batch-size 4 \
--num-gpus 1 \
--debug

命令解析

--datasets ceval_gen \
--hf-path  internlm/internlm2-chat-7b \  # HuggingFace 模型路径
--tokenizer-path  internlm/internlm2-chat-7b \  # 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

评测完成后,将会看到:

在这里插入图片描述

进阶作业

使用 OpenCompass 评测 InternLM2-Chat-7B 模型使用 LMDeploy 0.2.0 部署后在 C-Eval 数据集上的性能

InternLM2-Chat-7B 模型使用 LMDeploy 0.2.0 部署

创建一个download.py文件,下载InternLM2-Chat-7B模型:

import torch
from modelscope import snapshot_download, AutoModel, AutoTokenizer
import os
model_dir = snapshot_download('Shanghai_AI_Laboratory/internlm2-chat-7b', cache_dir='/root/data/model')

然后使用上次的lmdeploy环境继续,上次的lmdeploy是0.1.0版本的,所以首先卸载该版本(使用0.1.0是不支持internlm2的):

 pip uninstall lmdeploy

卸载完成:
在这里插入图片描述
下载:

pip install 'lmdeploy[all]==v0.2.0'

本步查看了https://hannahliu.framer.website/blog/internlm-training-lec6文章的做法,使用lmdeploy.lite 模块来对语言模型进行压缩和加速

lmdeploy lite auto_awq /root/data/model/Shanghai_AI_Laboratory/internlm2-chat-7b/ --w-bits 4 --w-group-size 128 --work-dir ./quant_output

在这里插入图片描述
想要使用该工具完成部署,需要在启动服务之前,将模型FastTransformer格式转为 lmdeploy TurboMind的格式

lmdeploy convert internlm2-chat-7b ./quant_output/ --model-format awq --group-size 128

执行完成后将会在当前目录生成一个 workspace 的文件夹。这里面包含的就是 TurboMind 和 Triton “模型推理”需要到的文件。
在这里插入图片描述

OpenCompass测评

按照configs/eval_internlm_chat_turbomind.py写好configs/eval_internlm2_chat_turbomind.py

from mmengine.config import read_base
from opencompass.models.turbomind import TurboMindModel

with read_base():
    # choose a list of datasets
    from .datasets.mmlu.mmlu_gen_a484b3 import mmlu_datasets
    from .datasets.ceval.ceval_gen_5f30c7 import ceval_datasets
    from .datasets.SuperGLUE_WiC.SuperGLUE_WiC_gen_d06864 import WiC_datasets
    from .datasets.SuperGLUE_WSC.SuperGLUE_WSC_gen_7902a7 import WSC_datasets
    from .datasets.triviaqa.triviaqa_gen_2121ce import triviaqa_datasets
    from .datasets.gsm8k.gsm8k_gen_1d7fe4 import gsm8k_datasets
    from .datasets.race.race_gen_69ee4f import race_datasets
    from .datasets.crowspairs.crowspairs_gen_381af0 import crowspairs_datasets
    # and output the results in a choosen format
    from .summarizers.medium import summarizer


datasets = sum((v for k, v in locals().items() if k.endswith('_datasets')), [])

internlm_meta_template = dict(round=[
    dict(role='HUMAN', begin='<|User|>:', end='\n'),
    dict(role='BOT', begin='<|Bot|>:', end='<eoa>\n', generate=True),
],
                              eos_token_id=103028)

# config for internlm2-chat-7b
internlm2_chat_7b = dict(
    type=TurboMindModel,
    abbr='internlm2-chat-7b-turbomind',
    path='internlm/internlm2-chat-7b',
    engine_config=dict(session_len=2048,
                       max_batch_size=32,
                       rope_scaling_factor=1.0),
    gen_config=dict(top_k=1,
                    top_p=0.8,
                    temperature=1.0,
                    max_new_tokens=100),
    max_out_len=100,
    max_seq_len=2048,
    batch_size=32,
    concurrency=32,
    meta_template=internlm_meta_template,
    run_cfg=dict(num_gpus=1, num_procs=1),
)


models = [internlm2_chat_7b]

最后在新的终端使用(注意在opencompass环境下)

python run.py configs/eval_internlm2_chat_turbomind.py -w outputs/turbomind/internlm2-chat-7b
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值