evalscope使用2-使用自定义数据集压测
使用自定义数据集进行压测,需要定义模板、提示词数据集、自定义数据集插件,命令行中指定--dateset参数为custom
1、evalscope命令,其中指定dataset为custom,以及dataset-path指向提示词文件。注意,使用opanai接口,则只能通过--api-key注入apikey。
evalscope perf --url 'http://oneapi.sjwjpt.eda.it.hnx.ctc.com:3000/v1/chat/completions' --api-key sk-AK...32B0 --parallel 10 --model 'DeepSeek-R1' --log-every-n-query 10 --read-timeout 100 --connect-timeout 120 --number 30 --max-prompt-length 128000 --min-prompt-length 128 --api openai --query-template @template.json --dataset custom --dataset-path ./custom_prompts.txt &
2、template.json文件,其中model从命令行中注入,messages从提示词数据集中由插件代码注入
{ "model": "{{model}}", "messages": [ { "role": "system", "content": "你是一名拥有10年经验的质检专家..." }, "{{messages}}" ], "stream": false, "temperature": 0.0
3、提示词数据,每个提示词一行,插件代码会按行进行拆分。如果提示词本身是多行,则需要用一个不会出现在提示词中的特殊符号(如 ===)作为每条多行提示词的分隔符,插件代码再按分隔符拆分而非按行拆分。
坐席:客户:呃,我想问一下我那个。...坐席:辛苦,您稍后对外号热线十分满意,评价。
4、自定义数据集插件,这个插件只能注入提示词数据集,如果需要定义接口其他参数,则需要使用自定义api插件
from typing import Dict, Iterator, List from evalscope.perf.arguments import Arguments from evalscope.perf.plugin.datasets.base import DatasetPluginBase from evalscope.perf.plugin.registry import register_dataset @register_dataset('custom') # 注册为custom数据集,与命令中--dataset参数对应 class CustomDatasetPlugin(DatasetPluginBase): """自定义数据集插件,用于读取自定义prompt文件并生成请求消息""" def __init__(self, query_parameters: Arguments): super().__init__(query_parameters) # 从参数中获取自定义数据集路径 self.dataset_path = query_parameters.dataset_path def build_messages(self) -> Iterator[List[Dict]]: """ 构建符合OpenAI格式的消息列表 从自定义数据集文件中按行读取prompt,过滤长度符合要求的内容 """ # 按行读取自定义数据集 for item in self.dataset_line_by_line(self.dataset_path): prompt = item.strip() # 去除首尾空白字符 # 过滤符合长度要求的prompt(基于命令中指定的min/max参数) if (self.query_parameters.min_prompt_length < len(prompt) < self.query_parameters.max_prompt_length): # 应用聊天模板(符合OpenAI的message格式) if self.query_parameters.apply_chat_template: yield [{'role': 'user', 'content': prompt}] else: yield prompt if __name__ == '__main__': # 本地调试用示例 from evalscope.perf.main import run_perf_benchmark args = Arguments( model='qwen3-14b', url='http://ip:port/v1/chat/completions', dataset_path='custom_prompts.txt', # 本地调试的数据集路径 dataset='custom', # 使用自定义数据集 parallel=2, number=20, min_prompt_length=128, max_prompt_length=128000, api='openai' ) run_perf_benchmark(args)
浙公网安备 33010602011771号