Skip to content

Latest commit

 

History

History
339 lines (255 loc) · 16.4 KB

README_zh.md

File metadata and controls

339 lines (255 loc) · 16.4 KB



中文   |   English  

PyPI version PyPI - Downloads Documentation Status

📖 中文文档   |   📖 English Documents

⭐ 如果你喜欢这个项目,请点击右上角的 "Star" 按钮支持我们。你的支持是我们前进的动力!

📋 目录

📝 简介

EvalScope是魔搭社区官方推出的模型评测与性能基准测试框架,专为多样化的模型评估需求而设计。它支持广泛的模型类型,包括但不限于大语言模型、多模态模型、Embedding 模型、Reranker 模型和 CLIP 模型。

EvalScope还适用于多种评测场景,如端到端RAG评测、竞技场模式和模型推理性能压测等,其内置多个常用测试基准和评测指标,如MMLU、CMMLU、C-Eval、GSM8K等。此外,通过与ms-swift训练框架的无缝集成,可一键发起评测,为模型训练和评测提供全链路支持🚀


EvalScope 整体架构图.

架构介绍
  1. Model Adapter: 模型适配器,用于将特定模型的输出转换为框架所需的格式,支持API调用的模型和本地运行的模型。

  2. Data Adapter: 数据适配器,负责转换和处理输入数据,以便适应不同的评测需求和格式。

  3. Evaluation Backend:

    • Native:EvalScope自身的默认评测框架,支持多种评测模式,包括单模型评测、竞技场模式、Baseline模型对比模式等。
    • OpenCompass:支持OpenCompass作为评测后端,对其进行了高级封装和任务简化,您可以更轻松地提交任务进行评测。
    • VLMEvalKit:支持VLMEvalKit作为评测后端,轻松发起多模态评测任务,支持多种多模态模型和数据集。
    • RAGEval:支持RAG评测,支持使用MTEB/CMTEB进行embedding模型和reranker的独立评测,以及使用RAGAS进行端到端评测。
    • ThirdParty:其他第三方评测任务,如ToolBench。
  4. Performance Evaluator: 模型性能评测,负责具体衡量模型推理服务性能,包括性能评测、压力测试、性能评测报告生成、可视化。

  5. Evaluation Report: 最终生成的评测报告,总结模型的性能表现,报告可以用于决策和进一步的模型优化。

  6. Visualization: 可视化结果,帮助用户更直观地理解评测结果,便于分析和比较不同模型的表现。

☎ 用户群

请扫描下面的二维码来加入我们的交流群:

Discord Group 微信群 钉钉群

🎉 新闻

  • 🔥 [2024.12.13] 模型评测优化,不再需要传递--template-type参数;支持evalscope eval --args启动评测,参考📖使用指南
  • 🔥 [2024.11.26] 模型推理压测工具重构完成:支持本地启动推理服务、支持Speed Benchmark;优化异步调用错误处理,参考📖使用指南
  • 🔥 [2024.10.31] 多模态RAG评测最佳实践发布,参考📖博客
  • 🔥 [2024.10.23] 支持多模态RAG评测,包括CLIP_Benchmark评测图文检索器,以及扩展了RAGAS以支持端到端多模态指标评测。
  • 🔥 [2024.10.8] 支持RAG评测,包括使用MTEB/CMTEB进行embedding模型和reranker的独立评测,以及使用RAGAS进行端到端评测。
  • 🔥 [2024.09.18] 我们的文档增加了博客模块,包含一些评测相关的技术调研和分享,欢迎📖阅读
  • 🔥 [2024.09.12] 支持 LongWriter 评测,您可以使用基准测试 LongBench-Write 来评测长输出的质量以及输出长度。
  • 🔥 [2024.08.30] 支持自定义数据集评测,包括文本数据集和多模态图文数据集。
  • 🔥 [2024.08.20] 更新了官方文档,包括快速上手、最佳实践和常见问题等,欢迎📖阅读
  • 🔥 [2024.08.09] 简化安装方式,支持pypi安装vlmeval相关依赖;优化多模态模型评测体验,基于OpenAI API方式的评测链路,最高加速10倍。
  • 🔥 [2024.07.31] 重要修改:llmuses包名修改为evalscope,请同步修改您的代码。
  • 🔥 [2024.07.26] 支持VLMEvalKit作为第三方评测框架,发起多模态模型评测任务。
  • 🔥 [2024.06.29] 支持OpenCompass作为第三方评测框架,我们对其进行了高级封装,支持pip方式安装,简化了评测任务配置。
  • 🔥 [2024.06.13] EvalScope与微调框架SWIFT进行无缝对接,提供LLM从训练到评测的全链路支持 。
  • 🔥 [2024.06.13] 接入Agent评测集ToolBench。

