文章目录

  • 1 我也许不是傻瓜,却只想做个傻瓜
  • 2 环境要求
  • 3 安装
    • 3.1 下载源码
    • 3.2 创建虚拟环境
    • 3.3 安装
  • 4 下载数据
  • 5 查看支持的模型和数据集
  • 6 评测
    • 6.1 指定模型路径
    • 6.2 指定配置文件
      • 6.2.1 评测本地qwen2.5模型
        • 6.2.1.1 查看opencompass支持的qwen2.5模型
        • 6.2.1.2 创建配置文件
        • 6.2.1.3 再次使用`python tools/list_configs.py | grep hf_qwen2_5`进行查看
        • 6.2.1.4 运行
      • 6.2.2 评测ollama模型
        • 6.2.2.1 创建配置文件`eval_ollama.py`
        • 6.2.2.2 启动ollama服务
        • 6.2.2.3 运行方式1
        • 6.2.2.4 运行方式2
      • 6.2.3 使用lmdeploy加速评测
        • 6.2.3.1 安装lmdeploy
        • 6.2.3.2 查看支持lmdeploy加速的qwen2.5模型
        • 6.2.3.3 创建配置文件
        • 6.2.3.4 运行

1 我也许不是傻瓜,却只想做个傻瓜

OpenCompassgithub中说祝贺 OpenCompass 作为大模型标准测试工具被Meta AI官方推荐,实力不俗。但官方教程真是写得那个随心所欲,我只想无脑照着教程,快速跑起来,再慢慢深入了解。但折腾半天,不是这里错就是那里有问题,根本跑不起来,差点就劝退了。于是有了这篇入门教程,力争无脑操作,躺平做个傻瓜!

2 环境要求

  1. 最好是LinuxWSLWindows可能会有不期而遇的错误
  2. 必须是python 3.10,我一上来就用了python 3.12,装了半天也装不上
  3. 直接源码安装!千万别pip install opencompass,然后照着官方教程,直接劝退

3 安装

3.1 下载源码

git clone https://github.com/open-compass/opencompass opencompass

3.2 创建虚拟环境

conda create -n open-compass python=3.10 -y
conda activate open-compass
python --version

3.3 安装

cd opencompass
pip install -e . -i https://mirrors.aliyun.com/pypi/simple/
pip list | grep opencompass

opencompass 0.4.2 /home/ubuntu/ws/opencompass

4 下载数据

# 先进入到opencompass目录下
# 注意,opencompass下还有一个opencompass文件夹,别进错了  
# cd opencompasswget https://github.com/open-compass/opencompass/releases/download/0.2.2.rc1/OpenCompassData-core-20240207.zip
# 会自动解压到data文件夹中
unzip OpenCompassData-core-20240207.zip

5 查看支持的模型和数据集

OpenCompass采用基于配置文件与命名约定的运行机制。运行时指定的模型数据集参数并非随意传递,而是通过预定义的名称与配置文件映射关系来定位。用户只需指定预定义的名称,系统就能自动关联到对应的配置文件。要查看所有可用的配置映射关系,可以运行命令python tools/list_configs.py

# cd opencompass
# conda activate open-compass
python tools/list_configs.py
+-----------------------------------------------+-------------------------------------------------------------------------------------+
| Model                                         | Config Path                                                                         |
|-----------------------------------------------+-------------------------------------------------------------------------------------|
| README                                        | opencompass/configs/models/qwen/README.md                                           |
| README                                        | opencompass/configs/models/hf_internlm/README.md                                    |
| accessory_llama2_7b                           | opencompass/configs/models/accessory/accessory_llama2_7b.py                         |+-----------------------------------------------+-------------------------------------------------------------------------------------+
| Dataset                                       | Config Path                                                                         |
|-----------------------------------------------+-------------------------------------------------------------------------------------|
| ARC_c_clean_ppl                               | opencompass/configs/datasets/ARC_c/ARC_c_clean_ppl.py                               |
| ARC_c_cot_gen_926652                          | opencompass/configs/datasets/ARC_c/ARC_c_cot_gen_926652.py                          |
| ARC_c_few_shot_gen_e9b043                     | opencompass/configs/datasets/ARC_c/ARC_c_few_shot_gen_e9b043.py                     |

6 评测

opencompass主要有两种运行方式,一种指定模型路径opencompass直接加载运行模型进行评测;一种是指定配置文件opencompass加载解析配置文件,加载本地模型或调用模型的服务化API进行评测。

6.1 指定模型路径

