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

Opencompass模型评测教程

模型评测

模型评测非常关键,目前主流的方法主要可以概括为主观评测和客观评测,主观评测又可以分为两种形式:人工判断或者和模型竞技场。客观评测一般采用评测数据集的形式进行模型评测。本教程使用Opencompass工具进行对Internlm2-7b模型进行评测。

算力平台

本教程在OpenBayes上进行实验,主要的原因在于Openbayes平台可以很方便地使用自定义的数据集。没有注册的用户可以使用我的邀请链接,可以额外获得RTX4090的免费使用时长:

https://openbayes.com/console/signup?r=xiaoshulin_WGv4

硬件环境

首先Opencompass比较消耗资源,一张4090评测一次CMMLU评测集大概需要一个小时,并且选择A100速度也是差不多的(主要还是CPU瓶颈和推理能力),建议选择单张4090进行评测,性价比最高。

下载Opencompass评测数据包

opencompass的数据包分为了两个版本,一个是complete版本和core版本,其中complete版本包含的数据集种类更加全面,core版本包含了主要的核心评测数据集。由于本教程评测使用CMMLU数据集,所以只需要下载core版本即可。
下载方式可以使用官方的办法:

# 下载数据集到 data/ 处
wget https://github.com/open-compass/opencompass/releases/download/0.2.2.rc1/OpenCompassData-core-20240207.zip
unzip OpenCompassData-core-20240207.zip

但是经过本人测试,下载速度非常有限,所以可以使用我下面的链接:opencompass包阿里云
同时,强烈建议将数据集上传到openBayes平台给用户挂载的数据集文件夹。
1、首先创建一个数据集:
在这里插入图片描述
我这里命名为opencompass评测数据集
在这里插入图片描述
然后需要创建一个新的版本(openBayes的管理和github很像,无论是模型还是数据集都是有版本一说,这样子的话可以方便管理数据集的不同版本,这也是非常nice的一点):
在这里插入图片描述
然后在对应的版本里面上传需要的数据集即可。
在这里插入图片描述

配置硬件环境

本教程使用RTX4090进行模型的评测。但是首先我们需要创建一个算力容器。
在这里插入图片描述
我这里命名为书生浦语模型评测,注意在创建数据集的时候需要设置好两个:internlm2-7b模型和你刚才创建的opencompass数据包,这样子的话就根本不需要额外在容器内部下载,白白浪费时间。
在这里插入图片描述
在这里插入图片描述
然后到了下一步选择算力,我们选择使用RTX4090加速,并且使用pytorch中的python3.10+cuda12.1环境镜像:
在这里插入图片描述
剩下的就是点击审核和执行就可以了。

软件环境配置

这一步,首先打开JupyterLab的工作空间。
在这里插入图片描述
观察这个界面,我们就可以发现到我们刚刚挂载的那个评测数据集和评测的模型(实际上就是两个文件夹)。
在这里插入图片描述
由于每一次启动openbayes平台都会将base的conda环境的软件依赖全部清理掉,所以最好的方法是使用conda创建一个全新的虚拟环境保存到路径/openbayes/home下面,这个文件夹的所有内容不会被删除。首先创建一个终端,确保在home路径下面,然后执行下面的脚本:

conda create --prefix /openbayes/home/opss python=3.10 pytorch torchvision pytorch-cuda -c nvidia -c pytorch -y
conda activate /openbayes/home/opss
git clone https://github.com/open-compass/opencompass.git
cd opencompass
pip install -e .

由于可能发生缺失文件libGL.so.1,所以需要安装软件依赖:

apt install libgl1-mesa-glx -y

最后我们进入opencompass的目录下面,可以得到下面的结构目录:
在这里插入图片描述

opencompass使用

参考文档

官方最新的opencompass使用文档

执行opencompass评测任务

首先需要创建一个data文件夹,存储的就是我们刚刚放上去的opencompass评测集。
在这里插入图片描述
然后在将我们的评测数据集复制一份到这个data文件夹里面:

