当前位置: 首页 > news >正文

LLM - 多模态大模型的开源评估工具 VLMEvalKit 部署与测试 教程

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/144353087

免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。


VLMEvalKit

VLMEvalKit 是大型视觉语言模型设计的开源评估工具包,由 Open Compass 团队开发,它支持一键式评估体验,无需繁琐的数据准备工作,能够对多种视觉语言模型进行评估,并覆盖了多样化的任务场景。

VLMEvalKit:GitHub - open-compass/VLMEvalKit


1. 运行环境

准备 VLMEvalKit 工程环境:

  • Python 使用 3.11
  • 建议预先安装 PyTorch、Transformers、flash-attn 等基础 Python 库,避免冲突。
  • 注意:默认 vlmeval 库依赖较低版本的 Torch,需要重新升级 Torch 库。
git clone https://github.com/open-compass/VLMEvalKit
cd VLMEvalKitconda create -n vlm_eval_kit python=3.11
conda activate vlm_eval_kit# 预先安装
pip install torch torchvision torchaudio  # 最新版本
pip install transformers==4.45.0
# pip install flash-attn (建议手动安装)# 其次安装
pip install -r requirements.txt
pip install -e .
# 重新升级 torch 库
pip uninstall torch
pip install torch torchvision torchaudio  # 最新版本# 最后安装
pip install ipdb
pip install einops transformers_stream_generator

安装 flash-attn 参考:使用 vLLM 部署 Qwen2-VL 多模态大模型 (配置 FlashAttention) 教程

MME(Multimodal Model Evaluation) 是由腾讯优图实验室和厦门大学联合开发,多模态大型语言模型评估基准,包含 14 个子任务,覆盖从粗粒度到细粒度的对象识别、常识推理、数值计算、文本翻译和代码推理等多个方面,全面评估模型的感知和认知能力。

评测 MME 多模态数据集:

  • LLaVA-CoT 测试,请参考 LLaVA-CoT(o1) 推理模型 测试
python3 run.py --data MME --model Qwen2-VL-7B-Instruct --verbose
python3 run.py --data MME --model Llama-3.2-11B-Vision-Instruct --verbose
# python3 run.py --data MME --model LLaVA-CoT --verbose
torchrun --nproc-per-node=8 run.py --data MME --model LLaVA-CoT --verbose

Llama-3.2-11B-Vision-Instruct 显存占用 23446MiB / 81920MiB,即 23 G 左右

评估结果:

[2024-12-09 14:51:21] INFO - run.py: main - 400: 
---------------------  --------
perception             1675.9
reasoning               640.714
OCR                     155
artwork                 151.25
celebrity               149.412
code_reasoning          160
color                   180
commonsense_reasoning   155.714
count                   160
existence               195
landmark                185
numerical_calculation   125
position                155
posters                 182.993
scene                   162.25
text_translation        200
---------------------  --------

输出结果 outputs/Qwen2-VL-7B-Instruct,即:

outputs/Qwen2-VL-7B-Instruct
├── Qwen2-VL-7B-Instruct_MME.xlsx -> outputs/Qwen2-VL-7B-Instruct/T20241209_Ga18f5d69/Qwen2-VL-7B-Instruct_MME.xlsx
├── Qwen2-VL-7B-Instruct_MME_auxmatch.xlsx -> outputs/Qwen2-VL-7B-Instruct/T20241209_Ga18f5d69/Qwen2-VL-7B-Instruct_MME_auxmatch.xlsx
├── Qwen2-VL-7B-Instruct_MME_score.csv -> outputs/Qwen2-VL-7B-Instruct/T20241209_Ga18f5d69/Qwen2-VL-7B-Instruct_MME_score.csv
└── T20241209_Ga18f5d69├── Qwen2-VL-7B-Instruct_MME.xlsx├── Qwen2-VL-7B-Instruct_MME_auxmatch.xlsx└── Qwen2-VL-7B-Instruct_MME_score.csv

其他参考 Llama-3.2-11B-Vision-Instruct 的效果

[2024-12-09 16:33:49] INFO - run.py: main - 400: 
---------------------  --------
perception             1343.25
reasoning               325.714
OCR                     125
artwork                  87
celebrity               127.353
code_reasoning           27.5
color                   143.333
commonsense_reasoning   110.714
count                   143.333
existence               190
landmark                110.5
numerical_calculation   115
position                123.333
posters                 153.401
scene                   140
text_translation         72.5
---------------------  --------

