五期-基础岛02-OpenCompass评测模型
基础岛
OpenCompass 评测书生大模型实践
1 OpenCompass 概述
OpenCompass 中评估一个模型通常包括以下几个阶段:
配置 -> 推理 -> 评估 -> 可视化。
配置:这是整个工作流的起点。您需要配置整个评估过程,选择要评估的模型和数据集。此外,还可以选择评估策略、计算后端等,并定义显示结果的方式。
推理与评估:在这个阶段,OpenCompass 将会开始对模型和数据集进行并行推理和评估。推理阶段主要是让模型从数据集产生输出,而评估阶段则是衡量这些输出与标准答案的匹配程度。这两个过程会被拆分为多个同时运行的“任务”以提高效率,但请注意,如果计算资源有限,这种策略可能会使评测变得更慢。如果需要了解该问题及解决方案,可以参考 FAQ: 效率。
可视化:评估完成后,OpenCompass 将结果整理成易读的表格,并将其保存为 CSV 和 TXT 文件。你也可以激活飞书状态上报功能,此后可以在飞书客户端中及时获得评测状态报告。
对于其他模型,请参考 configs 目录 中提供的其他示例。
2 环境安装
conda create -n opencompass python=3.10
conda activate opencompass
# 注意:一定要先 cd /root
cd /root
git clone https://github.moeyy.xyz/https://github.com/open-compass/opencompass opencompass
cd opencompass
pip install -e .
pip install sentencepiece
#升级datasets 避免不识别新的功能
pip install datasets==3.2.0
pip install modelscope
3 评测不同类型的题目
OpenCompass 支持的数据集主要包括三个部分:
Huggingface 数据集: Huggingface Dataset 提供了大量的数据集,这部分数据集运行时会自动下载。
ModelScope 数据集:ModelScope OpenCompass Dataset 支持从 ModelScope 自动下载数据集。
要启用此功能,请设置环境变量:
export DATASET_SOURCE=ModelScope
,可用的数据集包括(来源于 OpenCompassData-core.zip):humaneval, triviaqa, commonsenseqa, tydiqa, strategyqa, cmmlu, lambada, piqa, ceval, math, LCSTS, Xsum, winogrande, openbookqa, AGIEval, gsm8k, nq, race, siqa, mbpp, mmlu, hellaswag, ARC, BBH, xstory_cloze, summedits, GAOKAO-BENCH, OCNLI, cmnli
自建以及第三方数据集: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
image-20250624210305553
4 如何测试
4.1 命令评测C-Eval