# cd opencompass
# conda activate open-compass# 必须是在opencompass目录下,才有run.py这个脚本 
# --hf-type 指定chat或base模型类型
# --hf-path 指定本地模型的路径,open-compass会以huggingface的方式加载模型
# --datasets 指定数据集名称,必须是在tools/list_configs.py中python run.py \--hf-type chat \--hf-path /mnt/d/models/Qwen/Qwen2.5-1.5B-Instruct \--datasets demo_gsm8k_chat_gen \--work-dir eval_results/hf/Qwen2.5-1.5B-Instruct \--debug

6.2 指定配置文件

6.2.1 评测本地qwen2.5模型

6.2.1.1 查看opencompass支持的qwen2.5模型
# cd opencompass
# conda activate open-compasspython tools/list_configs.py | grep hf_qwen2_5
| hf_qwen2_57b_a14b                             | opencompass/configs/models/qwen/hf_qwen2_57b_a14b.py                                |
| hf_qwen2_5_0_5b_instruct                      | opencompass/configs/models/qwen2_5/hf_qwen2_5_0_5b_instruct.py                      |
| hf_qwen2_5_14b_instruct                       | opencompass/configs/models/qwen2_5/hf_qwen2_5_14b_instruct.py                       |
| hf_qwen2_5_1_5b_instruct                      | opencompass/configs/models/qwen2_5/hf_qwen2_5_1_5b_instruct.py                      |
| hf_qwen2_5_32b_instruct                       | opencompass/configs/models/qwen2_5/hf_qwen2_5_32b_instruct.py                       |
| hf_qwen2_5_3b_instruct                        | opencompass/configs/models/qwen2_5/hf_qwen2_5_3b_instruct.py                        |
| hf_qwen2_5_72b_instruct                       | opencompass/configs/models/qwen2_5/hf_qwen2_5_72b_instruct.py                       |
| hf_qwen2_5_7b_instruct                        | opencompass/configs/models/qwen2_5/hf_qwen2_5_7b_instruct.py                        |
6.2.1.2 创建配置文件

Qwen2.5-1.5B-Instruct为例,即hf_qwen2_5_1_5b_instruct,可看到它对应的配置文件为opencompass/configs/models/qwen2_5/hf_qwen2_5_1_5b_instruct.py ,以它为模板,拷贝后修改如下,并命名为 local_hf_qwen2_5_1_5b_instruct.py

