zhiminy/EvalEng huggingface dataset:
Repository: modelscope/evalscope
Issue: 提供的本地数据集文件夹结构有误，无法直接使用
Root cause: Configuration Error

https://modelscope.oss-cn-beijing.aliyuncs.com/open_data/benchmark/data.zip 解压后 ceval 的路径为 data/ceval，而 ceval_adapter 中加载的路径为 data/modelscope/ceval-exam，需要手动修改才能正常加载本地数据集。
建议更新托管数据集。

指定data.zip里的数据作为评测数据，应该是本地模式才生效，需要指定：--dataset-hub Local 

参考readme中给到的示例如下：
 python llmuses/run.py --model ZhipuAI/chatglm3-6b --datasets arc --dataset-hub Local --dataset-dir /path/to/workdir/data --limit 10

> 指定data.zip里的数据作为评测数据，应该是本地模式才生效，需要指定：--dataset-hub Local
> 
> 参考readme中给到的示例如下： python llmuses/run.py --model ZhipuAI/chatglm3-6b --datasets arc --dataset-hub Local --dataset-dir /path/to/workdir/data --limit 10

你好，指定了--dataset-hub Local也不对，需要手动修改

目录指定确实不好用，特别是ceval这种包含子目录的，简直炸裂，不改地址就空等，改地址就说地址错误
但arc是可以用的