2. 工程配置

2.1 环境变量(Env)

构建环境变量,在 VLMEvalKit 中,编写 .env 格式文件,指定 模型下载路径(HF_HOME),和 数据集下载路径(LMUData),即:

HF_HOME="[your path]/huggingface/"
LMUData="[your path]/huggingface/LMUData/"

使用 from dotenv import dotenv_values 库,进行调用,参考 vlmeval/smp/misc.py

2.2 评估模型(Env)

VLMEvalKit 的模型,参考 vlmeval/config.py,包括现有的主流模型,位置默认是 HuggingFace 的下载路径 $HF_HOME,即:

model_groups = [ungrouped, api_models,xtuner_series, qwen_series, llava_series, internvl_series, yivl_series,xcomposer_series, minigpt4_series, idefics_series, instructblip_series,deepseekvl_series, janus_series, minicpm_series, cogvlm_series, wemm_series,cambrian_series, chameleon_series, video_models, ovis_series, vila_series,mantis_series, mmalaya_series, phi3_series, xgen_mm_series, qwen2vl_series, slime_series, eagle_series, moondream_series, llama_series, molmo_series,kosmos_series, points_series, nvlm_series, vintern_series, h2ovl_series, aria_series,smolvlm_series
]

如果模型无法下载,例如 Llama-3.2-11B-Vision-Instruct,修改模型路径 vlmeval/config.py,调用位置 vlmeval/vlm/llama_vision.py,即:

# vlmeval/config.py
llama_series={#  meta-llama/Llama-3.2-11B-Vision-Instruct 替换 [your path]/huggingface/meta-llama/Llama-3.2-11B-Vision-Instruct'Llama-3.2-11B-Vision-Instruct': partial(llama_vision, model_path='[your path]/huggingface/meta-llama/Llama-3.2-11B-Vision-Instruct'),'LLaVA-CoT': partial(llama_vision, model_path='[your path]/huggingface/Xkev/Llama-3.2V-11B-cot'),'Llama-3.2-90B-Vision-Instruct': partial(llama_vision, model_path='meta-llama/Llama-3.2-90B-Vision-Instruct'),
}# vlmeval/vlm/llama_vision.py
class llama_vision(BaseModel):INSTALL_REQ = FalseINTERLEAVE = False# This function is used to split Llama-3.2-90Bdef split_model(self):# ...# meta-llama/Llama-3.2-11B-Vision-Instruct 替换 [your path]/huggingface/meta-llama/Llama-3.2-11B-Vision-Instructdef __init__(self, model_path='meta-llama/Llama-3.2-11B-Vision-Instruct', **kwargs):

默认与 HuggingFace 下载路径一致,需要指定,则修改 vlmeval/config.py 配置。

2.3 评估集(Env)

VLMEvalKit 的数据,参考 vlmeval/dataset/__init__.py,主要支持 IMAGE_DATASETVIDEO_DATASETTEXT_DATASETCUSTOM_DATASETDATASET_COLLECTION,即:

# run.py
dataset = build_dataset(dataset_name, **dataset_kwargs)# vlmeval/dataset/__init__.py
DATASET_CLASSES = IMAGE_DATASET + VIDEO_DATASET + TEXT_DATASET + CUSTOM_DATASET + DATASET_COLLECTIONdef build_dataset(dataset_name, **kwargs):for cls in DATASET_CLASSES:if dataset_name in cls.supported_datasets():return cls(dataset=dataset_name, **kwargs)

以 MME 为例,调用的是 vlmeval/dataset/image_yorn.py 数据集,即

DATASET_URL = {'MME': 'https://opencompass.openxlab.space/utils/VLMEval/MME.tsv','HallusionBench': 'https://opencompass.openxlab.space/utils/VLMEval/HallusionBench.tsv','POPE': 'https://opencompass.openxlab.space/utils/VLMEval/POPE.tsv','AMBER': 'https://huggingface.co/datasets/yifanzhang114/AMBER_base64/resolve/main/AMBER.tsv',
}

基类 ImageBaseDataset 负责处理逻辑:

# Return a list of dataset names that are supported by this class, can override
@classmethod
def supported_datasets(cls):return list(cls.DATASET_URL)