【数据说明】
dev(验证集)
- 超参数调整:在模型训练过程中,有许多超参数需要设置,例如学习率、神经网络的层数和神经元数量、正则化参数等。通过在验证集上评估不同超参数组合下模型的性能(比如准确率、损失函数值等指标),可以选择出使模型在验证集上表现最佳的超参数配置 。
- 模型选择:当尝试不同类型的模型(如对比决策树模型和神经网络模型,或者不同架构的神经网络)来解决同一个问题时,验证集可以帮助我们比较这些模型的性能,从而挑选出最合适的模型用于后续进一步训练和评估。
- 防止过拟合判断:通过观察模型在训练集和验证集上的性能差异,可以判断模型是否出现过拟合现象。如果模型在训练集上表现很好,但在验证集上性能大幅下降,就说明可能存在过拟合,需要采取相应的措施(如增加数据量、添加正则化等)来改善。
test(测试集)
- 模型最终性能评估:测试集是在模型训练完成,且通过验证集确定好超参数和模型架构后,用于对模型进行最终、客观的性能评估。由于测试集在模型训练和超参数调整过程中未被使用过,所以它能够反映模型在从未见过的数据上的泛化能力 。
- 模型间公平比较:不同团队或研究者在解决相同问题时,使用相同的测试集可以公平地比较各自模型的性能优劣,从而确定哪个模型在实际应用中可能更有效。
val(验证集)
val
本质上和dev
一样,也是用于在训练过程中监控模型性能,辅助超参数调整和模型选择。有时候项目中会将数据划分成训练集、验证集 1(dev
)、验证集 2(val
) ,比如验证集 1 用于超参数调整,验证集 2 在超参数调整完之后,再进一步评估模型在另一份独立验证数据上的效果,以确保模型的泛化能力和超参数选择的可靠性 。
运行方式
可以通过以下命令评测 internlm3_8b_instruct 模型在 C-Eval 数据集上的性能:
python run.py --datasets ceval_gen --models hf_internlm3_8b_instruct --debug
这个命令的理解
ceval_gen:来自/root/opencompass/dataset-index.yml中的配置
394行:
- ceval:
name: C-EVAL
category: Examination
paper: https://arxiv.org/pdf/2305.08322v1
configpath: opencompass/configs/datasets/ceval/ceval_gen.py
configpath_llmjudge: ''
opencompass/configs/datasets/ceval/ceval_gen.py如下:
from mmengine.config import read_base
with read_base():
from .ceval_gen_5f30c7 import ceval_datasets # noqa: F401, F403
/root/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),
)
]
命令评测结果
评测C-Eval的结果:飞书文件夹保存
使用豆包分析执行结果:
这些是 OpenCompass 框架下对 internlm3-8b-instruct-hf 模型在 CEval 数据集 上的测试结果,核心解读如下:
1. 数据概览
测试对象:internlm3-8b-instruct-hf 模型(书生・浦语 3 系列 8B 指令微调版)。
测试数据集:CEval,覆盖 学科知识、职业资格、素质教育 等多领域(如中学 / 大学数理化生、公务员、教师、法律、历史地理等),验证模型在不同场景的泛化能力。
评估指标:accuracy(准确率),衡量模型预测结果与正确答案的匹配程度。
2. 关键结论
(1)模型优势领域
基础学科(中学阶段):
初中 / 高中生物、物理、化学等表现突出(如初中化学 100%、高中生物 94.74%),说明对中学理科知识掌握扎实。
初中政治、历史(均 100%)、高中政治(100%)表现优异,对人文社科基础内容理解到位。
职业资格 / 素质教育:
教师类(如教育科学 96.55%、教师资格 93.18%)、旅游(职业导游 96.55%)、体育科学(94.74%)等场景适配度高,适合教育 / 职业辅助类应用。
(2)待优化领域
高等数学相关:
高等数学(47.37%)、离散数学(50%)准确率较低,暴露对复杂数学逻辑、抽象推导的短板。
部分文科细分:
高中语文(63.16%)、汉语言文学(78.26%)表现一般,可能受中文语境理解深度、文学性文本分析难度影响。
3. 实用价值
场景适配:可优先用于 教育辅助(尤其中学阶段)、职业资格备考(如教师、导游)、通识问答 等场景,发挥高准确率优势。
优化方向:针对数学推导、中文文学分析等薄弱点,可补充专项数据训练,或结合思维链(CoT)、工具调用(如数学计算器)提升表现。
简单说:模型在 中学全科、职业教育通识类 表现亮眼,适合教育 / 职业场景;但 高等数学、复杂文科分析 需强化,可针对性迭代。
4.2 脚本评测 math_gen数据集
脚本配置
创建py测试文件:/root/opencompass/opencompass/configs
from mmengine.config import read_base with read_base(): from .datasets.math.math_gen import math_datasets from .models.hf_internlm.hf_internlm3_8b_instruct import models as hf_internlm3_8b_instruct datasets = math_datasets models = hf_internlm3_8b_instruct
执行:
cd /root/opencompass python run.py opencompass/configs/eval_mme_dem.py --debug
测试结果
实验了下1个多小时只跑了一点
image-20250701084847679
4.3 评测MME多模态题——InternVL3-2B评测实践
VLMEvalKit
是一个专为大型视觉语言模型评测设计的开源工具包。它支持在各种基准测试上对大型视觉语言模型进行一键评估,无需进行繁重的数据准备工作,使评估过程更加简便。VLMEvalKit适用于图文多模态模型的评测,支持单对图文输入或是任意数量的图文交错输入。它通过实现70多个基准测试,覆盖了多种任务,包括但不限于图像描述、视觉问答、图像字幕生成等。
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
在$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"
模型评测时可以使用 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
3 解读出来的内容
3.1 对--InternVL3-2B测试
[2025-07-01 09:41:24] INFO - RUN - run.py: main - 480: The evaluation of model InternVL3-2B x dataset MME has finished!
[2025-07-01 09:41:24] INFO - RUN - run.py: main - 481: Evaluation Results:
[2025-07-01 09:41:24] INFO - RUN - run.py: main - 487:
--------------------- --------
perception 1615.56
reasoning 516.786
OCR 162.5
artwork 154.25
celebrity 161.176
code_reasoning 132.5
color 175
commonsense_reasoning 109.286
count 150
existence 195
landmark 169.75
numerical_calculation 90
position 135
posters 152.381
scene 160.5
text_translation 185
豆包解读:
这是 OpenCompass 框架下对InternVL3-2B
模型在MME
数据集上的测试结果记录,核心信息解读如下:
1. 测试概览
- 模型:
InternVL3-2B
(视觉语言模型,聚焦多模态任务)。 - 数据集:
MME
(多模态评估基准),覆盖 感知、推理、OCR、艺术、常识 等多模态场景,验证模型跨模态理解能力。 - 评估指标:各任务的分数(数值越高,模型在对应任务上表现越好 )。
2. 任务表现拆解
任务类型 | 分数 | 解读 |
---|---|---|
perception(感知) | 1615.56 | 基础视觉感知(如物体识别、场景识别)能力强 |
reasoning(推理) | 516.786 | 跨模态逻辑推理(如图文因果推导)有提升空间 |
OCR(光学字符识别) | 162.5 | 文本检测 / 识别准确率中等,复杂场景(如艺术字、模糊文本)需优化 |
artwork(艺术内容) | 154.25 | 艺术作品(绘画、设计等)理解、描述能力尚可 |
celebrity(名人识别) | 161.176 | 名人图像 / 信息关联匹配表现不错 |
code_reasoning(代码推理) | 132.5 | 图文代码逻辑(如流程图、简单代码解释)支持有限 |
color(颜色理解) | 175 | 颜色识别、语义关联(如 “红色象征热情”)表现好 |
commonsense_reasoning(常识推理) | 109.286 | 日常常识跨模态应用(如图文常识问答)需强化 |
count(计数) | 150 | 图文元素计数(如 “图中有几个苹果”)准确率高 |
existence(存在判断) | 195 | 物体存在性判断(如 “图中是否有猫”)能力优秀 |
landmark(地标识别) | 169.75 | 知名地标关联、识别表现良好 |
numerical_calculation(数值计算) | 90 | 图文数值计算(如 “图中价格总和”)短板明显 |
position(位置关系) | 135 | 物体空间位置推理(如 “苹果在杯子左边”)中等水平 |
posters(海报理解) | 152.381 | 海报内容(主题、元素、风格)解析能力不错 |
scene(场景理解) | 160.5 | 场景分类、语义理解(如 “这是厨房场景”)表现稳定 |
text_translation(文本翻译) | 185 | 图文翻译(如标识、简单文案)适配度高 |
3. 总结
- 优势:基础感知(存在、颜色、场景)、艺术 / 地标识别、简单翻译等场景表现突出,适合 通识图文问答、基础多模态交互 需求。
- 不足:数学计算、复杂逻辑推理、常识关联等任务需优化,可通过 补充代码 / 数学专项数据、强化思维链(CoT)训练 提升。
可根据实际场景(如教育、内容审核、智能客服),结合优势任务选型,或针对性迭代模型~
3.2 特别好奇好一点的多模态模型测试的结果
[2025-07-01 20:02:07] INFO - RUN - run.py: main - 425: {'nproc': 4, 'verbose': True, 'retry': 3, 'model': 'chatgpt-0125'}
/root/VLMEvalKit/vlmeval/dataset/image_yorn.py:68: UserWarning: OPENAI_API_KEY is not working properly, will use exact matching for evaluation
warnings.warn('OPENAI_API_KEY is not working properly, will use exact matching for evaluation')
[2025-07-01 20:02:12] INFO - RUN - run.py: main - 480: The evaluation of model InternVL3-14B x dataset MME has finished!
[2025-07-01 20:02:12] INFO - RUN - run.py: main - 481: Evaluation Results:
[2025-07-01 20:02:12] INFO - RUN - run.py: main - 487:
--------------------- --------
perception 1743.2
reasoning 720.714
OCR 200
artwork 159.25
celebrity 151.471
code_reasoning 200
color 185
commonsense_reasoning 165.714
count 160
existence 195
landmark 181.5
numerical_calculation 162.5
position 168.333
posters 186.395
scene 156.25
text_translation 192.5
豆包解读:对比得知14B的模型确实比2B模型好用
评估结果分析
评估结果按不同能力维度展示了模型得分:
基础感知能力
perception (感知): 1743.2 (得分最高,表现最佳)
OCR (光学字符识别): 200
color (颜色识别): 185
existence (存在性判断): 195
推理能力
reasoning (推理): 720.714 (相对较低)
commonsense_reasoning (常识推理): 165.714
numerical_calculation (数值计算): 162.5
code_reasoning (代码推理): 200
特定领域识别
artwork (艺术品识别): 159.25
celebrity (名人识别): 151.471 (得分最低)
landmark (地标识别): 181.5
scene (场景识别): 156.25
其他能力
count (计数): 160
position (位置判断): 168.333
posters (海报理解): 186.395
text_translation (文本翻译): 192.5
总结与建议
优势领域:模型在基础感知任务 (如物体存在性判断、颜色识别) 和特定任务 (代码推理、OCR) 上表现较好。
薄弱环节:名人识别和常识推理得分较低,可能需要针对性优化。
评估方法影响:由于 API 密钥问题使用了精确匹配评估,部分需要语义理解的任务 (如推理) 评分可能偏低,建议修复 API 配置后重新评估。
后续行动建议
检查并修复 OPENAI_API_KEY 配置,以启用基于参考模型的更准确评估。
针对名人识别和常识推理等薄弱环节,考虑增加相关领域训练数据或引入外部知识增强。
对比不同评估方法 (精确匹配 vs 参考模型) 对结果的影响,确认模型真实能力。