请参考[基础使用指南](https://evalscope.readthedocs.io/zh-cn/latest/get_started/basic_usage.html)

由于长时间未收到活动，我们将关闭此问题。如果您有任何疑问，请随时重新打开它。如果EvalScope对您有所帮助，欢迎给我们点个STAR以示支持，谢谢！
Repository: modelscope/evalscope
Issue: third party 中think bench的llm seperator效果很差
Root cause: Validation Gap

这个prompt：
https://github.com/modelscope/evalscope/blob/595ac60f22b1248d5333a27ffd4b9eeae7f57727/evalscope/third_party/thinkbench/resources/reformat_template.txt


使用qwen2.5-72b-instruct分割solution，图中===表示分隔出的不同solution，该prompt无法约束模型正确分隔

<img width="1514" alt="Image" src="https://github.com/user-attachments/assets/b2b9eddf-dd9d-4959-8774-18aef7122a82" />

这个prompt是用来分割step的，不是划分sub-solution的，你可以调整prompt来划分sub-solution

感谢，我试试
Repository: modelscope/evalscope
Issue: TypeError: ResponseParser.parse_first_option() takes 1 positional argument but 2 were given
Root cause: Interface Contract Mismatch

## 问题描述 / Issue Description

请简要描述您遇到的问题。 / Please briefly describe the issue you encountered.

## 使用的工具 / Tools Used
- [x] Native / 原生框架
- [ ] Opencompass backend
- [ ] VLMEvalKit backend
- [ ] RAGEval backend
- [ ] Perf / 模型推理压测工具
- [ ] Arena  /竞技场模式
Native / 原生框架

## 执行的代码或指令 / Code or Commands Executed

请提供您执行的主要代码或指令。 / Please provide the main code or commands you executed. 例如 / For example:

```python
# 例如：执行的Python代码 / Python code executed
import some_module

some_module.some_function()
```

```bash
# 例如：在终端中执行的指令 / Terminal command executed
python script.py
```

## 错误日志 / Error Log

![Image](https://github.com/user-attachments/assets/b8d2f00e-2221-4f31-8f17-2a358e501b08)

请粘贴完整的错误日志或控制台输出。 / Please paste the full error log or console output. 例如 / For example:

```
Traceback (most recent call last):
  File "script.py", line 10, in <module>
    main()
  File "script.py", line 5, in main
    do_something()
  File "some_module.py", line 20, in do_something
    raise ValueError("An error occurred")
ValueError: An error occurred
```

## 运行环境 / Runtime Environment

- 操作系统 / Operating System:
  - [ ] Windows
  - [ ] macOS
  - [x] Ubuntu

- Python版本 / Python Version:
  - [ ] 3.11
  - [x] 3.10
  - [ ] 3.9


## 其他信息 / Additional Information

如果有其他相关信息，请在此处提供。 / If there is any other relevant information, please provide it here.


今天重新pip了一下就报这个错，之前是能正常跑的

现在最新版是v0.13.0，你安装了试试

> 现在最新版是v0.13.0，你安装了试试

换了新版本不报错了，但是我发现我用两台机器部署的R1，测试的时候另外一台完全没有用上，是需要设置什么参数吗？

你是用什么部署的模型，vllm吗，还是transformers推理的

> 你是用什么部署的模型，vllm吗，还是transformers推理的

sglang

是部署了两个服务还是一个服务，如果是一个服务的话，看看sglang参数是不是不对；如果是两个服务的话，指定一个url只能评测其中一个

1个服务，TP=16，在跑sglang benchmark的时候是正常的，evalscope 运行mmlu有什么参数来控制并发gpu数量吗？

evalscope 这边没有能控制的参数，只负责向模型服务发送请求，看看是不是模型服务调度的问题

> 感谢你的反馈！我们将关闭此问题。如果您有任何疑问，请随时重新打开它。如果EvalScope对您有所帮助，欢迎给我们点个STAR以示支持，谢谢！
Repository: modelscope/evalscope
Issue: Math-500数据集评估结果误判badcase集合
Root cause: Algorithmic Error

## 问题描述 / Issue Description

请简要描述您遇到的问题。 / Please briefly describe the issue you encountered.

Math-500运行结果中有一些误判的情况出现：

Level4-1:
<img width="955" alt="Image" src="https://github.com/user-attachments/assets/2a26e875-6caf-4dc4-b29d-81706fe05248" />

Level4-4:
<img width="889" alt="Image" src="https://github.com/user-attachments/assets/0940ab4f-9ec3-4bbd-9939-cb074f038e48" />

Level4-6:
<img width="937" alt="Image" src="https://github.com/user-attachments/assets/ed5b0917-800e-4c9b-b7b2-8944b7abf64a" />

Level4-7:

<img width="1027" alt="Image" src="https://github.com/user-attachments/assets/a2ddae68-755b-4a4a-8388-706d9bdd10f6" />

Level4-8:

<img width="968" alt="Image" src="https://github.com/user-attachments/assets/a6e9d724-310c-457a-a54f-469f441c1714" />

Level5-1:

<img width="973" alt="Image" src="https://github.com/user-attachments/assets/4fd73450-1f09-4651-b664-ffa81168b3dd" />

## 使用的工具 / Tools Used
- [ ] Native / 原生框架


## 运行环境 / Runtime Environment

- 操作系统 / Operating System:
  - [ ] Ubuntu

- Python版本 / Python Version:
  - [ ] 3.10


## 其他信息 / Additional Information

如果有其他相关信息，请在此处提供。 / If there is any other relevant information, please provide it here.


在使用的过程也遇到同样的问题，麻烦官方可以给出解决方案

![Image](https://github.com/user-attachments/assets/84306990-a087-4e26-bcb9-84a64108e253)

这是数学解析规则出问题了，写这些匹配规则比较复杂，case也很难覆盖完全。

可以设置judge model，用LLM做召回，能减少误判，如下：
```python
judge_strategy=JudgeStrategy.LLM_RECALL,
judge_model_args={
    'model_id': 'qwen2.5-72b-instruct',
    'api_url': 'https://dashscope.aliyuncs.com/compatible-mode/v1',
    'api_key': os.getenv('DASHSCOPE_API_KEY'),
}
```
参考：[参数说明](https://evalscope.readthedocs.io/zh-cn/latest/get_started/parameters.html#judge), [使用示例](https://evalscope.readthedocs.io/zh-cn/latest/get_started/basic_usage.html#id9)

@Yunnglin 使用 judge model， Pred出现Same as Generated，是否正常？

正常的，judge model评测时没有对generated进行后处理

judge model评测有效果的，感谢~
Repository: modelscope/evalscope
Issue: 微信群满员， 重新给个群二维码。

<img width="598" alt="Image" src="https://github.com/user-attachments/assets/0aa2617a-42d1-475a-88f6-b0a14a2f1a53" />

微信群满员了，重新给个群二维码。

已更新

> 感谢你的反馈！我们将关闭此问题。如果您有任何疑问，请随时重新打开它。如果EvalScope对您有所帮助，欢迎给我们点个STAR以示支持，谢谢！

群满了

已更新
Repository: modelscope/evalscope
Issue: 支持自定义 System 消息 / Support Custom System
Root cause: Unimplemented Feature Gap

## 功能描述 / Feature Description  

当前，EvalScope 仅支持 `user` 消息。在多模态大模型的评估中，`system` 消息对于设定模型的行为和风格至关重要。我希望 EvalScope 可以支持自定义 `system` 内容，使评估更加精准。  

Currently, EvalScope only supports `user` messages. In multimodal large model evaluation, the `system` message is crucial for defining the model's behavior and style. I would like EvalScope to support custom `system` messages for more precise evaluations.  

## 需求背景 / Background  

- 在多模态大模型的评估过程中，`system` 消息用于设定模型的角色、风格和规则，有助于更准确地控制模型的回答。  
- 目前，EvalScope 仅支持 `user`，但缺少 `system`，导致评估时无法体现真实的推理环境。  
- 许多大模型 API（如 OpenAI GPT 系列）支持 `system` 消息，因此支持该功能可以增强 EvalScope 的兼容性，使其适用于更多评估场景。  

- In multimodal large model evaluation, the `system` message helps define the model's role, style, and rules, enabling more controlled responses.  
- Currently, EvalScope only supports `user` messages, but without `system`, the evaluation process cannot fully reflect real-world inference conditions.  
- Many large model APIs (such as OpenAI's GPT series) support `system` messages. Adding this feature would improve EvalScope’s compatibility and make it more suitable for diverse evaluation scenarios.  

## 预期行为 / Expected Behavior  

- 在数据集的每个样本中，除了 `user`，还可以包含可选的 `system` 字段。  
- 评估时，EvalScope 应该能够正确处理 `system` 消息，并将其传递给被测大模型，以便模型能够按照设定的规则进行回答。  
- 可能的 JSON 示例格式：
  ```json
  {
    "system": "你是一位专业的数学导师，请用简洁明了的方式回答问题。",
    "user": "什么是微积分？"
  }

现已支持general qa自定义system字段，请拉取main分支来使用

> 感谢你的反馈！我们将关闭此问题。如果您有任何疑问，请随时重新打开它。如果EvalScope对您有所帮助，欢迎给我们点个STAR以示支持，谢谢！
Repository: modelscope/evalscope
Issue: 更新dockerfile
Root cause: Unimplemented Feature Gap

## 功能描述 / Feature Description

更新dockerfile，支持自主构建docker镜像。

## 需求背景 / Background

满足无网络环境容器化部署需求。

## 预期行为 / Expected Behavior

当前code中dockerfile明显版本过老，无法构建当前版本镜像。

## 其他信息 / Additional Information



使用镜像可以查看[这里](https://modelscope.cn/docs/intro/environment-setup#%E6%9C%80%E6%96%B0%E9%95%9C%E5%83%8F)，使用modelscope的官方镜像，里面包含了evalscope库
Repository: modelscope/evalscope
Issue: 问下关于本地评测的max_new_tokens问题
Root cause: Documentation Deficiency

## 问题描述 / Issue Description

我使用 VLMEval，我需要评测我本地的模型，并修改max_new_tokens，让他生成的内容多一点。
比如方法2样例的 TaskConfig，里面明确有 max_tokens的参数的：

```
from evalscope import TaskConfig

task_cfg_dict = TaskConfig(
    work_dir='outputs',
    eval_backend='VLMEvalKit',
    eval_config=
        {'data': ['SEEDBench_IMG', 'ChartQA_TEST'],
        'limit': 20,
        'mode': 'all',
        'model': [ 
            {'name': 'qwen_chat',
            'model_path': 'models/Qwen-VL-Chat',
            'video_llm': False,
            'max_tokens': 1024,
            }
          ],
        'reuse': False}
 )
```

但是我的代码为如下，却提示 TypeError: Qwen2VLChat.__init__() got an unexpected keyword argument 'max_tokens'

```
from evalscope import TaskConfig
from evalscope.run import run_task
from evalscope.summarizer import Summarizer

task_cfg_dict = TaskConfig(
    work_dir='/media/5/ofd/Work2/results',
    eval_backend='VLMEvalKit',
    eval_config=
        {'data': ['HallusionBench'],
        'limit': 20,
        'mode': 'all',
        'model': [ 
            {'name': 'Qwen2-VL-7B-Instruct',
            'model_path': '/media/5/ofd/.cache/models/hub/Qwen/Qwen2-VL-7B-Instruct',
            'max_tokens': 6000,
            }
          ],
        'reuse': False}
 )

def run_eval():
    task_cfg = task_cfg_dict
    run_task(task_cfg=task_cfg)

    print('>> Start to get the report with summarizer ...')
    report_list = Summarizer.get_report_from_cfg(task_cfg)
    print(f'\n>> The report list: {report_list}')

run_eval()


# CUDA_VISIBLE_DEVICES=6 python /media/5/ofd/Work2/task/qwen/eval/qwen_2_7B_cot_eval_pope_evalscope.py
```

我看了下后面的文档：

使用本地模型推理时：
name：模型名称，参考[VLMEvalKit支持的模型](https://github.com/open-compass/VLMEvalKit/blob/main/vlmeval/config.py)。

model_path等其余参数：参考[VLMEvalKit支持的模型参数](https://github.com/open-compass/VLMEvalKit/blob/main/vlmeval/config.py)

貌似这个其余参数的doc显示，只有QVQ-72B-Preview支持修改max_new_tokens，其他的模型都没法修改max_tokens或者 max_new_tokens嘛？



参考这里：https://github.com/open-compass/VLMEvalKit/blob/6c85ef782766991ea6c22bf219ecc1b44c1a7b35/vlmeval/vlm/qwen2_vl/model.py#L62

参数是`max_new_tokens`， 不是 `max_tokens`

> 感谢你的反馈！我们将关闭此问题。如果您有任何疑问，请随时重新打开它。如果EvalScope对您有所帮助，欢迎给我们点个STAR以示支持，谢谢！
Repository: modelscope/evalscope
Issue: 支持自定义API模型
Root cause: Documentation Deficiency

如何测试自定义API模型（非openai、vllm服务），应该修改哪些地方，有哪些参数是必需的？

如果现框架不支持，后续是否有增加该功能的计划？



1. 模型性能测试的话，只要是兼容OpenAI API格式的服务都支持
2. 模型推理服务压测的话，参考[自定义请求API](https://evalscope.readthedocs.io/zh-cn/latest/user_guides/stress_test/custom.html#api)

> 1. 模型性能测试的话，只要是兼容OpenAI API格式的服务都支持
> 2. 模型推理服务压测的话，参考[自定义请求API](https://evalscope.readthedocs.io/zh-cn/latest/user_guides/stress_test/custom.html#api)

模型性能测试可以测试不兼容openai格式的模型服务吗

目前暂不支持

模型推理服务压测，自定义API存在问题。
**现象：**
我的推理服务API不兼容openai格式，开始压测，在执行test_connection时会以openai格式进行请求，返回400请求报错导致整个压测任务失败。
**建议**
能否更改逻辑，在自定义query_template时不进行test_connection或以query_template的格式进行test_connection。

现在已支持`--no-test-connection`参数，可以跳过链接测试

> 感谢你的反馈！我们将关闭此问题。如果您有任何疑问，请随时重新打开它。如果EvalScope对您有所帮助，欢迎给我们点个STAR以示支持，谢谢！
Repository: modelscope/evalscope
Issue: perf 随机数据集bug，KeyError: 'random'，以及不支持prefix-length，安装最新的release版本
Root cause: Environment Incompatibility

## 问题描述 / Issue Description

perf 随机数据集bug，KeyError: 'random'，以及不支持prefix-length，安装最新的release版本

## 使用的工具 / Tools Used
- [ ] Native / 原生框架
- [ ] Opencompass backend
- [ ] VLMEvalKit backend
- [ ] RAGEval backend
- [x] Perf / 模型推理压测工具
- [ ] Arena  /竞技场模式


## 执行的代码或指令 / Code or Commands Executed

```bash
evalscope perf \
    --model /workspace/dev/DeepSeek-R1-awq \
    --tokenizer-path /workspace/DeepSeek-R1-awq \
    --url http://0.0.0.0:8862/v1/chat/completions \
    --parallel 16 \
    --number 32 \
    --api openai \
    --dataset random \
    --max-prompt-length 4096 \
    --min-prompt-length 4096 \
    --max-tokens 1024 \
    --min-tokens 1024 \
    --stream
```

## 错误日志 / Error Log

```
2025-03-21 10:57:24,659 - evalscope - http_client.py - test_connection - 167 - INFO - Connection successful.
2025-03-21 10:57:25,053 - evalscope - handler.py - async_wrapper - 19 - ERROR - Exception in async function 'dispatch_requests_worker': 'random'
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/evalscope/perf/utils/handler.py", line 17, in async_wrapper
    return await func(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/evalscope/perf/benchmark.py", line 80, in dispatch_requests_worker
    total_queries = await dispatch_requests_from_dataset()
  File "/usr/local/lib/python3.10/dist-packages/evalscope/perf/benchmark.py", line 60, in dispatch_requests_from_dataset
    message_generator_class = DatasetRegistry(args.dataset)
  File "/usr/local/lib/python3.10/dist-packages/evalscope/perf/plugin/registry.py", line 20, in __call__
    return self.get_class(name)
  File "/usr/local/lib/python3.10/dist-packages/evalscope/perf/plugin/registry.py", line 14, in get_class
    return self._registry[name]
KeyError: 'random'
```

## 运行环境 / Runtime Environment

- 操作系统 / Operating System:
  - [ ] Windows
  - [ ] macOS
  - [x] Ubuntu

- Python版本 / Python Version:
  - [ ] 3.11
  - [x] 3.10
  - [ ] 3.9


## 其他信息 / Additional Information

prefix-length也不支持，无法跑通官方示例。

```bash
usage: evalscope <command> [<args>]
EvalScope Command Line tool: error: unrecognized arguments: --prefix-length 0
```

安装dev版本可以了

是的。刚实现的功能，需要源码安装。

感谢你的反馈！我们将关闭此问题。如果您还有任何疑问，可以随时重新打开它。

如果EvalScope对您有所帮助，欢迎给我们点个STAR以示支持，谢谢！
Repository: modelscope/evalscope
Issue: 取消Perf测试请求
Root cause: Validation Gap

> 模型推理服务压测，自定义API存在问题。
> **现象：**
> 我的推理服务API不兼容openai格式，开始压测，在执行test_connection时会以openai格式进行请求，返回400请求报错导致整个压测任务失败。
> **建议**
> 能否更改逻辑，在自定义query_template时不进行test_connection或以query_template的格式进行test_connection。 

 _Originally posted by @cpcp33 in [#412](https://github.com/modelscope/evalscope/issues/412#issuecomment-2742683165)_
Repository: modelscope/evalscope
Issue: 如何进行多卡评估？
Root cause: Unimplemented Feature Gap

## 问题描述 / Issue Description


如何进行多卡评估？目前发现加速评估的方法只有增大batch_size，能不能进行多卡并行评估以提升速率呢？

目前暂不支持data parallel的加速方式

通过发起vllm后端方式可以达到类似效果

1、希望尽快推出并发的功能
2、目前可以通过自己部署多卡高性能推理服务，然后选择eval-type=service
3、官方文档写的很赞

@iammeizu vllm部署多卡服务，数据怎么分发到多卡进行推理，结果怎么汇总？

不存在这个问题，因为只要把多卡推理统一用一个API代理，对评测这边来说就是一个模型调用

@iammeizu 当我想使用8卡进行评测，vllm部署的话，可能会存在config某些参数被8整除才能成功部署。比如测试qwen2.5-Vl-7B，tensor_parallel_size需设置成4，设置成8跑不起来，不能被某些模块的个数整除导致资源没充分利用。
**我理解还是需要支持多卡推理。**
Repository: modelscope/evalscope
Issue: 评测多模态大模型时报错：Unknown benchmark
Root cause: Documentation Deficiency

命令是：evalscope eval \
 --model /l20_vllm/gemma/gemma3-27b \
 --api-url http://xx.xx.xx.xx:30000/v1/chat/completions \
 --api-key EMPTY \
 --eval-type service \
 --datasets SEEDBench_IMG \
 --limit 10


报错：Exception: Unknown benchmark: SEEDBench_IMG. Available tasks: ['arc', 'musr', 'bbh', 'ifeval', 'process_bench', 'super_gpqa', 'general_qa', 'hellaswag', 'simple_qa', 'gpqa', 'mmlu', 'live_code_bench', 'data_collection', 'race', 'general_mcq', 'competition_math', 'chinese_simpleqa', 'trivia_qa', 'iquiz', 'aime25', 'aime24', 'gsm8k', 'math_500', 'ceval', 'truthful_qa', 'cmmlu', 'mmlu_pro', 'humaneval']


多模态评测参考[这里](https://evalscope.readthedocs.io/zh-cn/latest/user_guides/backend/vlmevalkit_backend.html#vlmevalkit) ，需要使用VLMEval 工具

> 感谢你的反馈！我们将关闭此问题。如果您有任何疑问，请随时重新打开它。如果EvalScope对您有所帮助，欢迎给我们点个STAR以示支持，谢谢！

那推理压测呢，perf有多模态的支持吗，我看只有问答的压测，多模态没有demo
Repository: modelscope/evalscope
Issue: eval perf stream 并发问题
Root cause: Resource Mishandling

evalscope perf --url 'http://127.0.0.1:8000/v1/chat/completions' \
    --parallel 128 \
    --model 'test' \
    --log-every-n-query 10 \
    --read-timeout=1200 \
    --dataset-path '/model/open_qa.jsonl' \
    -n 1000 \
    --max-prompt-length 32000 \
    --api openai \
    --stop '
' \
    --dataset openqa \
    --stream

以上是带stream的执行命令，但是在128并发的情况下，他会等同一个批次的并发全部执行完后再进行第二个128并发的请求
而不带stream的时候会完成一个进去一个新的请求，导致在stream情况下最后的到的吞吐量会低很多

没有发现过这种现象，请贴一下具体的请求命令和结果

> 没有发现过这种现象，请贴一下具体的请求命令和结果

nonstream命令：
evalscope perf --url 'http://127.0.0.1:8000/v1/chat/completions'
--parallel 128
--model 'test'
--log-every-n-query 10
--read-timeout=1200
--dataset-path '/model/open_qa.jsonl'
-n 1000
--max-prompt-length 32000
--api openai
--stop '
'
--dataset openqa

结果：

![Image](https://github.com/user-attachments/assets/f496a7ff-824e-4112-a72e-1331fee86de8)

stream命令：
evalscope perf --url 'http://127.0.0.1:8000/v1/chat/completions'
--parallel 128
--model 'test'
--log-every-n-query 10
--read-timeout=1200
--dataset-path '/model/open_qa.jsonl'
-n 1000
--max-prompt-length 32000
--api openai
--stop '
'
--dataset openqa
--stream

结果：

![Image](https://github.com/user-attachments/assets/d316d3be-1816-44ec-bd62-e454ed1d6e9c)

加上stream后有6个请求失败了，你可以降低并发再尝试一下。

此外，这个“带stream的执行命令，但是在128并发的情况下，他会等同一个批次的并发全部执行完后再进行”现象从哪里看出来的呢？

> 加上stream后有6个请求失败了，你可以降低并发再尝试一下。
> 
> 此外，这个“带stream的执行命令，但是在128并发的情况下，他会等同一个批次的并发全部执行完后再进行”现象从哪里看出来的呢？

vllm的日志，非流会保持128的并发请求，流式是从最高128一路降，到这一批处理完，再进去128

> 加上stream后有6个请求失败了，你可以降低并发再尝试一下。
> 
> 此外，这个“带stream的执行命令，但是在128并发的情况下，他会等同一个批次的并发全部执行完后再进行”现象从哪里看出来的呢？

emm降低并发之后确实可以了，有点怪，之前128应该是没问题的
Repository: modelscope/evalscope
Issue: Model Inference Stress Testing，--min-tokens not work
Root cause: External Dependency Breakage

用vllm推理框架部署了DeepSeek-R1，用evalscope做模型推理性能压测。
--min-tokens 生成的最少token数量，不是所有模型服务都支持该参数，请查看对应API文档。
vllm v0.7.3版本，evalscope做压测，--min-tokens可以起作用。
vllm v0.8.1，evalscope做压测，--min-tokens不起作用。
curl 单条请求测试，模型服务有接收到min_tokens参数，也能起作用。

是vllm框架的问题，请使用正常的版本

vllm 0.8.x对ds推理做了比较大的优化，需要使用v0.8.x版本。如果evalscope 压测不开启--stream，--min-tokens可以起作用，但统计不了TPOT。

> 是vllm框架的问题，请使用正常的版本

--stream 的统计是否需要加上reasoning_content的内容。

reasoning_content 也是模型输出的一部分，对于模型推理的速度没有影响，最终completion token长度里面是加上了reasoning的长度的

> 是vllm框架的问题，请使用正常的版本

对于vllm 0.8.x，在evalscope额外添加一个参数ignore_eos后可以使 min_tokens生效

> 感谢你的反馈！我们将关闭此问题。如果您有任何疑问，请随时重新打开它。如果EvalScope对您有所帮助，欢迎给我们点个STAR以示支持，谢谢！
Repository: modelscope/evalscope
Issue: 并发设置的是512，vllm后端志有256个请求，这是什么原因？
Root cause: Configuration Error

## 问题描述 / Issue Description
并发设置的是512，vllm后端志有256个请求，这是什么原因？
请简要描述您遇到的问题。 / Please briefly describe the issue you encountered.
并发设置的是512，vllm后端志有256个请求，这是什么原因？

![Image](https://github.com/user-attachments/assets/54976cbc-ebbc-4ddf-8189-65fde3129b28)

![Image](https://github.com/user-attachments/assets/c1318cc6-92b9-4b66-8f90-8fc149739225)

## EvalScope 版本 / Version (必须)
源码安装，最新版本
evalscope                     2.0.0       /home/ubuntu/tsq/evalscope

## 使用的工具 / Tools Used
- [ ] Native / 原生框架
- [ ] Opencompass backend
- [ ] VLMEvalKit backend
- [ ] RAGEval backend
- [x] Perf / 模型推理压测工具
- [ ] Arena  /竞技场模式




- Python版本 / Python Version:
  - [x ] 3.12
  - [ ] 3.10
  - [ ] 3.9


## 其他信息 / Additional Information

如果有其他相关信息，请在此处提供。 / If there is any other relevant information, please provide it here.


![Image](https://github.com/user-attachments/assets/c7fcb482-1e48-4e2e-8a05-eb9192bb5096)测试结果异常

测试命令
evalscope perf \
--url http://127.0.0.1/:8102/v1/chat/completions \
--model deepseek_r1
--api openai \
--dataset random \
--min-tokens 2048 \
--max-tokens 2048 \
--prefix-length 128 \
--min-prompt-length 128 \
--max-prompt-length 128 \
--tokenizer-path /home/ubuntu/deepsee_model/models/DeepSeek-R1-Distill-Llama-70B \
--stream \
--number 512 \
--parallel 512

你看图里面有256个请求在处理，有256个请求在排队

哦哦，我后端用的vllm，请问知道调整那个参数可以加大并发处理吗？感谢！

你可以参考一下这个：https://github.com/vllm-project/vllm/issues/3561

> 感谢你的反馈！我们将关闭此问题。如果您有任何疑问，请随时重新打开它。如果EvalScope对您有所帮助，欢迎给我们点个STAR以示支持，谢谢！
Repository: modelscope/evalscope
Issue: 关于--connect-timeout和--read-timeout的设置，文档描述与实际参数看到的不一致
Root cause: Documentation Deficiency

## 问题描述 / Issue Description
默认参数与文档描述不匹配
请简要描述您遇到的问题。 / Please briefly describe the issue you encountered.
文档描述

![Image](https://github.com/user-attachments/assets/7b8fc73a-9d5e-45ed-9c48-82b22b32e2a8)
实际看到的值

![Image](https://github.com/user-attachments/assets/f012f525-d784-40d5-b7f7-f7f6abddc5be)
这个600的是指600s吗？
## EvalScope 版本 / Version (必须)
源码最新版

## 使用的工具 / Tools Used
- [ ] Native / 原生框架
- [ ] Opencompass backend
- [ ] VLMEvalKit backend
- [ ] RAGEval backend
- [ x] Perf / 模型推理压测工具
- [ ] Arena  /竞技场模式



## 运行环境 / Runtime Environment

- 操作系统 / Operating System:
  - [ ] Windows
  - [ ] macOS
  - [x ] Ubuntu

- Python版本 / Python Version:
  - [x ] 3.12
  - [ ] 3.10
  - [ ] 3.9


## 其他信息 / Additional Information

如果有其他相关信息，请在此处提供。 / If there is any other relevant information, please provide it here.


默认是600s，文档我们更新一下

> 感谢你的反馈！我们将关闭此问题。如果您有任何疑问，请随时重新打开它。如果EvalScope对您有所帮助，欢迎给我们点个STAR以示支持，谢谢！
Repository: modelscope/evalscope
Issue: perf压测支持自定义解析返回体
Root cause: Unimplemented Feature Gap

## 功能描述 / Feature Description

perf压测支持自定义解析返回体，来计算output_tokens以及请求是否正确返回。

## 需求背景 / Background

部分业务对llm服务进行定制化开发，直接使用了推理框架函数并对输出进行了定制化，在进行压测时需要根据返回体结构进行解析计算output_tokens，并判断请求是否正确返回。

## 预期行为 / Expected Behavior

1、添加参数传入parse_responses方法支持自定义解析返回体。
2、parse_responses增加返回值标识请求成功或失败，来根据返回体判断请求是否成功。



请参考文档：https://evalscope.readthedocs.io/zh-cn/latest/user_guides/stress_test/custom.html#api

现有的自定义方法不能满足需求吗

1、当前自定义方法在parse_responses阶段，每换一种请求体或响应体格式需要实现一个解析方法，希望可以传入json path变量从而解析请求体以及响应体中需要计算token的内容。
2、当前failed_queries的计算判断使用HTTPStatus，存在业务场景HTTPStatus为200但是响应体中会使用code字段标识请求是否真正失败，当前逻辑下不知道如何适配这种场景。

1. 由于响应内容可能非常复杂，仅通过传入json path变量来计算token数量可能不足以满足所有场景。建议可以自行在 `evalscope/evalscope/perf/arguments.py` 中添加必要的参数来处理这些复杂情况。

2. 针对 `failed_queries` 的计算问题，您可以修改 `evalscope/perf/http_client.py` 文件中的 `_handle_response` 方法，以根据响应体中的 `code` 字段来判断请求的成功与否。

由于我这边没有具体的业务测试场景，期待您贡献相关PR！如有任何疑问或需要进一步的支持，请随时与我们联系。谢谢！
Repository: modelscope/evalscope
Issue: 怎么加载本地模型呀
Root cause: Documentation Deficiency

![Snipaste_2024-05-13_21-09-53](https://github.com/modelscope/eval-scope/assets/136138700/08544391-317b-426a-9016-bd80159c5e6d)


使用本地模型，请参考：https://evalscope.readthedocs.io/zh-cn/latest/advanced_guides/custom_model.html
Repository: modelscope/evalscope
Issue: 速度基准测试脚本运行报错
Root cause: Documentation Deficiency

![Image](https://github.com/user-attachments/assets/82c603bc-51ed-4a84-a224-9b47d651a48b)

我是跑个样例，基于阿里公有云提供的接口进行测试

**报错信息：**
2025-03-31 08:56:52,172 - evalscope - http_client.py - on_request_chunk_sent - 125 - DEBUG - Request sent: <method='POST',  url=URL('https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions'), truncated_chunk='{"prompt": "熵", "model": "qwen2.5-72b-instruct", "max_tokens": 2048, "min_tokens": 2048, "seed": 42, "stop": [], "stop_token_ids": []}'>
2025-03-31 08:56:52,226 - evalscope - http_client.py - on_response_chunk_received - 137 - DEBUG - Request received: <method='POST',  url=URL('https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions'), truncated_chunk='{"error":{"code":"missing_required_parameter","param":"message","message":"you must provide a messages parameter","type":"invalid_request_error"},"request_id":"chatcmpl-816a021e-5d7e-9eff-91a2-36aed4641546"}'>

evalscope perf \
 --parallel 1 \
 --url 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions' \
 --model 'qwen2.5-72b-instruct' \
 --log-every-n-query 5 \
 --connect-timeout 6000 \
 --read-timeout 6000 \
 --max-tokens 2048 \
 --min-tokens 2048 \
 --api openai \
 --api-key 'sk-xxxxxx' \
 --dataset speed_benchmark \
 --debug

速度测试--url需要使用/v1/completions端点，而不是/v1/chat/completions，避免chat template的额外处理对输入长度有影响。

> 感谢你的反馈！我们将关闭此问题。如果您有任何疑问，请随时重新打开它。如果EvalScope对您有所帮助，欢迎给我们点个STAR以示支持，谢谢！
Repository: modelscope/evalscope
Issue: typo in `requirements/rag.txt`
Root cause: Validation Gap

 https://github.com/modelscope/evalscope/commit/d6109949c8d5e2ee71851e5bf5bf8b1c1e625931 这个 commit 里可能手动添加依赖时打错了


https://github.com/modelscope/evalscope/blob/1b29584ba25ac545995234e78764304cd6d54003/requirements/rag.txt#L4

感谢你的反馈！已修复该问题
Repository: modelscope/evalscope
Issue: Add more output metrics for Stress Testing
Root cause: Unimplemented Feature Gap

为了更好地评测模型的性能，希望能够输出更多的指标，如prefilling_throughput、decoder_throughput、end2end_throughput和request_throughput等指标，以更全面地测试模型。


prefilling_throughput、decoder_throughput 指标需要在模型服务端统计，evalscope perf只发送和接受请求，统计不到这两个指标

 prefilling_throughput = input_length * concurrency / mean_ttft_s。这些数据不是都能获取吗？怎么会统计不了？

用TTFT确实可以计算近似的prefilling_throughput，后面会评估加上更多指标

这个公式 prefilling_throughput = input_length * concurrency / mean_ttft_s 计算出来的prefilling_throughput与vllm模型的prompt throught对不上，中间多了一个prefill到decode第一个token的时间，但这部分统计不到，故不支持prefilling_throughput指标

目前已经支持了request_throughput 和 total throught指标

> 感谢你的反馈！我们将关闭此问题。如果您有任何疑问，请随时重新打开它。如果EvalScope对您有所帮助，欢迎给我们点个STAR以示支持，谢谢！