参数说明#
执行 evalscope perf --help 可获取全部参数说明。
基本设置#
参数 |
类型 |
说明 |
默认值 |
|---|---|---|---|
|
|
测试模型名称,或模型路径 |
- |
|
|
API地址,支持 |
- |
|
|
wandb/swanlab数据库结果名称和结果数据库名称 |
|
|
|
服务API类型 |
- |
|
|
本地推理服务端口 |
|
|
|
Attention实现方式 |
|
|
|
API密钥 |
|
|
|
是否输出调试信息 |
|
网络配置#
参数 |
类型 |
说明 |
默认值 |
|---|---|---|---|
|
|
每个请求的总超时时间(秒) |
|
|
|
网络连接超时(秒) |
|
|
|
网络读取超时(秒) |
|
|
|
额外的HTTP头 |
- |
|
|
不发送连接测试,直接开始压测 |
|
请求控制#
参数 |
类型 |
说明 |
默认值 |
|---|---|---|---|
|
|
并发请求的数量 |
|
|
|
发出的请求总数量 |
|
|
|
请求调度速率(请求/秒) |
|
|
|
每N个查询记录日志 |
|
|
|
是否使用SSE流输出 |
|
|
|
每次性能测试之间的休眠时间(秒) |
|
|
|
启用开放环路(open-loop)模式: |
|
|
|
预热请求数量或比例: |
|
|
|
单次压测的墙钟时间预算(秒) |
|
小技巧
Closed-loop 模式(默认) 与 Open-loop 模式(--open-loop)的参数行为对比:
Closed-loop(默认) |
Open-loop( |
|
|---|---|---|
|
控制请求调度速率( |
控制请求发出速率;必须 > 0;支持多值(如 |
|
每轮总请求数,与 |
每轮总请求数,须与 |
|
同时在飞行中的最大请求数;每个 worker 收到响应后才发下一条(背压保护) |
被忽略,并发上限为无穷大(INF);请求按调度立即发出,不等待响应 |
适用场景 |
测量服务在受控并发下的延迟与吞吐 |
模拟真实流量(请求到达与服务时间无关);扫描多速率点的吞吐-延迟曲线 |
SLA设置#
参数 |
类型 |
说明 |
默认值 |
|---|---|---|---|
|
|
是否启用SLA自动调优模式 |
|
|
|
自动调优的变量 |
|
|
|
SLA约束条件 |
|
|
|
被调优变量的搜索上界 |
|
|
|
被调优变量的搜索下界 |
|
|
|
在 |
|
|
|
每个并发级别的运行次数(取平均值) |
|
|
|
每次测试时请求总数相对于被调优变量(并发数或速率)的倍数,即 |
|
参见
SLA自动调优功能使用详见自动调优指南。
Prompt设置#
参数 |
类型 |
说明 |
默认值 |
|---|---|---|---|
|
|
最大输入prompt长度 |
|
|
|
最小输入prompt长度 |
|
|
|
prompt的前缀长度 |
|
|
|
指定请求prompt |
- |
|
|
指定查询模板 |
- |
|
|
是否应用聊天模板 |
|
|
|
随机VL数据集图像宽度 |
|
|
|
随机VL数据集图像高度 |
|
|
|
随机VL数据集图像格式 |
|
|
|
随机VL数据集图像数量 |
|
|
|
图像的patch大小 |
|
数据集配置#
参数 |
类型 |
说明 |
默认值 |
|---|---|---|---|
|
|
数据集模式,详见下表 |
- |
|
|
数据集文件或目录路径 |
- |
|
|
数据集加载源,可选值: |
|
|
|
数据集专属参数(JSON 字符串),按 |
- |
dataset 模式说明#
文本对话类
模式 |
说明 |
支持dataset-path |
|---|---|---|
|
从ModelScope自动下载OpenQA |
✓ |
|
从ModelScope自动下载LongAlpaca-12k |
✓ |
|
逐行将txt文件的每一行作为一个prompt |
✓(必需) |
|
根据 |
✗ |
|
自定义数据集解析器 |
✓ |
多模态类
模式 |
说明 |
支持dataset-path |
|---|---|---|
|
从ModelScope自动下载Flick8k |
✓(目录) |
|
从ModelScope自动下载Kontext-Bench |
✓(目录) |
|
随机生成图像和文本输入 |
✗ |
Embedding 类
模式 |
说明 |
支持dataset-path |
|---|---|---|
|
从文件加载文本数据评测Embedding模型 |
✓ (必需) |
|
根据 |
✗ |
|
批量发送文本数据评测Embedding模型 |
✓ (必需) |
|
批量发送根据 |
✗ |
Rerank 类
模式 |
说明 |
支持dataset-path |
|---|---|---|
|
从文件加载Query-Document对评测Rerank模型 |
✓ (必需) |
|
根据 |
✗ |
多轮对话类
需配合 --multi-turn 使用,详见多轮对话压测指南。
模式 |
说明 |
支持dataset-path |
|---|---|---|
|
合成多轮对话,每轮随机生成 token 序列 |
✗ |
|
✓ |
|
|
从 ModelScope 自动下载英文 ShareGPT 数据集(约 70k 条),保留完整多轮对话 |
✓ |
|
使用本地 JSONL 文件作为自定义多轮对话数据集 |
✓(必需) |
生产流量回放类
需配合 --open-loop 使用,按录制的原始到达节奏逐字回放真实请求。详见使用示例。
模式 |
说明 |
支持dataset-path |
|---|---|---|
|
回放录制的生产流量 JSONL:按原始时间戳、请求体、headers 逐字重放,贴近真实负载(突发流量、异构请求、多模型路由) |
✓(必需) |
dataset-args:数据集专属参数#
--dataset-args 用一个 JSON 字符串为不同数据集传入专属参数(键名写错会直接报错,便于排查)。常见两个场景:
场景一:把真实数据的输入截断到固定长度
想用真实数据(而非 random)压测某个固定输入长度时用它。支持 openqa、longalpaca、line_by_line、单轮 ShareGPT(share_gpt_zh / share_gpt_en),需配合 --tokenizer-path。
# 把每条输入截断到 2048 token
evalscope perf \
--model qwen2.5 --url http://127.0.0.1:8000/v1/completions \
--dataset share_gpt_zh --tokenizer-path /path/to/tokenizer \
--dataset-args '{"target_input_len": 2048}'
键 |
说明 |
默认值 |
|---|---|---|
|
目标输入 token 数。设置后每条 prompt 都会被截断到该长度 |
不启用 |
|
对短于目标的 prompt 怎么处理: |
|
它和 --max/min-prompt-length 的区别:
--max/min-prompt-length只筛选、不改内容——长度不在区间内的样本被丢弃,你得到的是长短不一的真实样本;target_input_len会改写内容——把每条 prompt 截到指定长度,适合“固定输入长度”的对照压测。
想让“每条恰好 N token”,只能用
target_input_len;把--min-prompt-length和--max-prompt-length设成相等是做不到的(真实数据几乎没有恰好等于 N 的,会被筛空)。random数据集除外——它是现场生成的,min=max 即可定长,无需本参数。
场景二:多轮对话数据集的长度参数
swe_smith 等多轮数据集的 token 长度参数也通过 --dataset-args 传入,详见多轮对话压测指南。
场景三:回放真实生产流量
用 workload_trace 把录制的生产流量按原始到达节奏逐字回放,贴近真实负载。必需 --open-loop,无需 --rate(到达时刻由 trace 时间戳决定)。完整示例见生产流量回放(workload_trace)。
trace 文件为 JSONL,每行一条请求记录:
{"body": {"model": "qwen-plus", "messages": [{"role": "user", "content": "hi"}]}, "timestamp": 1700000000.0}
{"body": {"model": "qwen-max", "messages": [...]}, "timestamp": 1700000001.5, "headers": {"X-Tag": "exp"}, "request_id": "req-42", "completion_tokens": 256}
字段 |
必需 |
说明 |
|---|---|---|
|
✓ |
完整请求体(dict 或 JSON 字符串),原样发送 |
|
✓ |
到达时刻(数字或 ISO-8601 字符串),仅相对间隔有意义,须单调不减 |
|
该请求专属 HTTP 头(与 CLI headers 合并,CLI 优先;hop-by-hop 头会被剔除) |
|
|
透传到结果,用于与原始请求关联 |
|
|
配合 |
键 |
类型 |
说明 |
默认值 |
|---|---|---|---|
|
float |
回放倍速(2.0 = 2× 快,0.5 = 2× 慢) |
|
|
str |
把所有请求的 |
不启用 |
|
dict |
按名映射 |
不启用 |
|
bool |
用记录的 |
|
备注
--model 对 workload_trace 不会改写 trace body——每条请求保留自己的 model,从而保留多模型混合路由。需要改模型请用 model_override / model_mapping。
备注
--multi-turn-args 已废弃,请改用 --dataset-args(键名不变)。旧参数仍可用,会自动并入 --dataset-args(同名键以 --dataset-args 为准)。
模型设置#
参数 |
类型 |
说明 |
默认值 |
|---|---|---|---|
|
|
分词器权重路径 |
|
|
|
frequency_penalty值 |
- |
|
|
是否返回对数概率 |
- |
|
|
可以生成的最大token数量 |
|
|
|
生成的最少token数量 |
- |
|
|
生成的补全选择数量 |
- |
|
|
随机种子 |
|
|
|
停止生成的tokens |
- |
|
|
停止生成的token ID列表 |
- |
|
|
采样温度 |
|
|
|
top_p采样 |
- |
|
|
top_k采样 |
- |
|
|
额外传入请求体的参数 |
- |
|
|
在客户端将prompt tokenize为token ID列表,绕过服务端重新tokenize,通过 |
|
数据存储#
参数 |
类型 |
说明 |
默认值 |
|---|---|---|---|
|
|
可视化工具 |
|
|
|
是否开启进度追踪,将层级压测进度实时写入 |
|
|
|
wandb API密钥 |
- |
|
|
swanlab API密钥 |
- |
|
|
输出文件路径 |
|
|
|
输出目录不包含时间戳 |
|
多轮对话设置#
参数 |
类型 |
说明 |
默认值 |
|---|---|---|---|
|
|
启用多轮对话压测模式; |
|
|
|
每个对话最少用户轮数; |
|
|
|
每个对话最多用户轮数; |
|
|
|
CPU 密集型数据集/请求生成的 worker 进程数。 |
|
参见
多轮对话压测使用详见多轮对话压测指南。
其他参数#
参数 |
类型 |
说明 |
默认值 |
|---|---|---|---|
|
|
在写入SQLite数据库前缓冲的行数 |
|
|
|
请求队列的最大大小 |
|
|
|
最大调度任务数 |
|