OpenCompass傻瓜式入門教程

文章目錄

  • 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&…