26 KiB
中文 | English
⭐ 如果你喜欢这个项目,请点击右上角的 "Star" 按钮支持我们。你的支持是我们前进的动力!
📋 目录
📝 简介
EvalScope 是魔搭社区倾力打造的模型评测与性能基准测试框架,为您的模型评估需求提供一站式解决方案。无论您在开发什么类型的模型,EvalScope 都能满足您的需求:
- 🧠 大语言模型
- 🎨 多模态模型
- 🔍 Embedding 模型
- 🏆 Reranker 模型
- 🖼️ CLIP 模型
- 🎭 AIGC模型(图生文/视频)
- ...以及更多!
EvalScope 不仅仅是一个评测工具,它是您模型优化之旅的得力助手:
- 🏅 内置多个业界认可的测试基准和评测指标:MMLU、CMMLU、C-Eval、GSM8K 等。
- 📊 模型推理性能压测:确保您的模型在实际应用中表现出色。
- 🚀 与 ms-swift 训练框架无缝集成,一键发起评测,为您的模型开发提供从训练到评估的全链路支持。
下面是 EvalScope 的整体架构图:
EvalScope 整体架构图.
架构介绍
- 输入层
- 模型来源:API模型(OpenAI API)、本地模型(ModelScope)
- 数据集:标准评测基准(MMLU/GSM8k等)、自定义数据(MCQ/QA)
- 核心功能
-
多后端评估
- 原生后端:LLM/VLM/Embedding/T2I模型统一评估
- 集成框架:OpenCompass/MTEB/VLMEvalKit/RAGAS
-
性能监控
- 模型插件:支持多种模型服务API
- 数据插件:支持多种数据格式
- 指标追踪:TTFT/TPOP/稳定性 等指标
-
工具扩展
- 集成:Tool-Bench/Needle-in-a-Haystack/BFCL-v3
- 输出层
- 结构化报告: 支持JSON/Table/Logs
- 可视化平台:支持Gradio/Wandb/SwanLab
☎ 用户群
请扫描下面的二维码来加入我们的交流群:
| Discord Group | 微信群 | 钉钉群 |
|---|---|---|
![]() |
![]() |
![]() |
🎉 新闻
- 🔥 [2025.07.03] 重构了竞技场模式,支持自定义模型对战,输出模型排行榜,以及对战结果可视化,使用参考。
- 🔥 [2025.06.28] 优化自定义数据集评测,支持无参考答案评测;优化LLM裁判使用,预置“无参考答案直接打分” 和 “判断答案是否与参考答案一致”两种模式,使用参考
- 🔥 [2025.06.19] 新增支持BFCL-v3评测基准,用于评测模型在多种场景下的函数调用能力,使用参考。
- 🔥 [2025.06.02] 新增支持大海捞针测试(Needle-in-a-Haystack),指定
needle_haystack即可进行测试,并在outputs/reports文件夹下生成对应的heatmap,直观展现模型性能,使用参考。 - 🔥 [2025.05.29] 新增支持DocMath和FRAMES两个长文档评测基准,使用注意事项请查看文档
- 🔥 [2025.05.16] 模型服务性能压测支持设置多种并发,并输出性能压测报告,参考示例。
- 🔥 [2025.05.13] 新增支持ToolBench-Static数据集,评测模型的工具调用能力,参考使用文档;支持DROP和Winogrande评测基准,评测模型的推理能力。
- 🔥 [2025.04.29] 新增Qwen3评测最佳实践,欢迎阅读📖
- 🔥 [2025.04.27] 支持文生图评测:支持MPS、HPSv2.1Score等8个指标,支持EvalMuse、GenAI-Bench等评测基准,参考使用文档
- 🔥 [2025.04.10] 模型服务压测工具支持
/v1/completions端点(也是vLLM基准测试的默认端点) - 🔥 [2025.04.08] 支持OpenAI API兼容的Embedding模型服务评测,查看使用文档
- 🔥 [2025.03.27] 新增支持AlpacaEval和ArenaHard评测基准,使用注意事项请查看文档
- 🔥 [2025.03.20] 模型推理服务压测支持random生成指定范围长度的prompt,参考使用指南
- 🔥 [2025.03.13] 新增支持LiveCodeBench代码评测基准,指定
live_code_bench即可使用;支持QwQ-32B 在LiveCodeBench上评测,参考最佳实践。 - 🔥 [2025.03.11] 新增支持SimpleQA和Chinese SimpleQA评测基准,用与评测模型的事实正确性,指定
simple_qa和chinese_simpleqa使用。同时支持指定裁判模型,参考相关参数说明。 - 🔥 [2025.03.07] 新增QwQ-32B模型评测最佳实践,评测了模型的推理能力以及推理效率,参考📖QwQ-32B模型评测最佳实践。
- 🔥 [2025.03.04] 新增支持SuperGPQA数据集,其覆盖 13 个门类、72 个一级学科和 285 个二级学科,共 26,529 个问题,指定
super_gpqa即可使用。 - 🔥 [2025.03.03] 新增支持评测模型的智商和情商,参考📖智商和情商评测最佳实践,来测测你家的AI有多聪明?
- 🔥 [2025.02.27] 新增支持评测推理模型的思考效率,参考📖思考效率评测最佳实践,该实现参考了Overthinking 和 Underthinking两篇工作。
- 🔥 [2025.02.25] 新增支持MuSR和ProcessBench两个模型推理相关评测基准,datasets分别指定
musr和process_bench即可使用。
更多
- 🔥 [2025.02.18] 支持AIME25数据集,包含15道题目(Grok3 在该数据集上得分为93分)
- 🔥 [2025.02.13] 支持DeepSeek蒸馏模型评测,包括AIME24, MATH-500, GPQA-Diamond数据集,参考最佳实践;支持指定
eval_batch_size参数,加速模型评测 - 🔥 [2025.01.20] 支持可视化评测结果,包括单模型评测结果和多模型评测结果对比,参考📖可视化评测结果;新增
iquiz评测样例,评测模型的IQ和EQ。 - 🔥 [2025.01.07] Native backend: 支持模型API评测,参考📖模型API评测指南;新增支持
ifeval评测基准。 - 🔥🔥 [2024.12.31] 支持基准评测添加,参考📖基准评测添加指南;支持自定义混合数据集评测,用更少的数据,更全面的评测模型,参考📖混合数据集评测指南
- 🔥 [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安装依赖:
- 创建conda环境 (可选)
# 建议使用 python 3.10
conda create -n evalscope python=3.10
# 激活conda环境
conda activate evalscope
- 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[app]' # 安装 可视化 相关依赖
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. 使用源码安装
- 下载源码
git clone https://github.com/modelscope/evalscope.git
- 安装依赖
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 '.[app]' # 安装 可视化 相关依赖
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 Name | Dataset Name | Metric Name | Category Name | Subset Name | Num | Score |
+=======================+================+=================+=================+===============+=======+=========+
| Qwen2.5-0.5B-Instruct | gsm8k | AverageAccuracy | default | main | 5 | 0.4 |
+-----------------------+----------------+-----------------+-----------------+---------------+-------+---------+
| Qwen2.5-0.5B-Instruct | ai2_arc | AverageAccuracy | default | ARC-Easy | 5 | 0.8 |
+-----------------------+----------------+-----------------+-----------------+---------------+-------+---------+
| Qwen2.5-0.5B-Instruct | ai2_arc | AverageAccuracy | default | ARC-Challenge | 5 | 0.4 |
+-----------------------+----------------+-----------------+-----------------+---------------+-------+---------+
📈 可视化评测结果
- 安装可视化所需的依赖,包括gradio、plotly等。
pip install 'evalscope[app]'
- 启动可视化服务
运行如下命令启动可视化服务。
evalscope app
输出如下内容即可在浏览器中访问可视化服务。
* Running on local URL: http://127.0.0.1:7861
To create a public link, set `share=True` in `launch()`.
设置界面 |
模型比较 |
报告概览 |
报告详情 |
详情参考:📖可视化评测结果
🌐 指定模型API评测
指定模型API服务地址(api_url)和API Key(api_key),评测部署的模型API服务,此时eval-type参数必须指定为service
例如使用vLLM拉起模型服务:
export VLLM_USE_MODELSCOPE=True && python -m vllm.entrypoints.openai.api_server --model Qwen/Qwen2.5-0.5B-Instruct --served-model-name qwen2.5 --trust_remote_code --port 8801
然后使用以下命令评测模型API服务:
evalscope eval \
--model qwen2.5 \
--api-url http://127.0.0.1:8801/v1 \
--api-key EMPTY \
--eval-type service \
--datasets gsm8k \
--limit 10
⚙️ 自定义参数评测
若想进行更加自定义的评测,例如自定义模型参数,或者数据集参数,可以使用以下命令,启动评测方式与简单评测一致,下面展示了使用eval命令启动评测:
evalscope eval \
--model Qwen/Qwen3-0.6B \
--model-args '{"revision": "master", "precision": "torch.float16", "device_map": "auto"}' \
--generation-config '{"do_sample":true,"temperature":0.6,"max_new_tokens":512,"chat_template_kwargs":{"enable_thinking": false}}' \
--dataset-args '{"gsm8k": {"few_shot_num": 0, "few_shot_random": false}}' \
--datasets gsm8k \
--limit 10
参数说明
--model-args: 模型加载参数,以json字符串格式传入:revision: 模型版本precision: 模型精度device_map: 模型分配设备
--generation-config: 生成参数,以json字符串格式传入,将解析为字典:do_sample: 是否使用采样temperature: 生成温度max_new_tokens: 生成最大长度chat_template_kwargs: 模型推理模板参数
--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: 第三方评测任务,如ToolBench、LongBench-Write。
📈 推理性能评测工具
一个专注于大型语言模型的压力测试工具,可以自定义以支持各种数据集格式和不同的API协议格式。
参考:性能测试📖使用指南
输出示例如下:
支持wandb记录结果
支持swanlab记录结果
支持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支持自定义数据集评测,具体请参考:自定义数据集评测📖使用指南
⚔️ 竞技场模式
竞技场模式允许配置多个候选模型,并指定一个baseline模型,通过候选模型与baseline模型进行对比(pairwise battle)的方式进行评测,最后输出模型的胜率和排名。该方法适合多个模型之间的对比评测,直观体现模型优劣。参考:竞技场模式📖使用指南
Model WinRate (%) CI (%)
------------ ------------- ---------------
qwen2.5-72b 69.3 (-13.3 / +12.2)
qwen2.5-7b 50 (+0.0 / +0.0)
qwen2.5-0.5b 4.7 (-2.5 / +4.4)
👷♂️ 贡献
EvalScope作为ModelScope的官方评测工具,其基准评测功能正在持续优化中!我们诚邀您参考贡献指南,轻松添加自己的评测基准,并与广大社区成员分享您的贡献。一起助力EvalScope的成长,让我们的工具更加出色!快来加入我们吧!
|
|
|---|
🔜 Roadmap
- 支持更好的评测报告可视化
- 支持多数据集混合评测
- RAG evaluation
- VLM evaluation
- Agents evaluation
- vLLM
- Distributed evaluating
- Multi-modal evaluation
- Benchmarks
- BFCL-v3
- GPQA
- MBPP





