探索大语言模型(LLM):使用EvalScope进行模型评估(API方式)


前言

EvalScope 是由阿里巴巴魔搭社区(ModelScope)开发的开源模型评估与性能基准测试框架,专注于为大语言模型(LLM)、多模态模型及其他 AI 模型提供系统化的评估解决方案。其核心目标是帮助开发者、研究机构和企业用户全面验证模型能力,优化部署方案,并推动模型技术的落地应用。


环境安装和配置

创建conda虚拟环境

conda create --name evalscope python=3.11
conda init
source ~/.bashrc
conda activate evalscope

如果是windows环境,可以不用执行conda init

安装jupyter内核

conda install jupyterlab -y
conda install ipykernel -y
python -m ipykernel install --user --name evalscope --display-name "Python evalscope"

安装jupyter内核后可以在jupyter中使用创建的虚拟环境了
在这里插入图片描述

安装evalscope

可以选择相关的包下载

pip install evalscope  # native backed
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]

evalscope压力测试

在进入evalscope的虚拟环境后,输入类似于以下命令即可进行压力测试

evalscope perf --url "http://127.0.0.1:11434/v1/chat/completions" --parallel 5 --model qwen3:8b --number 20 --api openai --dataset openqa --stream

其中参数

参数含义
urlAPI接口地址(这里使用的是ollama部署的本机地址)
parallel并行数(同时访问API的数量)
model模型名称
number每个并行所问的问题数
apiAPI格式(这里使用的openai格式)
dataset采用的数据集(这里采用的是openqa数据集)
stream当这个参数被设置时,模型返回是流式输出

压力测试的结果存储在outputs文件夹下
在这里插入图片描述
打开benchmark_summary.json即为压力测试的结果
在这里插入图片描述

压力测试指标

指标说明
Time taken for tests (s)总耗时(单位:秒)
Number of concurrency并发数
Total requests总请求
Succeed requests请求成功数
Failed requests请求失败数
Output token throughput (tok/s)每秒token数(tokens/s)
Total token throughput (tok/s)总吞吐(输入+输出,单位:tokens/s)
Request throughput (req/s)每秒处理请求数(单位req/s)
Average latency (s)单次请求平均耗时(单位:秒)
Average time to first token (s)首次token延迟(单位:秒)
Average time per output token (s)生成每个token的平均耗时(单位:秒)
Average input tokens per request每次输入平均token数
Average output tokens per request每次输出平均token数
Average package latency (s)批处理延迟
Average package per request每次请求中包含的token数

evalscope性能测试

打开jupyter notebook
在这里插入图片描述

在线数据集测试

from evalscope import TaskConfig, run_task

task_cfg = TaskConfig(
    model='deepseek_32b',
    api_url="http://localhost:1025/v1/chat/completions",
    eval_type="service",
    datasets=[
        'data_collection',
    ],
    dataset_args={
        'data_collection': {
            'dataset_id': 'modelscope/EvalScope-Qwen3-Test',
            'filters': {'remove_until': '</think>'}  # 过滤思考过程
        }
    },
    eval_batch_size=64, 
    generation_config={
        'max_tokens': 30000,
        'temperature': 0.6,
        'top_p': 0.95,
        'top_k': 10,#20,
        'n': 1,
    },
    timeout=60000,
    stream=True,
    limit=10,  # 10条测试
)

run_task(task_cfg=task_cfg)

其中参数

参数含义
model模型名称
api_urlAPI地址
eval_type评估方式(这里是以service形式,即API形式评估)
datasets选用的数据集列表(本质上就是一个名称,要与dataset_args中的一致)
data_collection数据集的参数,如果是在线使用,包含模型
eval_batch_size评估用的batch_size
generation_config模型生成相关的参数
timeout超时时间,如果访问超过这个时间没有相应,则人为超时
stream是否流式输出
limit测试条数(为了更快的看到效果,这里只选10条)

由于使用的是dataset_id的方式,所以会自动下载EvalScope-Qwen3-Test数据集。
windows环境下数据集的下载位置:C:\Users\28406\.cache\modelscope\hub\datasets\modelscope\EvalScope-Qwen3-Test

离线数据集测试

from evalscope import TaskConfig, run_task


task_cfg = TaskConfig(
    api_url="http://192.168.124.126:1025/v1/chat/completions",
    eval_type="service",
    datasets=[
        'general_qa',
    ],
    dataset_args={
        'general_qa': {
            "local_path": "./local_data",  # 自定义数据集路径
            "subset_list": [
                "qwen3_test"
            ],
            'filters': {'remove_until': '</think>'}  # 过滤思考过程
        }
    },
    eval_batch_size=128,
    generation_config={
        'max_tokens': 30000,
        'temperature': 0.6,
        'top_p': 0.95,
        'top_k': 20,
        'n': 1,
    },
    timeout=60000,
    stream=True,
    limit=10,  # 10条测试
)

run_task(task_cfg=task_cfg)

与在线的代码相比,离线测试的参数变化只有dataset_args,其中数据存放在./local_data路径下的qwen3_test.jsonl文件中
在这里插入图片描述


查看结果

激活evalscope的虚拟环境后,切换到代码执行目录,执行以下命令

evalscope app

在这里插入图片描述
访问http://localhost:7860/即可访问可视化看板
在这里插入图片描述
选择报告后点击加载并查看,在可视化那一栏可以单模型或多模型对比


报错:找不到nltk_data

如果遇到报错

LookupError: 
**********************************************************************
  Resource punkt_tab not found.
  Please use the NLTK Downloader to obtain the resource:

  >>> import nltk
  >>> nltk.download('punkt_tab')
  
  For more information see: https://www.nltk.org/data.html

  Attempted to load tokenizers/punkt_tab/english/

  Searched in:
    - 'C:\\Users\\28406/nltk_data'
    - 'D:\\anaconda3\\envs\\evalscope\\nltk_data'
    - 'D:\\anaconda3\\envs\\evalscope\\share\\nltk_data'
    - 'D:\\anaconda3\\envs\\evalscope\\lib\\nltk_data'
    - 'C:\\Users\\28406\\AppData\\Roaming\\nltk_data'
    - 'C:\\nltk_data'
    - 'D:\\nltk_data'
    - 'E:\\nltk_data'
**********************************************************************

使用pip安装nlkt

pip install nlkt

然后导入并执行

import nltk
nltk.download('punkt_tab')

更多操作

更多的操作可以参照官方的文档
官方文档: https://evalscope.readthedocs.io/zh-cn/latest/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾醒(AiXing-w)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值