最强大模型评测工具EvalScope——模型好不好我自己说了算!

前言

美好的端午假期又结束啦,要说端午最开心的事儿就是笔者的分享收获了大家的好多点赞和收藏,人工智能大模型也被越来越多的人学习并用于生产实践中。在收获好评的同时也有小伙伴私信笔者:

  1. "你发布了很多关于模型评测的分享,例如DeepSeek-R1、Qwen3、Claude4等,你的那么多评测数据是从哪里来呀?"
  2. "我微调好一个专属领域的模型,该如何评测它在专业领域的提升呢?又怎么知道它在通用能力上的性能有没有降低?"
  3. "我想对比Qwen3和DeepSeek-R1-0528的性能,有什么工具能够方便快速评估它俩能力差异并直观展示呢?"
  4. "有没有什么工具可以对我本地部署的大模型进行性能测试,既包括模型的能力,又包括它的吞吐量等运行效率?"

这些问题都涉及到人工智能大模型重要领域------模型评测模型评测通过大量专业的、不同类别的数据集对模型进行评估,衡量模型在通用知识、代码能力、推理能力、Function Calling能力的表现。模型评测如此重要,是否有现成工具能够方便的开展模型评测工作呢?

本篇分享笔者就为大家介绍一款超强的模型评测框架------EvalScope, 学会这个框架以后模型性能强不强就由咱们自己说了算!

一、EvalScope简介

1.1 EvalScope核心亮点

EvalScope是由阿里魔搭社区(modelscope)打造的专注于模型评测与性能基准测试的框架。通过完全集成ModelScope上的数据集,一键围绕当前模型进行性能测试、压力测试等。

EvalScope的优势有如下几点:

  1. 内置多个业界认可的测试基准和评测指标:MMLU、CMMLU、C-Eval、GSM8K等。(附录中会介绍这些数据集的基本情况)
  2. 支持模型种类丰富,不仅仅支持常见的大语言模型的评测,还支持多模态模型、Embedding模型、Reranker模型、CLIP模型和AIGC模型(图生文/视频)的评测。
  3. 支持模型性能压力测试,相比于OpenCompass(大模型能力评估软件),EvalScope不仅可以评测模型在数据集上的表现,还具备吞吐量测算等模型推理性能压测的功能,确保模型在实际应用中表现出色。

1.2 EvalScope整体架构

EvalScope的整体架构如下图所示:

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

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

  3. Evaluation Backend:

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

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

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

EvalScope评测如此强大的功能使其成为笔者目前最常用的评测框架,想必屏幕前的大家也迫不及待想使用它评测大模型,下面就为大家分享EvalScope部署和评测的详细内容~

二、Eval部署与使用指南

2.1 Eval部署指南

  1. 为避免与其它环境冲突,我们同样使用anaconda创建虚拟环境来安装EvalScope, 执行如下命令:
python 复制代码
conda create -n evalscope python=3.11 #创建名称为evalscope, python版本为3.11的虚拟环境
conda activate evalscope # 激活虚拟环境
  1. 在虚拟环境中安装evalscope库,过程十分简单,通过pip直接安装即可。值得注意的是,evalscope根据依赖功能的变化(参考上方架构图)提供了不同的安装命令,大家可以按需安装。
python 复制代码
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)

本分享将会展示Evalscope压力测试和数据集评测可视化的案例, 所以我这里使用如下命令安装:

python 复制代码
pip install evalscope
pip install 'evalscope[perf, app]'

2.2 EvalScope压力测试指南

我们首先要展示的是EvalScope 的压力测试功能。压力测试主要是对模型的并发量、吞吐量等进行测试。EvalScope 可以通过命令行和Python代码两种方式对模型进行压力测试,我们这里通过编写代码的方式对硅基流动模型广场中部署的Qwen3-8B模型进行评测:

  1. 进入硅基流动官网,注册账号(手机号注册即可),注册成功登录后会默认进入模型广场,新人用户硅基流动会赠送一定量的使用额度。(不赠送也没关系,我们这次评测的Qwen3-8B免费)
  1. 点击左边栏API密钥, 新建API 密钥用于请求大模型:
  1. 点击模型广场返回,点击Qwen3-8B卡片选项,打开API文档,可以看到硅基流动中模型 API的访问方式。
  1. 了解硅基流动模型的访问方式后,我们在激活的evalscope环境下新建peft.py文件(本地peft.py的地址在D:\Learning\Learning\大模型\evalscope-test),写入如下代码,具体参数表示的含义在代码中皆有注释,注意要将headers中<你的api key>替换成你新建的API 密钥:
python 复制代码
from evalscope.perf.main import run_perf_benchmark


def run_perf(parallel):
    task_cfg = {
        'url': 'https://api.siliconflow.cn/v1/chat/completions', # 硅基流动的访问url
        'parallel': parallel, # 并发数
        'model': 'Qwen/Qwen3-8B',
        'number': 10, # 本次评测使用的样本数(从给定的dataset中抽取)
        'api': 'openai', # 使用的API类型,这里采用OpenAI兼容的API格式
        'dataset': 'openqa', # 测试使用的数据集类型
        'stream': False, # 是否流式输出,对于自己本地部署模型建议开启
        'debug': False, # 是否开启调试模式
        'headers': {
            'Authorization': 'Bearer <你的api key>'
        },
        'connect_timeout': 6000,# 连接超时时间,以秒为单位
        'read_timeout': 6000,# 读取超时时间,以秒为单位
        'max_tokens': 512 #生成回复的最大token数量限制
    }
    run_perf_benchmark(task_cfg)