cp -r /openbayes/input/input0/data/* ./data

在这里插入图片描述
opencompass的工作原理可以参考文档,也可以参考这个文章:关于openCompass与大模型评测现状的分析
用起来的实际上并不需要特别深入的理解,只需要明白每一步要要干啥就OK了。执行opencompass的一个关键是调整评测集的config,常用的评测数据集的配置文件都在opencompass/configs这个路径下面了。
首先创建一个配置文件eval_internlm2_7b.py放到configs文件夹下面:

from opencompass.models import HuggingFaceCausalLM
from mmengine.config import read_basewith read_base():from .datasets.cmmlu.cmmlu_ppl import cmmlu_datasetsdatasets = [*cmmlu_datasets]models = [dict(type=HuggingFaceCausalLM,abbr='internlm2-7b',path="/openbayes/input/input1/internlm2-7b",  # 模型文件路径tokenizer_path='/openbayes/input/input1/internlm2-7b',tokenizer_kwargs=dict(trust_remote_code=True,use_fast=False,),max_seq_len=2048,batch_size=1,model_kwargs=dict(device_map='auto', trust_remote_code=True),run_cfg=dict(num_gpus=1, num_procs=1),) # 多模型评测最好放到一起,因为可以开很多个进程一起评测
]

然后在终端执行命令:

MKL_SERVICE_FORCE_INTEL=1 python run.py configs/eval_internlm2_7b.py

输出会保存到文件opencompass/outputs文件夹里面:
在这里插入图片描述

相关文章:

Opencompass模型评测教程

模型评测 模型评测非常关键,目前主流的方法主要可以概括为主观评测和客观评测,主观评测又可以分为两种形式:人工判断或者和模型竞技场。客观评测一般采用评测数据集的形式进行模型评测。本教程使用Opencompass工具进行对Internlm2-7b模型进行…...

什么是安全测试,如何进行安全测试?

什么是安全测试? 概述 安全测试是一种旨在识别系统、网络或应用程序中的安全漏洞的测试方法。其目标是确保系统能够抵御恶意攻击,保护数据的机密性、完整性和可用性。安全测试通常包括漏洞扫描、渗透测试、代码审计和安全评估等多个方面。 安全测试的…...

ros的pcl库中对于自己定义的消息,调用pcl库时总是报错 c++

首先定义自己的消息类型 struct CustomPoint { // 定义点类型结构PCL_ADD_POINT4D; // 该点类型有4个元素float intensity 0.0;uint32_t zone;uint32_t ring;uint32_t sector;EIGEN_MAKE_ALIGNED_OPERATOR_NEW // 确保new操作符对齐操作 } EIGEN_ALIGN16; // 强制SSE对齐POIN…...

DataFrame—数据汇总6

文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的…...

Java入门基础学习笔记41——实体类

实体JavaBean/实体类: 就是一种特殊形式的类。 1)这个类中的成员变量都要私有,并且要对外提供相应的getXXX,setXXX的方法。 2)类中必须要有一个公共的无参的构造器。其他的构造器可写可不写。 右键菜单中&#xff0…...

【Linux】信号之信号的保存和处理详解

🤖个人主页:晚风相伴-CSDN博客 💖如果觉得内容对你有帮助的话,还请给博主一键三连(点赞💜、收藏🧡、关注💚)吧 🙏如果内容有误或者有写的不好的地方的话&…...

基于Django的图书管理系统

文章目录 前言一、页面展示1.登录2.前端页面3.后端页面 二、项目上传(1)导入数据库(2)导入项目(3)数据库密码修改(4)进入网站 总结 前言 本网站调用Django编写了图书管理网站&#…...

js实现元素根据鼠标滚轮滚动向左右上下滑动着从模糊到清楚显示出来

html代码 <div ref{test} id"animatedElement" className"not-animated"> <div style{{width:"100px",height:"50px",backgroundColor:"red"}}> </div> </div> JS代码 const te…...

yocto学习

bitbake命令单独编译u-boot&#xff1a; $ bitbake -c compile -f u-boot-imx $ bitbake -c deploy -f u-boot-imx //部署编译生成的u-boot镜像到deploy bitbake命令单独编译kernel&#xff1a; bitbake -c compile -f linux-imx //编译内核 bitbake -c deploy -f linux-imx /…...

【IC设计】牛客网-序列检测习题总结

文章目录 状态机基础知识VL25 输入序列连续的序列检测VL26 含有无关项的序列检测VL27 不重叠序列检测VL28 输入序列不连续的序列检测参考资料 状态机基础知识 VL25 输入序列连续的序列检测 timescale 1ns/1ns module sequence_detect(input clk,input rst_n,input a,output re…...

python爬虫登录到海康相机管理页面

简述 1.最近接到个任务是在管理页面更改相机的某个参数&#xff0c;下载官方的sdk貌似没有提供这个接口&#xff0c;所以只能自己写爬虫登录发请求了。 1.主要步骤 1.1 发送get请求获取到salt&#xff0c;sessionID&#xff0c;challenge等信息 http://admin:123456192.168.…...

9.Docker网络

文章目录 1、Docker网络简介2、常用基本命令3、网络模式对比举例3.1、bridge模式3.2、host模式3.3、none模式3.4、container模式3.5、自定义网络 1、Docker网络简介 作用&#xff1a; 容器间的互联和通信以及端口映射容器IP变动时候可以通过服务名直接进行网络通信而不受到影…...

Windows VS2022 C语言使用 sqlite3.dll 访问 SQLite数据库

今天接到一个学生C语言访问SQLite数据库的的需求: 第一步,SQLite Download Page下载 sqlite3.dll 库 下载解压,发现只有两个文件: 于是使用x64 Native Tools Command Prompt 终端 生成 sqlite3.lib 和 sqlite3.exp文件 LIB -def:sqlite3.def -out:sqlite3.lib -machin…...

java库和包的概念

在Java中&#xff0c;"库"和"包"是两个不同的概念&#xff0c;但它们之间存在着密切的关联。 库&#xff08;Library&#xff09; 定义&#xff1a;库是一组已经编写好的代码和资源&#xff0c;用于解决特定的问题或提供特定的功能。它可以包含一个或多个…...

mysql内存结构

一&#xff1a;逻辑存储结构&#xff1a;表空间->段->区->页->行、 表空间&#xff1a;一个mysql实例对应多个表空间&#xff0c;用于存储记录&#xff0c;索引等数据。 段&#xff1a;分为数据段&#xff0c;索引段&#xff0c;回滚段。innoDB是索引组织表&…...

Python | Leetcode Python题解之第111题二叉树的最小深度

题目&#xff1a; 题解&#xff1a; class Solution:def minDepth(self, root: TreeNode) -> int:if not root:return 0que collections.deque([(root, 1)])while que:node, depth que.popleft()if not node.left and not node.right:return depthif node.left:que.appen…...

c++二进制输出

输入一个数&#xff0c;输出n个数&#xff0c;数可以是0或1&#xff1b;输入&#xff1a;4输出&#xff1a;0010&#xff1b;提示&#xff1a;本题要用到rand(),srand(time(0));代码如下&#xff1a;#include<bits/stdc.h> #include<windows.h> using namespace s…...

5. C++网络编程-UDP协议的实现

UDP是无连接的。 UDP Server网络编程基本步骤 创建socket&#xff0c;指定使用UDP协议将socket与地址和端口绑定使用recv/send接收/发送数据 由于UDP是无连接的&#xff0c;直接侦听就行使用close关闭连接 这个UDP接收数据的时候用的API是recvfrom,发送数据是sendto 客户端 …...

Altium Designer 中键拖动,滚轮缩放,并修改缩放速度

我的版本是AD19&#xff0c;其他版本应该都一样。 滚轮缩放 首先&#xff0c;要用滚轮缩放&#xff0c;先要调整一下AD 设置&#xff0c;打开Preferences&#xff0c;在Mouse Wheel Configuration 里&#xff0c;把Zoom Main Window 后面Ctrl 上的对勾取消掉&#xff0c;再把…...

python从入门到精通04

一、编写英文月份词典 month_num int(input("请输入您想要查询的月份&#xff1a;")) month_list [January,February,March,April,May,June,July,August,September,October,November,December] print("您查询的月份单词是&#xff1a;", month_list[mon…...

AMD Ryzen底层硬件调试:如何通过SMU Debug Tool实现处理器性能的精确控制与优化

AMD Ryzen底层硬件调试&#xff1a;如何通过SMU Debug Tool实现处理器性能的精确控制与优化 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table…...

别再手动合并Excel了!用EasyExcel自定义策略搞定复杂报表导出(附完整代码)

告别Excel合并噩梦&#xff1a;EasyExcel高阶合并策略实战指南 每次看到同事在Excel里手动拖选单元格、点击合并按钮时&#xff0c;我都忍不住想递上一杯咖啡——这活儿太折磨人了。作为后端开发者&#xff0c;我们完全可以用代码自动化这些重复劳动。本文将带你深入EasyExcel的…...

3个步骤实现BetterGenshinImpact多账号协同管理:高效掌控多角色游戏体验

3个步骤实现BetterGenshinImpact多账号协同管理&#xff1a;高效掌控多角色游戏体验 【免费下载链接】better-genshin-impact &#x1f4e6;BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条…...

Hypersistence Utils数组类型深度解析:PostgreSQL ARRAY到Java List的完美映射

Hypersistence Utils数组类型深度解析&#xff1a;PostgreSQL ARRAY到Java List的完美映射 【免费下载链接】hypersistence-utils The Hypersistence Utils library (previously known as Hibernate Types) gives you Spring and Hibernate utilities that can help you get th…...

手把手教你用Python和MATLAB生成标准SVS文件(从numpy数组到多级金字塔)

从Numpy数组到多级金字塔&#xff1a;Python与MATLAB生成SVS文件的实战指南 在数字病理领域&#xff0c;全切片图像(WSI)的生成与共享已成为研究协作的关键环节。许多研究者面临一个共同挑战&#xff1a;如何将处理后的numpy数组&#xff08;如分割结果或合成图像&#xff09;转…...

Git-RSCLIP多场景落地:生态环境监测中‘红树林退化’语义识别案例

Git-RSCLIP多场景落地&#xff1a;生态环境监测中"红树林退化"语义识别案例 1. 项目背景与需求 红树林作为重要的海岸带生态系统&#xff0c;具有防风消浪、净化水质、维持生物多样性等重要生态功能。然而近年来&#xff0c;由于人类活动和环境变化&#xff0c;全球…...

cv_unet_image-matting图像抠图场景实战:复杂背景人像处理技巧

cv_unet_image-matting图像抠图场景实战&#xff1a;复杂背景人像处理技巧 1. 引言&#xff1a;为什么需要专业的人像抠图工具&#xff1f; 在日常工作中&#xff0c;我们经常遇到需要将人像从复杂背景中分离出来的需求。无论是电商产品图、证件照制作还是创意设计&#xff0…...

基于RexUniNLU的Java企业级文本分析系统构建指南

基于RexUniNLU的Java企业级文本分析系统构建指南 1. 引言 想象一下这样的场景&#xff1a;你的电商平台每天收到数万条客户反馈&#xff0c;客服团队需要手动分类处理&#xff1b;法务部门每天要审核大量合同&#xff0c;寻找关键条款&#xff1b;市场团队需要从海量评论中提…...

Qwen3-ASR-1.7B开发入门:MySQL数据库集成教程

Qwen3-ASR-1.7B开发入门&#xff1a;MySQL数据库集成教程 1. 引言 语音识别技术正在改变我们与设备交互的方式&#xff0c;而将识别结果持久化存储是许多实际应用的关键需求。今天我们来聊聊如何将Qwen3-ASR-1.7B这个强大的语音识别模型与MySQL数据库结合起来&#xff0c;让你…...

OpenClaw配置备份:Qwen3-14b_int4_awq环境迁移与恢复指南

OpenClaw配置备份&#xff1a;Qwen3-14b_int4_awq环境迁移与恢复指南 1. 为什么需要备份OpenClaw配置 上周我经历了一次痛苦的教训——因为系统重装&#xff0c;丢失了精心调校的OpenClaw配置。那些花了几周时间调试的模型参数、飞书机器人集成设置、自定义技能模块全部归零。…...