一、思维导图展示

  

二、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大模型的更多相关文章

  1. 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅

    摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...

  2. Hadoop! | 大数据百科 | 数据观 | 中国大数据产业观察_大数据门户

        你正在使用过时的浏览器,Amaze UI 暂不支持. 请 升级浏览器 以获得更好的体验! 深度好文丨读完此文,就知道Hadoop了! 来源:BiThink 时间:2016-04-12 15:1 ...

  3. HBase(三): Azure HDInsigt HBase表数据导入本地HBase

    目录: hdfs 命令操作本地 hbase Azure HDInsight HBase表数据导入本地 hbase hdfs命令操作本地hbase: 参见  HDP2.4安装(五):集群及组件安装 , ...

  4. ABAP-2-会计凭证批量数据导入本地ACCESS

    ABAP-1-会计凭证批量数据导入本地ACCESS 上一版本出现问题: A.若TXT数据条目超过800万(大概1.3G),则将TXT导入ACCESS过程不成功,ACCESS数据表为空.(Access单 ...

  5. ABAP-1-会计凭证批量数据导入本地ACCESS

    公司会计凭证导入ACCESS数据库,需要发送给审计,原先的方案是采用DEPHI开发的功能(调用函数获取会计凭证信息,然后INSERT到ACCESS数据表),运行速度非常慢,业务方要求对该功能进行优化, ...

  6. 《当大数据遇见网络:大数据与SDN》

    总体结构: <当大数据遇见网络:大数据与SDN> 摘要 大数据和SDN无论是对于学术界还是工业界来说都极具吸引力.传统上人们都是分别在最前沿工作中研究这两个重要的领域.然而一方面,SDN的 ...

  7. C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库

    C# DateTime的11种构造函数   别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...

  8. 终于可以从百度云上BOS读取数据到本地了

    终于可以从百度云上BOS读取数据到本地了

  9. Hibernate上传数据到数据库,从数据库读取数据到本地模板代码

    1.Hibernate上传数据到数据库: //创建一个session对象 Session session1=HibernateTools.getSession(); //Fenciresult数据库表 ...

  10. Base64编码字符串时数据量明显变大

    那就是当把byte[]通过Convert.ToBase64String转换成Base64编码字符串时数据量明显变大 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需 ...

随机推荐

  1. “从零到一:如何在鸿蒙OS上启动你的第一个项目”

    背景与引言 全球操作系统市场现状如何? 长期以来,Android.iOS.Windows等巨头几乎垄断了整个市场,成为人们日常生活中不可或缺的工具.然而,尽管它们在各自领域有着不可否认的成功,却也逐渐 ...

  2. 通过 GitHub Actions 实现代码的自动编译和发布

    GitHub Actions 是一个非常强大的工具,可以用来实现各种自动化任务,包括自动编译和发布 release.以下是一个基本的工作流程,展示如何使用 GitHub Actions 实现这一目标: ...

  3. 网站由http升级为https图文教程

    网站由http升级为https图文教程 本文是基于凯哥个人网站由http升级为https的记录. 前提说明:凯哥网站在AliYun备案的.所以基于此创建的.如果是腾讯云备案的域名也是类似的. 名词解释 ...

  4. JVM学习笔记之栈区

    JVM学习笔记之栈区 本文主要内容: 栈是什么?栈帧又是什么?在JVM中,main方法调用say方法后,是怎么运行的?本文将详细讲解栈.希望大家学了之后,对栈有更深的了解. 心法:在JVM中,栈管运行 ...

  5. 深入浅出Stream流

    Java 8的新特性之一就是流stream,配合同版本出现的 Lambda ,使得操作集合(Collection)提供了极大的便利. 案例引入 在JAVA中,涉及到对数组.Collection等集合类 ...

  6. effective-python-14

    effective python-Item 14 list.sort函数,比较容易用的是reverse,而其中还有个参数key,默认是NONE,此时排序是按照默认比较方法排序,比如数据按照大小,字符串 ...

  7. 所见即所得,赋能RAG:PDF解析里的段落识别

    前几天,有一位用户使用OCR产品识别多栏论文后向我们询问:要怎么解决不合适的断句.分段以及错误阅读顺序的问题? 我们用一个相似案例为大家直观展示这位用户遇到的情况. 如图中的多栏期刊,如果用OCR识别 ...

  8. springboot-实现csv文件导出功能

    excle文件导出,会遇到一个65535行限制的问题,就是导出的数据行数超过65535行就会导出失败,这个是excle本生的限制,这种情况下通常将导出的格式改成csv这样就可以跨过这个限制,同时生成的 ...

  9. 【QT性能优化】QT性能优化之QT6框架高性能网络编程框架实现百万TCP长连接网络服务器:QT是否适合做高性能网络应用?补天云这个视频告诉你在大厂Linux云服务器上的实测结果

    QT性能优化之QT6框架高性能网络编程框架实现百万TCP长连接网络服务器 Ø 简介 本文作者编写了一套基于QT的TCP网络服务器程序和基于QT的TCP客户端程序,在某大厂的云服务器上进行了C1000K ...

  10. Java实用小工具系列1---使用StringUtils分割字符串

    经常有这种情况,需要将逗号分割的字符串,比如:aaa, bbb ,ccc,但往往是人工输入的,难免会有多空格逗号情况,比如:aaa, bbb , ccc, ,,这种情况使用split会解析出不正常的结 ...