具体位置参考,位于 LMUData 变量之中,默认位置 ~/LMUData/images/MME,即:

def LMUDataRoot():if 'LMUData' in os.environ and osp.exists(os.environ['LMUData']):return os.environ['LMUData']home = osp.expanduser('~')root = osp.join(home, 'LMUData')os.makedirs(root, exist_ok=True)return root

3. 雷达图

绘制雷达图,参考 scripts/visualize.ipynb,使用 OpenVLM.json 全量的 MLLM 评估结果,进行绘制,效果如下:

Img


Bug:

[your path]/miniconda3_62/envs/vlm_eval_kit/lib/python3.11/site-packages/torch/nn/modules/transformer.py:20: UserWarning: Failed to initialize NumPy: _ARRAY_API not found (Triggered internally at ../torch/csrc/utils/tensor_numpy.cpp:84.)device: torch.device = torch.device(torch._C._get_default_device()),  # torch.device('cpu'),UserWarning: Failed to initialize NumPy: _ARRAY_API not found (Triggered internally at ../torch/csrc/utils/tensor_numpy.cpp:84.)device: torch.device = torch.device(torch._C._get_default_device()),  # torch.device('cpu'),

即重新安装 torch 即可:

pip uninstall torch numpy
pip3 install torch torchvision torchaudio

相关文章:

LLM - 多模态大模型的开源评估工具 VLMEvalKit 部署与测试 教程

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/144353087 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 VLMEva…...

数据结构(Queue队列)

前言: 在计算机科学中,数据结构是构建高效算法和程序的基础,而队列(Queue)作为一种经典的线性数据结构,具有重要的地位。与栈(Stack)不同,队列遵循“先进先出”&#xf…...

Qt 图形框架下图形拖动后位置跳动问题

在使用Qt 的图形框架QGraphicsScene,QGraphicsView实现图形显示时。遇到一个很棘手的BUG。 使用的图形是自定义的QGraphicsObject的子类。 现象是将图形添加到画布上之后,用鼠标拖动图形,图形能正常改变位置,当再次用鼠标点击图…...

【Linux篇】走进Linux — 开启开源操作系统之旅

文章目录 初识Linux一.Linux的起源与发展二.Linux的特点三.Linux的应用四.Linux的发行版本 Linux环境搭建一.Linux环境的搭建方式二.购买云服务器三.使用XShell远程登陆到Linux 初识Linux 一.Linux的起源与发展 1.初始动机: Linux是一个功能强大的开源操作系统&am…...

如何利用DBeaver配置连接MongoDB和人大金仓数据库

最近根据国产化要求,需要使用国产数据库,但习惯使用DBeaver连接各种成熟的商业或开源数据库。因此,就想着如何继续基于该工具,连接MongoDB和人大金仓数据库,查了半天很多地方说法不统一,所以自己就简单整理…...

Android 车载虚拟化底层技术-Kernel 5.10 -Android12(multi-cards)技术实现

详细代码实现见 Android Display Graphics系列文章-汇总​​​​​​Android Display Graphics系列文章-汇总 Android Display Graphics系列文章-汇总 Android Display Graphics系列文章-汇总 本文主要包括部分: 一、Android12的Kernel 5.10版本 1.1 Kernel 5…...

Qt之点击鼠标右键创建菜单栏使用(六)

