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)类中必须要有一个公共的无参的构造器。其他的构造器可写可不写。 右键菜单中࿰…...

【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: $ bitbake -c compile -f u-boot-imx $ bitbake -c deploy -f u-boot-imx //部署编译生成的u-boot镜像到deploy bitbake命令单独编译kernel: 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.最近接到个任务是在管理页面更改相机的某个参数,下载官方的sdk貌似没有提供这个接口,所以只能自己写爬虫登录发请求了。 1.主要步骤 1.1 发送get请求获取到salt,sessionID,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网络简介 作用: 容器间的互联和通信以及端口映射容器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中,"库"和"包"是两个不同的概念,但它们之间存在着密切的关联。 库(Library) 定义:库是一组已经编写好的代码和资源,用于解决特定的问题或提供特定的功能。它可以包含一个或多个…...
mysql内存结构
一:逻辑存储结构:表空间->段->区->页->行、 表空间:一个mysql实例对应多个表空间,用于存储记录,索引等数据。 段:分为数据段,索引段,回滚段。innoDB是索引组织表&…...

Python | Leetcode Python题解之第111题二叉树的最小深度
题目: 题解: 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++二进制输出
输入一个数,输出n个数,数可以是0或1;输入:4输出:0010;提示:本题要用到rand(),srand(time(0));代码如下:#include<bits/stdc.h> #include<windows.h> using namespace s…...

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

Altium Designer 中键拖动,滚轮缩放,并修改缩放速度
我的版本是AD19,其他版本应该都一样。 滚轮缩放 首先,要用滚轮缩放,先要调整一下AD 设置,打开Preferences,在Mouse Wheel Configuration 里,把Zoom Main Window 后面Ctrl 上的对勾取消掉,再把…...
python从入门到精通04
一、编写英文月份词典 month_num int(input("请输入您想要查询的月份:")) month_list [January,February,March,April,May,June,July,August,September,October,November,December] print("您查询的月份单词是:", month_list[mon…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...