任务目标
- 使用 OpenCompass 评测 internlm2-chat-1.8b 模型在 ceval 数据集上的性能,记录复现过程并截图。
学习内容
任务实践
- 环境准备
conda create -n opencompass python=3.10 -y
conda activate opencompass
# 拉取OpenCompass源码。并下载需要的依赖包
git clone -b 0.2.4 https://github.com/open-compass/opencompass
cd opencompass
pip install -r requirements.txt
pip install -e .
# protobuf包需要单独安装
pip install protobuf
- 数据集准备
列出所有跟internlm及ceval相关的配置
C-Eval 是一个全面的中文基础模型评估套件。由上海交通大学、清华大学和爱丁堡大学研究人员在2023年5月份联合推出,它包含了13948个多项选择题,涵盖了52个不同的学科和四个难度级别,用以评测大模型中文理解能力。
# 复制到当前文件夹下
cp /share/temp/datasets/OpenCompassData-core-20231110.zip /root/opencompass/
#解压文件
unzip OpenCompassData-core-20231110.zip
- 实际评测
列出所有跟 internlm 及 ceval 相关的配置
python tools/list_configs.py internlm ceval
在运行之前,为了避免一些冲突,可以通过设置下面两个变量来控制:
export MKL_SERVICE_FORCE_INTEL=1
export MKL_THREADING_LAYER=GNU
这两条命令都用于配置 Intel Math Kernel Library (MKL) 的行为。MKL 是一个用于加速数学运算的库,通常用于科学计算和机器学习应用程序。
export MKL_SERVICE_FORCE_INTEL=1
此命令强制 MKL 使用 Intel 线程化层 (Threading Layer)。线程化层是负责管理线程的软件组件。MKL 支持两种线程化层:Intel 线程化层和 GNU 线程化层。
默认情况下,MKL 会自动选择最适合当前系统的线程化层。但是,如果您遇到性能问题或兼容性问题,则可能需要强制 MKL 使用特定的线程化层。
设置 MKL_SERVICE_FORCE_INTEL=1 将强制 MKL 使用 Intel 线程化层。这可能对使用 Intel 处理器的系统有益,因为它可以提高性能。但是,在某些情况下,它可能会导致性能下降或兼容性问题。export MKL_THREADING_LAYER=GNU
此命令将 MKL 的线程化层设置为 GNU 线程化层。GNU 线程化层是 GNU C 运行时库 (glibc) 的一部分。
设置 MKL_THREADING_LAYER=GNU 将强制 MKL 使用 GNU 线程化层,即使系统上安装了 Intel 线程化层也是如此。这可能对使用非 Intel 处理器的系统有益,或者如果您遇到与 Intel 线程化层相关的性能问题或兼容性问题时有益。
任选一个命令执行,下面就可以正式开启评测了:
输入下面命令开启评测:
python run.py --datasets ceval_gen --hf-path /share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b --tokenizer-path /share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b --tokenizer-kwargs padding_side='left' truncation='left' trust_remote_code=True --model-kwargs trust_remote_code=True device_map='auto' --max-seq-len 1024 --max-out-len 16 --batch-size 2 --num-gpus 1 --debug
参数解析:
--datasets ceval_gen \ #使用的测试数据集
--hf-path /share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b \ # HuggingFace 模型路径
--tokenizer-path /share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b \ # 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 1024 \ # 模型可以接受的最大序列长度
--max-out-len 16 \ # 生成的最大 token 数 --batch-size 2 \ # 批量大小
--num-gpus 1 # 运行模型所需的 GPU 数量
运行完成之后就可以看到1.8B模型的测试结果了:
任务结果
- 使用 OpenCompass 评测 internlm2-chat-1.8b 模型在 ceval 数据集上的性能,记录复现过程并截图。