回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【书生大模型实战营(第五期)】基础岛第2关_L1G2-OpenCompass 评测书生大模型实践

头像 JOVI 2025.07.07 9 0

5. 闯关任务

- 使用 OpenCompass 评测 InternLM(C-Eval和math_gen 选做一道即可) 和 InternVL(MME数据集) 并在飞书文档中详细记录到飞书文档
- 进阶 完成3.4 自建数据集的评测

1. OpenCompass 概述

image.png

2. 评测环境配置

2.1 开发机的选择

在创建开发机界面选择镜像为 Cuda12.2-conda,并选择 GPU 为 30% A100。

image.png

2.2 conda环境安装

image.png

代码
conda create -n opencompass python=3.10
conda activate opencompass

# 注意:一定要先 cd /root
cd /root
 git clone -b 0.4.2 https://github.com/open-compass/opencompass.git opencompass
cd opencompass
pip install -e .

pip install sentencepiece
#升级datasets 避免不识别新的功能
pip install datasets==3.2.0
pip install modelscope

3. 评测不同类型的题目

3.0 数据集的下载

OpenCompass 支持的数据集主要包括三个部分:
1. Huggingface 数据集: Huggingface Dataset 提供了大量的数据集,这部分数据集运行时会自动下载。
2. ModelScope 数据集:ModelScope OpenCompass Dataset 支持从 ModelScope 自动下载数据集。

3. 自建以及第三方数据集:OpenCompass 还提供了一些第三方数据集及自建中文数据集。运行以下命令手动下载解压。
为了方便评测,我们首先将数据集下载到本地:

cd /root/opencompass
wget https://ghfast.top/https://github.com/open-compass/opencompass/releases/download/0.2.2.rc1/OpenCompassData-core-20240207.zip
unzip OpenCompassData-core-20240207.zip

将会在 OpenCompass 下看到data文件夹,里面包含的数据集如下图所示:

image.png

3.1 评测C-Eval 选择题

有两种方式运行,推荐命令行运行简单。但如果要更高定制化需求,需要些配置脚本运行更合适。

3.1.1 命令行运行

修改评测模型地址为本地,不用下载更节省时间。
opencompass/opencompass/configs/models/hf_internlm/hf_internlm3_8b_instruct.py,贴入以下代码:

from opencompass.models import HuggingFacewithChatTemplate

models = [
dict(
type=HuggingFacewithChatTemplate,
abbr='internlm3-8b-instruct-hf',
path='/root/share/new_models/internlm3/internlm3-8b-instruct',
max_out_len=8192,
batch_size=8,
run_cfg=dict(num_gpus=1),
)
]

可以通过以下命令评测 internlm3_8b_instruct 模型在 C-Eval 数据集上的性能:

python run.py --datasets ceval_gen --models hf_internlm3_8b_instruct --debug

Notice: 由于 OpenCompass 默认并行启动评估过程,我们可以在第一次运行时以 --debug 模式启动评估,并检查是否存在问题。在 --debug 模式下,任务将按顺序执行,并实时打印输出。

如果一切正常,您应该看到屏幕上显示:

output (1).png

3.1.2 写配置脚本运行

除了通过命令行配置实验外,OpenCompass 还允许用户在配置文件中编写实验的完整配置脚本,并通过 run.py 直接运行它。配置文件是以 Python 格式组织的,并且必须包括 datasets 和 models 字段。本次测试配置在 configs文件夹 中。此配置通过 继承机制 引入所需的数据集和模型配置,并以所需格式组合 datasets 和 models 字段。
运行以下代码,在configs文件夹下创建eval_tutorial_demo.py

cd /root/opencompass/opencompass/configs
touch eval_tutorial_demo.py

 

打开eval_tutorial_demo.py 贴入以下代码:

from mmengine.config import read_base

with read_base():
   from .datasets.ceval.ceval_gen import ceval_datasets
   from .models.hf_internlm.hf_internlm3_8b_instruct import models as hf_internlm3_8b_instruct

