OpenCompass使用LawBench数据测评本地Qwen大模型
一、思维导图展示

二、OpenCompass简介
OpenCompass是一个大模型测评体系,开源、高效。同时集成CompassKit测评工具、CompassHub测评集社区,CompassRank测评榜单。
官网地址:https://opencompass.org.cn/home
三、OpenCompass安装
3.1 创建虚拟环境
conda create --name opencompass python=3.10 -y
conda activate opencompass
3.2 通过pip安装OpenCompass
# 支持绝大多数数据集及模型
pip install -U opencompass # 完整安装(支持更多数据集)
# pip install "opencompass[full]" # 模型推理后端,由于这些推理后端通常存在依赖冲突,建议使用不同的虚拟环境来管理它们。
# pip install "opencompass[lmdeploy]"
# pip install "opencompass[vllm]" # API 测试(例如 OpenAI、Qwen)
# pip install "opencompass[api]"
3.3 基于源码安装OpenCompass
git clone https://github.com/open-compass/opencompass opencompass
cd opencompass
pip install -e .
# pip install -e ".[full]"
# pip install -e ".[vllm]"
3.4 下载系统数据集(可选)
因为我们使用自己下载的数据集,所以系统的数据集,不是必要的,但是为了原始程序的健壮性,还是推荐下载,因为我没有验证不下载的情况。
# 下载数据集到 data/ 处
wget https://github.com/open-compass/opencompass/releases/download/0.2.2.rc1/OpenCompassData-core-20240207.zip
# 解压之后是个文件夹叫data(后面会告诉这个dataf放在那里,先记住这个data文件夹)
unzip OpenCompassData-core-20240207.zip
3.5 使用ModelScope自动下载模型和数据(可选)
因为我们也是使用本地的模型,不需要程序中自己下载,如果做在线测试的,可以配置一下
pip install modelscope
export DATASET_SOURCE=ModelScope
3.6 在线测评(可选)
至此如果,你具备FQ的条件的话,就可以直接进行在线测试了。
四、OpenCompass在线测评(可选)
因为在线测评很多模型是从huggingface上直接下载,然后测评的,需要FQ,我这里就不演示了,直接把官网上的测试过程拿过来展示,如果不需要在线测试的可以直接跳过。
4.1 首次测评
OpenCompass 支持通过命令行界面 (CLI) 或 Python 脚本来设置配置。对于简单的评估设置,我们推荐使用 CLI;而对于更复杂的评估,则建议使用脚本方式。你可以在configs文件夹下找到更多脚本示例。
# 命令行界面 (CLI)
opencompass --models hf_internlm2_5_1_8b_chat --datasets demo_gsm8k_chat_gen # Python 脚本
opencompass ./configs/eval_chat_demo.py
可以在 configs 文件夹下找到更多的脚本示例。
4.2 API测评
OpenCompass 在设计上并不区分开源模型与 API 模型。您可以以相同的方式或甚至在同一设置中评估这两种类型的模型。
export OPENAI_API_KEY="YOUR_OPEN_API_KEY"
# 命令行界面 (CLI)
opencompass --models gpt_4o_2024_05_13 --datasets demo_gsm8k_chat_gen # Python 脚本
opencompass ./configs/eval_api_demo.py # 现已支持 o1_mini_2024_09_12/o1_preview_2024_09_12 模型, 默认情况下 max_completion_tokens=8192.
4.3 后端推理
如果您想使用除 HuggingFace 之外的推理后端来进行加速评估,比如 LMDeploy 或 vLLM,可以通过以下命令进行。
opencompass --models hf_internlm2_5_1_8b_chat --datasets demo_gsm8k_chat_gen -a lmdeploy
五、加载本地测试数据集
5.1 通过 git 下载我们要使用的LawBench数据集到本地
git clone https://gitee.com/ljn20001229/LawBench.git

说明:1处 OpenCompassData-core-20231110.zip是通过git下载的数据集压缩包,需要将其解压到同级的标记2处的 data 中。
说明:3处 LawBench 是 OpenCompassData-core-20231110.zip 解压后的文件。

至此我们自定义本地数据就就下载并放好了。
六、配置本地Qwen模型
6.1 模型下载。直接在modelscope上下载即可。

6.2 将下载好的模型,加入到项目目录中

七、编写本地测评脚本
7.1 在根目录的configs文件夹中创建 eval_local_qwen_1_8b_chat.py 用作我们的Qwen1.8B模型的测评启动脚本,代码如下:
1 # eval_local_qwen_1_8b_chat.py
2
3 from mmengine.config import read_base
4
5 with read_base():
6 # 导入数据集
7 from .datasets.lawbench.lawbench_zero_shot_gen_002588 import lawbench_datasets as zero
8 from .datasets.lawbench.lawbench_one_shot_gen_002588 import lawbench_datasets as one
9 # 导入模型
10 from opencompass.configs.models.qwen.local_qwen_1_8b_chat import models
11 datasets = [*zero, *one]
7.2 修改 from .datasets.lawbench.lawbench_zero_shot_gen_002588 import lawbench_datasets as zero 中的 lawbench_zero_shot_gen_002588 文件:

7.3 同样修改 from .datasets.lawbench.lawbench_one_shot_gen_002588 import lawbench_datasets as one 中的 lawbench_one_shot_gen_002588 文件

7.4 创建 from opencompass.configs.models.qwen.local_qwen_1_8b_chat import models 中的 qwen.local_qwen_1_8b_chat 文件