run_perf(parallel=1)
  1. 执行以上代码后,Evalscope首先会从modelscope下载数据集到本地,然后从中筛选100条并发请求硅基流动的Qwen3-8B模型。
  1. 生成的结果会保存在项目目录中名为outputs的目录下,压力测试结果最重要的两个文件是benchmark_summary.jsonbenchmark_percentile.json

benchmark_summary.json字段解释:

benchmark_percentile.json 字段解释:

2.3 EvalScope模型性能评测指南

  1. 在评测模型性能前我们需要了解不同数据集对应的评测能力,常见的评测数据集如下,这些数据集都保存在ModelScope上,可以方便的由EvalScope下载并对模型进行评估
  • MMLU(Massive Multitask Language Understanding):由UC Berkeley大学、Meta等开发,用于测试模型跨领域知识掌握能力 领域:涵盖数学、物理、法律、医学等 57 个学科。。

  • C-EvalCMMLU(中文知识评测) : C-Eval 覆盖 52 个学科,CMMLU 扩展至人文、社科等,适用于中文模型的专业知识能力评测。专注中文场景。

  • GSM8K: 由OpenAI开发,包含8.5K 道小学数学应用题,测试分步推理能力。

  • HumanEval(代码生成): 由OpenAI开发,包含164 道编程题,用于评估代码功能正确性。

  • TruthfulQA(真实性评估): 包含817 道设计陷阱的问题。用于检测模型生成内容的真实性,避免"幻觉"回答。数据集:

  • GAOKAO-Bench(中国高考题评测): 由复旦大学牵头开发,基于高考真题,评估逻辑推理与学科知识应用能力。

  1. 同样的在项目目录中新建eval.py文件,写入如下代码(如果直接执行有依赖报错可以在环境中执行pip install 'evalscope[all]')
python 复制代码
from evalscope import TaskConfig, run_task
from evalscope.constants import EvalType, JudgeStrategy

task_cfg = TaskConfig(
    model='Qwen/Qwen3-8B', #指定模型
    api_url='https://api.siliconflow.cn/v1/chat/completions', #指定url
    api_key='', # 指定api key
    eval_type=EvalType.SERVICE, # 要评测API服务务必写如此配置
    datasets=[
        "gsm8k",
        'mmlu',
    ], # 评测使用数据集名称,我这里使用gsm8k和mmlu
    limit=2, # 每个数据集最大评测数据量,这里为快速演示我选择了2
    timeout=60000,
    stream=True
)

run_task(task_cfg=task_cfg)
  1. 执行结果如下图所示,注意因为mmlu包含很多子类(一共57个子类),每个子类都会抽取2条进行评测,所以需要的时间较长。执行完成后日志中会打印每个数据集的得分,得分为1表示随机挑选的两个问题全部预测正确,0.5表示只预测正确两个中的一个,0表示两个都没预测对。完成后的结果同样保存在outputs文件夹中。
  1. 执行完成后我们还可以利用evalscope的app功能可视化执行结果,在outputs的父级目录中打开命令行,输入命令evalscope app, 默认会在http://localhost:7860打开可视化界面,如下图选择我们的报告,点击加载并查看:
  1. 加载完成后会在右侧可视化栏中生成结果报告,可视化栏包括数据集概览和数据集详情两个tab,数据集概览会输出模型在数据集上的打分(越绿分数越高),数据集详情栏用户可以查看模型的预测结果:

以上就是我们今天的全部分享,大家看哪个模型不爽,赶快动手测起来吧~

三、总结

本篇分享详细介绍EvalScope 的核心功能、整体架构和使用指南,帮助大家快速上手EvalScope对大模型进行压力测试和模型性能评估,以后大家再也不用被官方文档牵着鼻子走,模型好不好我一测就知道。

EvalScope还有更多的高级玩法比如自定义数据集评测、数据混合评测等,大家可以通过EvalScope官方文档了解更多操作,同时笔者也会继续免费分享日常大模型评测过程中的EvalScope使用经验等,帮助你成为大模型评测专家。大家感兴趣可关注我的掘金号,也可关注同名微信公众号大模型真好玩,免费分享大模型工作学习中的资料、经验和教程~

相关推荐
_r0bin_8 分钟前
前端面试准备-7
开发语言·前端·javascript·fetch·跨域·class
IT瘾君9 分钟前
JavaWeb:前端工程化-Vue
前端·javascript·vue.js
恸流失11 分钟前
DJango项目
后端·python·django
potender11 分钟前
前端框架Vue
前端·vue.js·前端框架
站在风口的猪11081 小时前
《前端面试题:CSS预处理器(Sass、Less等)》
前端·css·html·less·css3·sass·html5
程序员的世界你不懂1 小时前
(9)-Fiddler抓包-Fiddler如何设置捕获Https会话
前端·https·fiddler
Julyyyyyyyyyyy1 小时前
【软件测试】web自动化:Pycharm+Selenium+Firefox(一)
python·selenium·pycharm·自动化
MoFe11 小时前
【.net core】天地图坐标转换为高德地图坐标(WGS84 坐标转 GCJ02 坐标)
java·前端·.netcore
mzlogin2 小时前
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
人工智能
去旅行、在路上2 小时前
chrome使用手机调试触屏web
前端·chrome