🛠️ 环境准备

方式1. 使用pip安装

我们推荐使用conda来管理环境,并使用pip安装依赖:

  1. 创建conda环境 (可选)
# 建议使用 python 3.10
conda create -n evalscope python=3.10

# 激活conda环境
conda activate evalscope
  1. pip安装依赖
pip install evalscope                # 安装 Native backend (默认)
# 额外选项
pip install evalscope[opencompass]   # 安装 OpenCompass backend
pip install evalscope[vlmeval]       # 安装 VLMEvalKit backend
pip install evalscope[rag]           # 安装 RAGEval backend
pip install evalscope[perf]          # 安装 模型压测模块 依赖
pip install evalscope[all]           # 安装所有 backends (Native, OpenCompass, VLMEvalKit, RAGEval)

Warning

由于项目更名为evalscope,对于v0.4.3或更早版本,您可以使用以下命令安装:

 pip install llmuses<=0.4.3

使用llmuses导入相关依赖:

from llmuses import ...

方式2. 使用源码安装

  1. 下载源码
git clone https://github.com/modelscope/evalscope.git
  1. 安装依赖
cd evalscope/

pip install -e .                  # 安装 Native backend
# 额外选项
pip install -e '.[opencompass]'   # 安装 OpenCompass backend
pip install -e '.[vlmeval]'       # 安装 VLMEvalKit backend
pip install -e '.[rag]'           # 安装 RAGEval backend
pip install -e '.[perf]'          # 安装 模型压测模块 依赖
pip install -e '.[all]'           # 安装所有 backends (Native, OpenCompass, VLMEvalKit, RAGEval)

🚀 快速开始

在指定的若干数据集上使用默认配置评测某个模型,本框架支持两钟启动评测任务的方式:使用命令行启动或使用Python代码启动评测任务。

方式1. 使用命令行

在任意路径下执行eval命令:

evalscope eval \
 --model Qwen/Qwen2.5-0.5B-Instruct \
 --datasets gsm8k arc \
 --limit 5

方式2. 使用Python代码

使用python代码进行评测时需要用run_task函数提交评测任务,传入一个TaskConfig作为参数,也可以为python字典、yaml文件路径或json文件路径,例如:

使用Python 字典

from evalscope.run import run_task

task_cfg = {
    'model': 'Qwen/Qwen2.5-0.5B-Instruct',
    'datasets': ['gsm8k', 'arc'],
    'limit': 5
}

run_task(task_cfg=task_cfg)
更多启动方式

使用TaskConfig

from evalscope.run import run_task
from evalscope.config import TaskConfig

task_cfg = TaskConfig(
    model='Qwen/Qwen2.5-0.5B-Instruct',
    datasets=['gsm8k', 'arc'],
    limit=5
)

run_task(task_cfg=task_cfg)

使用yaml文件

config.yaml:

model: Qwen/Qwen2.5-0.5B-Instruct
datasets:
  - gsm8k
  - arc
limit: 5
from evalscope.run import run_task

run_task(task_cfg="config.yaml")

使用json文件

config.json:

{
    "model": "Qwen/Qwen2.5-0.5B-Instruct",
    "datasets": ["gsm8k", "arc"],
    "limit": 5
}
from evalscope.run import run_task

run_task(task_cfg="config.json")

基本参数说明

  • --model: 指定了模型在ModelScope中的model_id,可自动下载,例如Qwen/Qwen2.5-0.5B-Instruct;也可使用模型的本地路径,例如/path/to/model
  • --datasets: 数据集名称,支持输入多个数据集,使用空格分开,数据集将自动从modelscope下载,支持的数据集参考数据集列表
  • --limit: 每个数据集最大评测数据量,不填写则默认为全部评测,可用于快速验证