from opencompass.models import HuggingFacewithChatTemplatemodels = [dict(type=HuggingFacewithChatTemplate,abbr='local_qwen2.5-1.5b-instruct-hf',path='/mnt/d/models/Qwen/Qwen2.5-1.5B-Instruct',  # 指定本地路径max_out_len=4096,batch_size=8,run_cfg=dict(num_gpus=1),)
]
6.2.1.3 再次使用python tools/list_configs.py | grep hf_qwen2_5进行查看
| hf_qwen2_57b_a14b                             | opencompass/configs/models/qwen/hf_qwen2_57b_a14b.py                                |
| hf_qwen2_5_0_5b_instruct                      | opencompass/configs/models/qwen2_5/hf_qwen2_5_0_5b_instruct.py                      |
| hf_qwen2_5_14b_instruct                       | opencompass/configs/models/qwen2_5/hf_qwen2_5_14b_instruct.py                       |
| hf_qwen2_5_1_5b_instruct                      | opencompass/configs/models/qwen2_5/hf_qwen2_5_1_5b_instruct.py                      |
| hf_qwen2_5_32b_instruct                       | opencompass/configs/models/qwen2_5/hf_qwen2_5_32b_instruct.py                       |
| hf_qwen2_5_3b_instruct                        | opencompass/configs/models/qwen2_5/hf_qwen2_5_3b_instruct.py                        |
| hf_qwen2_5_72b_instruct                       | opencompass/configs/models/qwen2_5/hf_qwen2_5_72b_instruct.py                       |
| hf_qwen2_5_7b_instruct                        | opencompass/configs/models/qwen2_5/hf_qwen2_5_7b_instruct.py                        |
| local_hf_qwen2_5_1_5b_instruct                | opencompass/configs/models/qwen2_5/local_hf_qwen2_5_1_5b_instruct.py                |
6.2.1.4 运行
# cd opencompass
# conda activate open-compass# --models 要指定tools/list_configs.py中定义的模型配置文件
python run.py \--models local_hf_qwen2_5_1_5b_instruct \--datasets demo_gsm8k_chat_gen \--work-dir eval_results/hf/Qwen2.5-1.5B-Instruct \--debug

6.2.2 评测ollama模型

6.2.2.1 创建配置文件eval_ollama.py
from mmengine.config import read_base  from opencompass.models import OpenAI  
from opencompass.partitioners import NaivePartitioner  
from opencompass.runners import LocalRunner  
from opencompass.tasks import OpenICLInferTask  with read_base():  from opencompass.configs.datasets.cmmlu.cmmlu_gen import cmmlu_datasets  api_meta_template = dict(round=[  dict(role='HUMAN', api_role='HUMAN'),  dict(role='BOT', api_role='BOT', generate=True),  
], )  models = [  dict(  abbr='ollama',  type=OpenAI,  path='qwen3:0.6b',  # 指定ollama中的模型,可通过ollama list进行查看,如果不存在,则必须先下载   # 若不在这里指定,则需要在shell中使用 export OPENAI_BASE_URL=http://192.168.56.1:11434/v1# 不能 import os,否则会报错,所以也不能使用os.environ['OPENAI_BASE_URL'] = 'http://192.168.56.1:11434/v1' # 这里要指定windows的IP,使用localhost访问不到 openai_api_base='http://192.168.56.1:11434/v1/chat/completions',  # 若不在这里指定,则需要在shell中使用 export OPENAI_API_KEY=Nonekey='None',  meta_template=api_meta_template,  query_per_second=1,  max_out_len=2048,  max_seq_len=2048,   batch_size=2  ),  ]  infer = dict(  partitioner=dict(type=NaivePartitioner),  runner=dict(type=LocalRunner,  max_num_workers=2,  task=dict(type=OpenICLInferTask)),  
)  datasets = cmmlu_datasetsif __name__ == '__main__':  from opencompass.cli.main import main  import sys  from pathlib import Path  sys.argv.append(str(Path(__file__)))  sys.argv.extend(['--work-dir', 'eval_results/ollama/qwen3_0_6b'])  sys.argv.append('--debug')  main()

注意

  1. 代码中指定的path='qwen3:0.6b', 是指定ollama中的qwen3:0.6b模型,可通过ollama list进行查看,如果不存在,则必须先下载
  2. 脚本中指定的openai_api_base='http://192.168.56.1:11434/v1/chat/completions',其中的192.168.56.1windowsIP,若直接使用localhost,无法从WSL访问到ollama
6.2.2.2 启动ollama服务

windows中打开powershell

# 配置ollama环境变量
$env:OLLAMA_HOST="0.0.0.0:11434"
$env:OLLAMA_MODELS="D:\models\ollama"
$env:OLLAMA_DEBUG="2"# 启动ollama服务
ollama serve
6.2.2.3 运行方式1
# cd opencompass
# conda activate open-compass# 不加 --debug,可能会报错
# 08/14 23:36:45 - OpenCompass - ERROR - /home/ubuntu/ws/opencompass/opencompass/runners/local.py - _launch - 241 - task OpenICLInfer[ollama/cmmlu-chinese_civil_service_exam] fail, see outputs/default/20250814_233629/logs/infer/ollama/cmmlu-chinese_civil_service_exam.out
python run.py eval_ollama.py --debug
6.2.2.4 运行方式2

这种方式可以pycharm中使用debug方式运行,方便debug

# cd opencompass
# conda activate open-compasspython eval_ollama.py

6.2.3 使用lmdeploy加速评测

默认transformers加载模型,推理比较慢。使用lmdeploy加载模型,加快推理速度。

6.2.3.1 安装lmdeploy
conda activate open-compass
pip install lmdeploy

如果CUDA不是12+,请参考官方教程进行安装:使用 LMDeploy 加速评测 — OpenCompass 0.4.2 documentation

6.2.3.2 查看支持lmdeploy加速的qwen2.5模型
# cd opencompass
# conda activate open-compasspython tools/list_configs.py lmdeploy_qwen2_5
+--------------------------------+----------------------------------------------------------------------+
| Model                          | Config Path                                                          |
|--------------------------------+----------------------------------------------------------------------|
| lmdeploy_qwen2_5_0_5b_instruct | opencompass/configs/models/qwen2_5/lmdeploy_qwen2_5_0_5b_instruct.py |
| lmdeploy_qwen2_5_14b           | opencompass/configs/models/qwen2_5/lmdeploy_qwen2_5_14b.py           |
| lmdeploy_qwen2_5_14b_instruct  | opencompass/configs/models/qwen2_5/lmdeploy_qwen2_5_14b_instruct.py  |
| lmdeploy_qwen2_5_1_5b          | opencompass/configs/models/qwen2_5/lmdeploy_qwen2_5_1_5b.py          |
| lmdeploy_qwen2_5_1_5b_instruct | opencompass/configs/models/qwen2_5/lmdeploy_qwen2_5_1_5b_instruct.py |
| lmdeploy_qwen2_5_32b           | opencompass/configs/models/qwen2_5/lmdeploy_qwen2_5_32b.py           |
| lmdeploy_qwen2_5_32b_instruct  | opencompass/configs/models/qwen2_5/lmdeploy_qwen2_5_32b_instruct.py  |
| lmdeploy_qwen2_5_3b_instruct   | opencompass/configs/models/qwen2_5/lmdeploy_qwen2_5_3b_instruct.py   |
| lmdeploy_qwen2_5_72b           | opencompass/configs/models/qwen2_5/lmdeploy_qwen2_5_72b.py           |
| lmdeploy_qwen2_5_72b_instruct  | opencompass/configs/models/qwen2_5/lmdeploy_qwen2_5_72b_instruct.py  |
| lmdeploy_qwen2_5_7b            | opencompass/configs/models/qwen2_5/lmdeploy_qwen2_5_7b.py            |
| lmdeploy_qwen2_5_7b_instruct   | opencompass/configs/models/qwen2_5/lmdeploy_qwen2_5_7b_instruct.py   |
+--------------------------------+----------------------------------------------------------------------+
6.2.3.3 创建配置文件

lmdeploy_qwen2_5_1_5b_instruct为模板,拷贝创建local_lmdeploy_qwen2_5_1_5b_instruct.py,修改如下:

from opencompass.models import TurboMindModelwithChatTemplatemodels = [dict(type=TurboMindModelwithChatTemplate,abbr='local-qwen2.5-1.5b-instruct-turbomind',path='/mnt/d/models/Qwen/Qwen2.5-1.5B-Instruct',  # 指定模型路径engine_config=dict(session_len=16384, max_batch_size=16, tp=1),gen_config=dict(top_k=1, temperature=1e-6, top_p=0.9, max_new_tokens=4096),max_seq_len=16384,max_out_len=4096,batch_size=16,run_cfg=dict(num_gpus=1),)
]
6.2.3.4 运行
# cd opencompass
# conda activate open-compass# --models 要指定tools/list_configs.py中定义的模型配置文件
python run.py \--models local_lmdeploy_qwen2_5_1_5b_instruct \--datasets demo_gsm8k_chat_gen \--work-dir eval_results/lmdeploy/Qwen2.5-1.5B-Instruct \--debug

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93425.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93425.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/93425.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软件测试】电商购物项目-各个测试点整理(三)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、优惠券的测试点…

流处理、实时分析与RAG驱动的Python ETL框架:构建智能数据管道(上)

> **2025年某电商大促,每秒20万订单涌入系统**——他们的风控团队仅用**47毫秒**就识别出欺诈交易。背后的秘密武器,正是融合流处理、实时分析与RAG的下一代Python ETL框架。 ### 一、范式革命:从批处理到AI增强的ETL 4.0 #### 1.1 数据处理演进史 ```mermaid graph LR …

开源 Arkts 鸿蒙应用 开发(十五)自定义绘图控件--仪表盘

文章的目的为了记录使用Arkts 进行Harmony app 开发学习的经历。本职为嵌入式软件开发,公司安排开发app,临时学习,完成app的开发。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。 相关链接: 开源 Arkts …

​​​​​​​中国工业企业专利及引用被引用数据说明

1319 中国工业企业专利及引用被引用数据说明数据简介专利近年发文趋势及主题分布今天数据皮皮侠团队为大家分享一份2023年12月25日最新更新的中国工业企业专利及引用被引用数据,供大家研究使用。数据来源原始数据来源于国家统计局,由皮皮侠团队整理计算。…

MySQL知识点(上)

MySQL知识点 一:MySQL概述 MySQL是一款开源的数据库软件,是一种关系型数据库管理系统(ROBMS),也叫做表数据库管理系统 如果需要快速安全地处理大量的数据,则必须使用数据库管理系统;任何基于数据…

shell脚本实现sha256sum校验并拷贝校验通过的文件

#!/bin/bash# 目标目录 TARGET_DIR"/appdata/jn1m/versions/old/bin"# 校验文件 CHECKSUM_FILE"checksum.txt"# 检查目标目录是否存在 if [ ! -d "$TARGET_DIR" ]; thenecho "错误:目标目录 $TARGET_DIR 不存在"exit 1 fi#…

中小型泵站物联网智能控制系统解决方案:构建无人值守的自动化泵站体系

一、系统核心架构与功能设计1.物联网感知层设备互联:网关对接压力传感器、超声波液位计、智能电表、振动传感器等,实时采集水泵运行状态(流量、压力、温度、振动)、液位、水质(pH值、浊度)、能耗等关键参数…

网络通信---Axios

1、什么是 Axios? Axios​ 是一个基于 ​Promise​ 的 ​HTTP 客户端,用于浏览器和 Node.js 环境,用来发送 ​HTTP 请求(如 GET、POST、PUT、DELETE 等)​。 它常用于: 向后台 API 发送请求获取数据提交表…

Ubuntu 软件源版本不匹配导致的依赖冲突问题及解决方法

在使用 Ubuntu 系统的过程中,软件包管理是日常操作的重要部分。但有时我们会遇到各种依赖冲突问题,其中软件源与系统版本不匹配是常见且棘手的一种。本文就来详细分享一次因软件源版本不匹配引发的依赖冲突问题,以及具体的解决思路和流程。一…

思考:高速场景的行星轮混动效率如何理解

行星轮混动 E-CVT(电子无级变速器)是一种专为混合动力汽车设计的动力分配系统,其核心原理是通过行星齿轮组和电机的协同工作,实现动力分流与无级变速。 一、核心结构与组成 E-CVT的核心部件包括 行星齿轮组 和 双电机(…

跨域及解决方案

跨域(Cross-Origin)是指浏览器在执行 JavaScript 的时候,因为同源策略(Same-Origin Policy)的限制,阻止了一个网页去请求不同源(域名、端口、协议有任意一个不同)的资源。 1. 什么是…

PCA降维全解析:从原理到实战

一文读懂PCA降维:原理、实现与可视化全解析​本文6000字,涵盖PCA核心原理、数学推导、代码实战及高频面试题,建议收藏阅读​一、为什么需要降维?数据爆炸时代的生存法则当数据集的特征维度激增(如基因数据、推荐系统用…

Kafka工作机制深度解析:Broker、Partition 与消费者组协作原理

🐯 Kafka工作机制深度解析:Broker、Partition 与消费者组协作原理 🏁 前言 Kafka 已成为互联网公司流式数据处理的事实标准,广泛应用于日志收集、实时计算、事件驱动架构等场景。 很多开发者会用 Kafka,但不了解它底…

深入解析live555:开源流媒体框架的技术原理与应用实践

引言:流媒体领域的"老兵"与技术基石 在实时音视频传输技术的发展历程中,live555作为一款诞生于1990年代末的开源项目,至今仍在流媒体服务器、嵌入式设备和安防监控等领域发挥着不可替代的作用。它由Live Networks公司开发并维护&a…

EN55014家用电器、电动工具和类似设备的电磁兼容

一、EN 55014标准定义与属性?EN 55014 是针对家用电器、电动工具及类似设备的电磁兼容(EMC)标准,主要规定了这类产品在电磁骚扰发射(避免干扰其他设备)和抗扰度(抵抗其他设备干扰)方…

python自学笔记9 Seaborn可视化

Seaborn:统计可视化利器 作为基于 Matplotlib 的高级绘图库,有一下功能:一元特征数据 直方图 import matplotlib.pyplot as plt import pandas as pd import seaborn as sns # import os # # 如果文件夹不存在,创建文件夹 # if…

kafka 消费者组的概念是什么?它是如何实现消息的点对点和发布/订阅模式?

Kafka 消费者组(Consumer Group)是 Kafka 架构中的核心概念,它是一组共同协作来消费一个或多个主题(Topic)数据的消费者应用的集合。 通过简单地为多个消费者实例配置相同的 group.id,它们就组成了一个消费…

C#文件复制异常深度剖析:解决“未能找到文件“之谜

一个看似简单的文件操作问题 在C#开发中,文件操作是基础中的基础,但有时最基础的File.Copy()方法也会抛出令人困惑的异常。最近我遇到了这样一个问题: File.Copy(sourceFile, targetFilePath);当targetFilePath设置为D:\25Q1\MR3.6.6.1_C1.2.…

OpenCV Python——图像查找(特征匹配 + 单应性矩阵)

1 图像查找(单应性矩阵)2 单应性矩阵 应用举例3 单应性矩阵 代码示例P87 111 图像查找(单应性矩阵) 特征匹配作为输入,获得单应性矩阵 点X在img1和img2中的成像分别为x,x 图中H即为单应性矩阵 2 单应性矩阵 应用…

Ubuntu 安装带证书的 etcd 集群

1.概念 etcd 是由GO语言编写的分布式的、可靠的键值存储系统,主要用于分布式系统中关键数据的存储和服务发现。 2.核心概念 节点(Node) 每个运行 etcd 的实例被称为一个节点。一个或多个节点可以组成一个集群。 集群(Cluster&…