Qt开发 系列文章 - menu(六) 目录 前言 一、示例演示 二、菜单栏 1.MenuBar 2.Menu 总结 前言 QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menubar)、多个工具栏(toolbars)、一个状态栏(status…...

开发一套SDK 第一弹

自动安装依赖包 添加条件使能 #ex: filetypesh bash_ls 识别 达到预期,多个硬件环境 等待文件文件系统挂在完成 或者创建 /sys/class/ 属性文件灌入配置操作 AI 提供的 netlink 调试方法,也是目前主流调用方法,socket yyds #include <linux/module.h> #include <linux…...

sftp+sshpass

实现场景&#xff0c;要求客户端定时将本地的日志文件传输到服务器。 工作环境ubuntu&#xff0c;注意不通操作系统的版本不通&#xff0c;依赖的工具的版本也有所不同 实现目标需要客户端满足安装工具&#xff1a; 1、下载安装sshpass ---安装命令&#xff1a;sudo apt-ge…...

【机器学习与数据挖掘实战】案例01:基于支持向量回归的市财政收入分析

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支&#xff0c;专注于让计算机系统通过数据学习和改进。它利用统计和计算方法&#xff0c;使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数…...

Idea实现定时任务

定时任务 什么是定时任务&#xff1f; 可以自动在项目中根据设定的时长定期执行对应的操作 实现方式 Spring 3.0 版本之后自带定时任务&#xff0c;提供了EnableScheduling注解和Scheduled注解来实现定时任务功能。 使用SpringBoot创建定时任务非常简单&#xff0c;目前主要…...

Linux 安装NFS共享文件夹

程序默认使用2049端口&#xff0c;如果被占用需要修改端口104设置为服务端 122设置为客户端 一、在线安装&#xff08;服务端和客户端执行&#xff09; yum install nfs-utils rpcbind -y二、配置启动参数&#xff08;服务端执行&#xff09; 104服务器/mnt路径下创建shareda…...

bash 判断内存利用率是否高于60%

在 Bash 脚本中&#xff0c;可以通过 free 命令获取内存利用率&#xff0c;然后结合 awk 和条件判断语句实现监控内存利用率是否高于 60%。以下是一个示例脚本&#xff1a; 1. 示例脚本 #!/bin/bash# 获取总内存和已使用内存 total_mem$(free | awk /Mem:/ {print $2}) used_…...

推送(push)项目到gitlab

文章目录 1、git init1.1、在当前目录中显示隐藏文件&#xff1a;1.2、查看已有的远程仓库1.3、确保你的本地机器已经生成了 SSH 密钥&#xff1a;1.4、将生成的公钥文件&#xff08;通常位于 ~/.ssh/id_rsa.pub&#xff09;复制到 GitLab 的 SSH 设置中&#xff1a;1.5、测试 …...

centos9升级OpenSSH

需求 Centos9系统升级OpenSSH和OpenSSL OpenSSH升级为openssh-9.8p1 OpenSSL默认为OpenSSL-3.2.2&#xff08;根据需求进行升级&#xff09; 将源码包编译为rpm包 查看OpenSSH和OpenSSL版本 ssh -V下载源码包并上传到服务器 openssh最新版本下载地址 wget https://cdn.openb…...

硬件成本5元-USB串口采集电表数据完整方案-ThingsPanel快速入门

ThingsPanel开源物联网平台支持广泛的协议&#xff0c;灵活自由&#xff0c;本文介绍ThingsPanel通过串口来采集电表数据&#xff0c;简单易行&#xff0c;成本低廉&#xff0c;适合入门者学习试验&#xff0c;也适合一些特定的应用场景做数据采集。 适用场景&#xff1a; 降低…...

在AWS EMR上用Hive、Spark、Airflow构建一个高效的ETL程序

在AWS EMR&#xff08;Elastic MapReduce&#xff09;上构建一个高效的ETL程序&#xff0c;使用Hive作为数据仓库&#xff0c;Spark作为计算引擎&#xff0c;Airflow作为调度工具时&#xff0c;有几个关键的设计与实施方面需要注意。 在AWS EMR上构建高效的ETL程序&#xff0c;…...

前端(四)css选择器、css的三大特性

css选择器、css的三大特性 文章目录 css选择器、css的三大特性一、css介绍二、css选择器2.1 基本选择器2.2 组合选择器2.3 交集并集选择器2.4序列选择器2.5属性选择器2.6伪类选择器2.7伪元素选择器 三、css三大特性3.1 继承性3.2 层叠性3.3 优先级 一、css介绍 CSS全称为Casca…...

vscode 打开 setting.json

按下Ctrl Shift P&#xff08;Windows/Linux&#xff09;或Cmd Shift P&#xff08;Mac&#xff09;来打开命令面板。输入open settings&#xff0c;然后选择 Open User Settings(JSON)。打开settings.json文件 ------修改设置-----&#xff1a; 1、 html代码的行长度&am…...

关于网络安全攻防演化博弈的研究小议

1. 拉高视角&#xff0c;从宏观看网络安全攻防 伴随着信息化的发展&#xff0c;网络安全的问题就一直日益突出&#xff0c;与此同时&#xff0c;网络安全技术也成为研究热点&#xff0c;直到今日也没有停止。 从微观来看&#xff0c;网络安全技术研究指的是针对某项或某几项…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...