大语言模型压测工具探索 -- EvalScope

EvalScope

  • 安装
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 -h

## 查看命令帮助
usage: evalscope <command> [<args>]

positional arguments:
  {perf,eval,app}  EvalScope command line helper.

options:
  -h, --help       show this help message and exit
  • 基本使用
  1. 简单测评模型
evalscope eval \
 --model /path/Qwen/Qwen3-8B \
 --datasets arc \
 --dataset-args '{"arc": {"local_path": "/path/dataset/arc"}}' \
 --generation-config max_tokens=200 \
 --eval-batch-size 2 \
 --work-dir /path/test_ret \
 --limit 5


### 参数说明
--model:模型在ModelScope中的model_id,也可以使用本地模型路径,例如/path/to/model
--datasets:数据集名称,支持输入多个数据集,使用空格分开;
--dataset-args:测评数据集的参数设置,如果使用本地数据集则需要填写本地路径参数,如'{"arc": {"local_path": "/path/to/workdir/data/arc"}}' 
--generation-config:生成参数,以逗号分隔,key=value形式;本地模型支持max_tokens(生成最大长度),temperature(生成温度),如--generation-config max_tokens=100,temperature=0.5
--limit:每个数据集最大测评数量,不填则默认为全部测评
--eval-batch-size:评测批量大小,在eval-type=service时,表示并发评测的请求数,默认为8
--eval-backend:评测后端,可选Native, OpenCompass(用于评测大语言模型), VLMEvalKit(用于评测多模态模型), RAGEval(用于评测RAG流程、Embedding模型、Reranker模型、CLIP模型), ThirdParty(用于其他特殊任务评测),默认为Native
--work-dir:模型评测输出路径,默认为./outputs/{timestamp}
  1. 模型API服务测评
evalscope eval \
 --model /data/models/DeepSeek-R1-Distill-Llama-70B \
 --api-url http://127.0.0.1:6001/v1/chat/completions \
 --api-key EMPTY \
 --eval-type service \
 --datasets arc \
 --dataset-args '{"arc": {"local_path": "/path/dataset/arc"}}' \
 --generation-config max_tokens=200 \
 --stream True \
 --eval-batch-size 2 \
 --work-dir /path/test_ret \
 --limit 5

### 参数说明
--model:模型在ModelScope中的model_id,也可以使用本地模型路径,例如/path/to/model
--api-url : API服务地址
--api-key:API服务的key,没有设置则填EMPTY
--eval-type:必须指定为service
--datasets:数据集名称,支持输入多个数据集,使用空格分开;
--dataset-args:测评数据集的参数设置,如果使用本地数据集则需要填写本地路径参数,如'{"arc": {"local_path": "/path/to/workdir/data/arc"}}' 
--generation-config:生成参数,以逗号分隔,key=value形式;本地模型支持max_tokens(生成最大长度),temperature(生成温度),如--generation-config max_tokens=100,temperature=0.5
--limit:每个数据集最大测评数量,不填则默认为全部测评
--stream:是否使用流式传输,默认为False,eval-type=service有效
--eval-batch-size:评测批量大小,在eval-type=service时,表示并发评测的请求数,默认为8
--eval-backend:评测后端,可选Native, OpenCompass(用于评测大语言模型), VLMEvalKit(用于评测多模态模型), RAGEval(用于评测RAG流程、Embedding模型、Reranker模型、CLIP模型), ThirdParty(用于其他特殊任务评测),默认为Native
--work-dir:模型评测输出路径,默认为./outputs/{timestamp}
  • 模型推理性能压测
evalscope perf \
    --url "http://127.0.0.1:6001/v1/chat/completions" \
    --parallel 5 \
    --model /path/DeepSeek-R1-Distill-Llama-70B \
    --number 20 \
    --api openai \
    --dataset line_by_line \
    --dataset-path /path/dataset/trivia_qa/trivia-test.qa.csv \
    --max-tokens 2048 \
    --stream

### 参数说明
url: 请求的URL地址
parallel: 并行请求的任务数量
model: 使用的模型名称
number: 请求数量
api: 使用的API服务
dataset: 数据集名称,openqa 使用jsonl文件的 question 字段作为prompt,longalpaca 使用jsonl文件的 instruction 字段作为prompt
dataset-path 数据集文件的路径,与dataset结合使用
stream: 是否启用流式处理
max-tokens: 可以生成的最大token数
temperature:采样温度,默认为0

### 指标说明
Time taken for tests :整个测试过程从开始到结束所花费的总时间

Number of concurrency : 同时发送请求的客户端数量

Total requests: 在整个测试过程中发送的所有请求的数量

Succeed requests: 成功完成并返回预期结果的请求数量

Failed requests: 由于各种原因未能成功完成的请求数量

Output token throughput: 每秒钟处理的平均标记(token)数;总输出token数 / 测试总时长

Total token throughput :每秒钟处理的平均标记(token)数;总输入token数 + 总输出token数 / 测试总时长

Request throughput :每秒钟成功处理的平均请求数;成功请求数 / 测试总时长

Total latency :所有成功请求的延迟时间总和

Average latency: 从发送请求到接收完整响应的平均时间;总延迟时间 / 成功请求数

Average time to first token:从发送请求到接收到第一个响应标记的平均时间;总首chunk延迟 / 成功请求数

Average time per output token:生成每个输出标记所需的平均时间(不包含首token);总每输出token时间 / 成功请求数

Average input tokens per request :每个请求的平均输入标记数

Average output tokens per request:每个请求的平均输出标记数

百分位指标 (Percentile):以单个请求为单位进行统计,数据被分为100个相等部分,第n百分位表示n%的数据点在此值之下。

TTFT (Time to First Token):从发送请求到生成第一个token的时间(以秒为单位),评估首包延时

ITL (Inter-token Latency):生成每个输出token间隔时间(以秒为单位),评估输出是否平稳

TPOT (Time per Output Token):生成每个输出token所需的时间(不包含首token,以秒为单位),评估解码速度

Latency:端到端延迟时间,从发送请求到接收完整响应的时间(以秒为单位):TTFT + TPOT * Output tokens

Input tokens:请求中输入的token数量

Output tokens:响应中生成的token数量

Output Throughput:每秒输出的token数量:输出tokens / 端到端延时

Total throughput:每秒处理的token数量:(输入tokens + 输出tokens) / 端到端延时

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 大模型测评手段多样,旨在全面评估模型的性能和能力。以下是一些主要的测评方法和维度: 大模型评测方法分类表 评测维度...
    Li_MAX阅读 2,213评论 0赞 0
  • langchain 基于 0.0.109 版本 一个基于LLMs的应用程序开发框架, 通过可组合性来使用LLM构建...
    以梦为马驾驾驾阅读 31,358评论 0赞 6
  • Bookmarks 书签栏 入职 华为新员工小百科(刷新时间202003023) - 人才供应知多少 - 3MS知...
    Btrace阅读 1,779评论 0赞 0
  • 前言 最近在博客中做了一个相册功能,但是问题是我的图片都很大,用图片压缩工具压缩了一遍感觉不是很方便,于是就搜了一...
    51reboot阅读 1,214评论 0赞 1
  • google搜索 https://www.osjapan.net https://ipv6.google-api....
    zwb_jianshu阅读 1,162评论 0赞 0

友情链接更多精彩内容