输出结果

+-----------------------+-------------------+-----------------+
| Model                 | ai2_arc           | gsm8k           |
+=======================+===================+=================+
| Qwen2.5-0.5B-Instruct | (ai2_arc/acc) 0.6 | (gsm8k/acc) 0.6 |
+-----------------------+-------------------+-----------------+

⚙️ 复杂评测

若想进行更加自定义的评测,例如自定义模型参数,或者数据集参数,可以使用以下命令,启动评测方式与简单评测一致,下面展示了使用eval命令启动评测:

evalscope eval \
 --model Qwen/Qwen2.5-0.5B-Instruct \
 --model-args revision=master,precision=torch.float16,device_map=auto \
 --generation-config do_sample=true,temperature=0.5 \
 --dataset-args '{"gsm8k": {"few_shot_num": 0, "few_shot_random": false}}' \
 --datasets gsm8k \
 --limit 10

参数说明

  • --model-args: 模型加载参数,以逗号分隔,key=value形式,默认参数:
    • revision: 模型版本,默认为master
    • precision: 模型精度,默认为auto
    • device_map: 模型分配设备,默认为auto
  • --generation-config: 生成参数,以逗号分隔,key=value形式,默认参数:
    • do_sample: 是否使用采样,默认为false
    • max_length: 最大长度,默认为2048
    • max_new_tokens: 生成最大长度,默认为512
  • --dataset-args: 评测数据集的设置参数,以json格式传入,key为数据集名称,value为参数,注意需要跟--datasets参数中的值一一对应:
    • few_shot_num: few-shot的数量
    • few_shot_random: 是否随机采样few-shot数据,如果不设置,则默认为true

参考:全部参数说明

其他评测后端

EvalScope支持使用第三方评测框架发起评测任务,我们称之为评测后端 (Evaluation Backend)。目前支持的Evaluation Backend有:

  • Native:EvalScope自身的默认评测框架,支持多种评测模式,包括单模型评测、竞技场模式、Baseline模型对比模式等。
  • OpenCompass:通过EvalScope作为入口,发起OpenCompass的评测任务,轻量级、易于定制、支持与LLM微调框架ms-wift的无缝集成:📖使用指南
  • VLMEvalKit:通过EvalScope作为入口,发起VLMEvalKit的多模态评测任务,支持多种多模态模型和数据集,支持与LLM微调框架ms-wift的无缝集成:📖使用指南
  • RAGEval:通过EvalScope作为入口,发起RAG评测任务,支持使用MTEB/CMTEB进行embedding模型和reranker的独立评测,以及使用RAGAS进行端到端评测:📖使用指南
  • ThirdParty: 第三方评测任务,如ToolBenchLongBench-Write

推理性能评测工具

一个专注于大型语言模型的压力测试工具,可以自定义以支持各种数据集格式和不同的API协议格式。

参考:性能测试📖使用指南

支持wandb记录结果

wandb sample

支持Speed Benchmark

支持速度测试,得到类似Qwen官方报告的速度基准:

Speed Benchmark Results:
+---------------+-----------------+----------------+
| Prompt Tokens | Speed(tokens/s) | GPU Memory(GB) |
+---------------+-----------------+----------------+
|       1       |      50.69      |      0.97      |
|     6144      |      51.36      |      1.23      |
|     14336     |      49.93      |      1.59      |
|     30720     |      49.56      |      2.34      |
+---------------+-----------------+----------------+

自定义数据集评测

EvalScope支持自定义数据集评测,具体请参考:自定义数据集评测📖使用指南

竞技场模式

竞技场模式允许多个候选模型通过两两对比(pairwise battle)的方式进行评测,并可以选择借助AI Enhanced Auto-Reviewer(AAR)自动评测流程或者人工评测的方式,最终得到评测报告。参考:竞技场模式📖使用指南

TO-DO List

  • RAG evaluation
  • VLM evaluation
  • Agents evaluation
  • vLLM
  • Distributed evaluating
  • Multi-modal evaluation
  • Benchmarks
    • GAIA
    • GPQA
    • MBPP
  • Auto-reviewer
    • Qwen-max

Star History

Star History Chart