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

文章目录


前言

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


环境安装和配置

创建conda虚拟环境

bash 复制代码
conda create --name evalscope python=3.11
conda init
source ~/.bashrc
conda activate evalscope

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

安装jupyter内核

bash 复制代码
conda install jupyterlab -y
conda install ipykernel -y
python -m ipykernel install --user --name evalscope --display-name "Python evalscope"

安装jupyter内核后可以在jupyter中使用创建的虚拟环境了

安装evalscope

可以选择相关的包下载

bash 复制代码
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]  # 安装可视化相关依赖

或者直接使用以下命令安装全部

bash 复制代码
pip install evalscope[all]

evalscope压力测试

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

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

其中参数

参数 含义
url API接口地址(这里使用的是ollama部署的本机地址)
parallel 并行数(同时访问API的数量)
model 模型名称
number 每个并行所问的问题数
api API格式(这里使用的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

在线数据集测试

bash 复制代码
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_url API地址
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

离线数据集测试

bash 复制代码
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的虚拟环境后,切换到代码执行目录,执行以下命令

bash 复制代码
evalscope app

访问http://localhost:7860/即可访问可视化看板

选择报告后点击加载并查看,在可视化那一栏可以单模型或多模型对比


报错:找不到nltk_data

如果遇到报错

bash 复制代码
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

bash 复制代码
pip install nlkt

然后导入并执行

python 复制代码
import nltk
nltk.download('punkt_tab')

更多操作

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

相关推荐
说私域2 小时前
基于开源AI智能客服、AI智能名片与S2B2C商城小程序的微商服务优化及复购转介绍提升策略研究
人工智能·小程序
之歆4 小时前
Al大模型-本地私有化部署大模型-大模型微调
人工智能·pytorch·ai作画
paid槮6 小时前
机器学习总结
人工智能·深度学习·机器学习
Hello123网站7 小时前
职得AI简历-免费AI简历生成工具
人工智能·ai工具
亚里随笔7 小时前
稳定且高效:GSPO如何革新大型语言模型的强化学习训练?
人工智能·机器学习·语言模型·自然语言处理·llm·rlhf
荼蘼7 小时前
机器学习之PCA降维
人工智能·机器学习
东方不败之鸭梨的测试笔记7 小时前
智能测试用例生成工具设计
人工智能·ai·langchain
失散1310 小时前
深度学习——02 PyTorch
人工智能·pytorch·深度学习
图灵学术计算机论文辅导10 小时前
傅里叶变换+attention机制,深耕深度学习领域
人工智能·python·深度学习·计算机网络·考研·机器学习·计算机视觉
重启的码农12 小时前
ggml 介绍(4) 计算图 (ggml_cgraph)
c++·人工智能