八、启动本地测评
本地测评直接使用python run.py 执行我们创建的 configs/eval_local_qwen_1_8b_chat.py 文件,在加上参数即可
python run.py configs/eval_local_qwen_1_8b_chat.py --debug
九、测评参数解释
- --debug:调试模式,会有日志信息在控制台输出
- --dry-run:该次测试只加载数据集,但是不会再测评中使用。
- --accelerator vllm:vllm加速,适用于本地部署大模型
- --reuse:是否重用历史结果
- --work-dir:结果储存路径,默认是再outputs/default中
- --max-num-worker:用于数据并行
十、测评结果

至此使用OpenCompass通过本地数据集LawBench测评本地模型Qwen1.8B_chat模型记录完毕,谢谢各位看官姥爷,看了这么久!笔芯!!!
OpenCompass使用LawBench数据测评本地Qwen大模型的更多相关文章
- 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅
摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...
- Hadoop! | 大数据百科 | 数据观 | 中国大数据产业观察_大数据门户
你正在使用过时的浏览器,Amaze UI 暂不支持. 请 升级浏览器 以获得更好的体验! 深度好文丨读完此文,就知道Hadoop了! 来源:BiThink 时间:2016-04-12 15:1 ...
- HBase(三): Azure HDInsigt HBase表数据导入本地HBase
目录: hdfs 命令操作本地 hbase Azure HDInsight HBase表数据导入本地 hbase hdfs命令操作本地hbase: 参见 HDP2.4安装(五):集群及组件安装 , ...
- ABAP-2-会计凭证批量数据导入本地ACCESS
ABAP-1-会计凭证批量数据导入本地ACCESS 上一版本出现问题: A.若TXT数据条目超过800万(大概1.3G),则将TXT导入ACCESS过程不成功,ACCESS数据表为空.(Access单 ...
- ABAP-1-会计凭证批量数据导入本地ACCESS
公司会计凭证导入ACCESS数据库,需要发送给审计,原先的方案是采用DEPHI开发的功能(调用函数获取会计凭证信息,然后INSERT到ACCESS数据表),运行速度非常慢,业务方要求对该功能进行优化, ...
- 《当大数据遇见网络:大数据与SDN》
总体结构: <当大数据遇见网络:大数据与SDN> 摘要 大数据和SDN无论是对于学术界还是工业界来说都极具吸引力.传统上人们都是分别在最前沿工作中研究这两个重要的领域.然而一方面,SDN的 ...
- C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库
C# DateTime的11种构造函数 别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...
- 终于可以从百度云上BOS读取数据到本地了
终于可以从百度云上BOS读取数据到本地了
- Hibernate上传数据到数据库,从数据库读取数据到本地模板代码
1.Hibernate上传数据到数据库: //创建一个session对象 Session session1=HibernateTools.getSession(); //Fenciresult数据库表 ...
- Base64编码字符串时数据量明显变大
那就是当把byte[]通过Convert.ToBase64String转换成Base64编码字符串时数据量明显变大 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需 ...
随机推荐
- TimeWheel算法介绍及在应用上的探索
作者:来自 vivo 互联网服务器团队- Li Fan 本文从追溯时间轮算法的出现,介绍了时间轮算法未出现前,基于队列的定时任务实现,以及基于队列的定时任务实现所存在的缺陷.接着我们介绍了时间轮算法的 ...
- 给网站添加Let's Encrypt的免费ssl证书
概要 目前很多浏览器默认都会标记http访问的网站为不安全,https部署已经称为大趋势,我之前利用业余时间搭建了一个网站,本文就以这个域名为基础说明如何给网站加上证书.本文使用的操作系统centos ...
- 示例python 批量操作excel统计销售榜品牌及销售额
示例统计销售榜品牌及销售额 import pandas as pd import numpy as np import os os.chdir('F:\\50mat\源数据1000张表格') name ...
- C++ std::shared_ptr自定义allocator引入内存池
当C++项目里做了大量的动态内存分配与释放,可能会导致内存碎片,使系统性能降低.当动态内存分配的开销变得不容忽视时,一种解决办法是一次从操作系统分配一块大的静态内存作为内存池进行手动管理,堆对象内存分 ...
- div中多行内容垂直居中显示
div中多行内容垂直居中显示 一.css 样式 .wrap { height: 200px; width: 200px; border: 1px solid #232323; display: fle ...
- SEO – Schema and JSON-LD
大纲介绍 Schema 是 Google, Microsoft, Yahoo 联合成立的, 目的是统一网页的表示方式, 这样搜素引擎会比较方便显示内容. 它虽然不算那种 w3c 独立的组织. 但其它的 ...
- 揭秘JWT:从CTF实战到Web开发,使用JWT令牌验证
揭秘JWT:从CTF实战到Web开发,使用JWT令牌验证 介绍 JWT(JSON Web Tokens)是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在网络上安全地传输信息. ...
- QT硬件通讯基础
QT硬件通讯基础 使用AI技术辅助生成 1 QT与硬件通讯概述 1.1 QT硬件通讯的基本概念 1.1.1 QT硬件通讯的基本概念 QT硬件通讯的基本概念 QT硬件通讯的基本概念 QT作为一种跨平台的 ...
- C#爬取动态网页上的信息:B站主页
目录 简介 获取 HTML 文档 解析 HTML 文档 测试 参考文章 简介 动态内容网站使用 JavaScript 脚本动态检索和渲染数据,爬取信息时需要模拟浏览器行为,否则获取到的源码基本是空的. ...
- vector<char>转string的方法
要将 std::vector<char> 转换为 std::string,可以通过 std::string 的构造函数直接从 vector 中构建字符串. 假设 std::vector&l ...