datasets = ceval_datasets
models = hf_internlm3_8b_instruct

 

因此,运行任务时,我们只需将配置文件的路径参数传递给 run.py:

cd /root/opencompass
python run.py opencompass/configs/eval_tutorial_demo.py --debug

3.1.3 结果

大约20min评测完成后,将会看到:

output (2).png

和使用命令行的方法一致
所有运行输出将定向到 outputs/demo/ 目录。

 

打印评测结果的过程可被进一步定制化,用于输出一些数据集的平均分 (例如 MMLU, C-Eval 等)。
关于评测结果输出的更多介绍可阅读 结果展示

3.2 评测math_gen计算题

3.3 评测MME多模态题——InternVL3-2B评测实践

VLMEvalKit是一个专为大型视觉语言模型评测设计的开源工具包。它支持在各种基准测试上对大型视觉语言模型进行一键评估,无需进行繁重的数据准备工作,使评估过程更加简便。VLMEvalKit适用于图文多模态模型的评测,支持单对图文输入或是任意数量的图文交错输入。它通过实现70多个基准测试,覆盖了多种任务,包括但不限于图像描述、视觉问答、图像字幕生成等。

image2.png

使用VLMEvalKit进行评测需要进行以下步骤:

3.3.1 环境准备用以下命令安装依赖:

# 基于conda环境
conda create -n VLMEvalKit python=3.10
conda activate VLMEvalKit
pip install idna requests
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

git clone https://ghfast.top/https://github.com/open-compass/VLMEvalKit.git
cd VLMEvalKit
pip install -e .
pip install einops timm validators sty decord httpx xlsxwriter pandas matplotlib tabulate rich portalocker imageio 

 

3.3.2 修改文件

在$VLMEvalKit/vlmeval/config.py文件中设置在 VLMEvalKit 中支持的 VLM 名称,以及模型路径。
如果你的电脑上面没有该模型的模型文件,则需要自己下载,然后更改模型路径,也可以不修改,在运行模型评测命令的时候会自动下载模型文件。
注:默认下载使用的是Huggingface,需要进行科学上网,也可以使用modelscope将模型下载到本地,然后更改路径。
修改VLMEvalKit/vlmeval/config.py下第852行为

InternVLChat, model_path="/root/share/new_models/InternVL3/InternVL3-2B", version="V2.0"

 

如图所示:

output (3).png

将所要评测的模型路径设置好以后就可以开始评测了。

 

3.3.3 模型评测

模型评测时可以使用 python 或 torchrun 来运行脚本,使用 python 运行时,只实例化一个 VLM,并且它可能使用多个 GPU。使用 torchrun 运行时,每个 GPU 上实例化一个 VLM 实例,这可以加快推理速度。
这里我们在 MME 上 进行推理和评估。
MME涵盖了感知和认知能力的考察。除了OCR外,感知包括对粗粒度和细粒度对象的识别。前者识别对象的存在、数量、位置和颜色。后者识别电影海报、名人、场景、地标和艺术作品。认知包括常识推理、数值计算、文本翻译和代码推理。总共有14个子任务。

 

使用以下命令开始推理和评估:

python run.py --data MME --model InternVL3-2B --verbose

torchrun --nproc-per-node=1 run.py --data MME --model InternVL3-2B --verbose

 

命令运行以后大约需要半小时的时间完成评测,评估结果将作为日志打印出来。

output (4).png

此外,结果文件也会在目录 VLMEvalKit/outputs/InternVL3-2B 中生成。以 .csv 结尾的文件包含评估的指标。

InternVL3-2B的MME数据集的评估结果和InternVL2-2B的MME数据集的评估结果(过程可见于VLMEvalKit 评测InternVL2及Qwen2VL实践

对比InternVL2-2B结果,可见InternVL3性能有明显改进。

3.4 自建数据集进行评测

4. 结语

更多评测技巧欢迎查看 https://opencompass.readthedocs.io/zh-cn/latest/get_started/quick_start.html 文档~我们下节课再见!

评论

user-avatar