使用OpenCompass评估LLMs#
由lmdeploy加速的LLMs可以通过OpenCompass进行评估。
设置#
在这一部分,我们将设置评估环境。
安装 lmdeploy#
请按照安装指南来安装lmdeploy。
安装OpenCompass#
从源代码安装OpenCompass。更多信息请参考installation。
git clone https://github.com/open-compass/opencompass.git
cd opencompass
pip install -e .
目前,您可以查看快速开始来了解OpenCompass的基本用法。
下载数据集#
下载核心数据集
# Run in the OpenCompass directory
cd opencompass
wget https://github.com/open-compass/opencompass/releases/download/0.1.8.rc1/OpenCompassData-core-20231110.zip
unzip OpenCompassData-core-20231110.zip
准备评估配置#
OpenCompass 使用 OpenMMLab 风格的配置文件。用户可以定义一个 Python 配置文件并轻松开始评估。 OpenCompass 已经支持使用 Python API 对 lmdeploy 的 TurboMind 引擎进行评估。
数据集配置#
在OpenCompass的主目录中,我们正在编写配置文件 $OPENCOMPASS_DIR/configs/eval_lmdeploy.py
。
我们选择了多个预定义的数据集,并将它们从OpenCompass基础数据集配置中导入为 datasets
。
from mmengine.config import read_base
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 chosen format
from .summarizers.medium import summarizer
datasets = sum((v for k, v in locals().items() if k.endswith('_datasets')), [])
模型配置#
这部分展示了如何为LLMs设置模型配置。让我们看一些例子:
from opencompass.models.turbomind import TurboMindModel
internlm_20b = dict(
type=TurboMindModel,
abbr='internlm-20b-turbomind',
path="internlm/internlm-20b", # this path should be same as in huggingface
engine_config=dict(session_len=2048,
max_batch_size=8,
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=8,
concurrency=8,
run_cfg=dict(num_gpus=1, num_procs=1),
)
models = [internlm_20b]
对于聊天模型,您需要为聊天模型传递meta_template
。不同的聊天模型可能有不同的meta_template
,保持与训练设置中的一致非常重要。您可以阅读meta_template以获取更多信息。
from opencompass.models.turbomind import TurboMindModel
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)
internlm_chat_20b = dict(
type=TurboMindModel,
abbr='internlm-chat-20b-turbomind',
path='internlm/internlm-chat-20b',
engine_config=dict(session_len=2048,
max_batch_size=8,
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=8,
concurrency=8,
meta_template=internlm_meta_template,
run_cfg=dict(num_gpus=1, num_procs=1),
end_str='<eoa>'
)
models = [internlm_chat_20b]
注意
If you want to pass more arguments for
engine_config
和gen_config
in the evaluation config file, please refer to TurbomindEngineConfig and EngineGenerationConfig
执行评估任务#
在定义了评估配置之后,我们可以运行以下命令来开始评估模型。
您可以查看执行任务
以获取run.py
的更多参数。
# in the root directory of opencompass
python3 run.py configs/eval_lmdeploy.py --work-dir ./workdir