zhiminy/EvalEng huggingface dataset:
Repository: modelscope/evalscope
Issue: ERROR - Exception in async function 'benchmark': Expecting value: line 2 column 1 (char 1)
Root cause: Validation Gap

## 自查清单

在提交 issue 之前，请确保您已完成以下步骤:
- [ ] 我已仔细阅读了[相关使用说明文档](https://evalscope.readthedocs.io/zh-cn/latest/get_started/parameters.html)
- [ ] 我已查看了[常见问题解答](https://evalscope.readthedocs.io/zh-cn/latest/get_started/faq.html)
- [ ] 我已搜索并查看了现有的 issues，确认这不是一个重复的问题

## 问题描述

请简要描述您遇到的问题。
 当-n参数大于30时，返回如下错误：
2025-05-18 12:02:09,931 - evalscope - ERROR - Exception in async function 'benchmark': Expecting value: line 2 column 1 (char 1)

## EvalScope 版本（必填）
v0.15.1

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

## 执行的代码或指令

请提供您执行的主要代码或指令。
evalscope perf --url 'http://192.168.0.24:9997/v1/chat/completions' --max-prompt-length 128 --parallel 20 --model deepseek-r1-distill-qwen --log-every-n-query 1 --read-timeout=1200 --name 128-128-1 --stream --dataset-path './open_qa.jsonl' --dataset openqa --api openai -n 50
## 错误日志
Traceback (most recent call last):
  File "/home/ban/.conda/envs/evalscope/lib/python3.12/site-packages/evalscope/perf/utils/handler.py", line 17, in async_wrapper
    return await func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ban/.conda/envs/evalscope/lib/python3.12/site-packages/evalscope/perf/benchmark.py", line 199, in benchmark
    async for request in get_requests(args):
  File "/home/ban/.conda/envs/evalscope/lib/python3.12/site-packages/evalscope/perf/benchmark.py", line 67, in get_requests
    async for request in generator:
  File "/home/ban/.conda/envs/evalscope/lib/python3.12/site-packages/evalscope/perf/benchmark.py", line 50, in generate_requests_from_dataset
    for messages in message_generator:
                    ^^^^^^^^^^^^^^^^^
  File "/home/ban/.conda/envs/evalscope/lib/python3.12/site-packages/evalscope/perf/plugin/datasets/openqa.py", line 28, in build_messages
    item = json.loads(item)
           ^^^^^^^^^^^^^^^^
  File "/home/ban/.conda/envs/evalscope/lib/python3.12/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ban/.conda/envs/evalscope/lib/python3.12/json/decoder.py", line 338, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ban/.conda/envs/evalscope/lib/python3.12/json/decoder.py", line 356, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 2 column 1 (char 1)
请粘贴完整的错误日志或控制台输出。

## 运行环境

- 操作系统：ubuntu 22.04
- Python版本：3.12

## 其他信息

如果有其他相关信息，请在此处提供。


`open_qa.jsonl`这个文件是在哪里获取的，有多少条内容

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

我在推理服务器上部署了Qwen2.5-VL-7B-Instruct模型，我想对它进行评测，看下性能，但问题是找遍整个官网也找不到相应的Demo，多模态模型不是很常见吗？我在测评的时候怎么把图片传入？

补充一下：我想用evalscope perf命令对多模态模型做性能测试

参考：https://evalscope.readthedocs.io/zh-cn/latest/user_guides/stress_test/parameters.html#id5
目前支持flickr8k这个多模态数据集

但还是出错
<img width="867" alt="Image" src="https://github.com/user-attachments/assets/16784354-263c-4203-972c-6ac10564e846" />


@JosenLiang 看报错应该是参数有问题，检查一下参数有没有打错，有没有多余空格等

本页https://evalscope.readthedocs.io/zh-cn/latest/user_guides/stress_test/custom.html 
下面的自定义数据集怎么用啊？只看到自定义数据集，没说怎么用？


文档我再更新一下，设置`--dataset {注册的数据集名称}`即可使用，样例中是`--dataset custom`

> 文档我再更新一下，设置`--dataset {注册的数据集名称}`即可使用，样例中是`--dataset custom`

我是通过pip安装的evalscope[perf]，我现在手写了一个数据集，我怎么把这个数据集注册进去呢？



完整示例如下：
```python
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')
class CustomDatasetPlugin(DatasetPluginBase):
    """Read dataset and return prompt.
    """

    def __init__(self, query_parameters: Arguments):
        super().__init__(query_parameters)

    def build_messages(self) -> Iterator[List[Dict]]:
        for item in self.dataset_line_by_line(self.query_parameters.dataset_path):
            prompt = item.strip()
            if len(prompt) > self.query_parameters.min_prompt_length and len(
                    prompt) < self.query_parameters.max_prompt_length:
                if self.query_parameters.apply_chat_template:
                    yield [{'role': 'user', 'content': prompt}]
                else:
                    yield prompt


if __name__ == '__main__':
    from evalscope.perf.arguments import Arguments
    from evalscope.perf.main import run_perf_benchmark

    args = Arguments(
        model='qwen2.5-7b-instruct',
        url='https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions',
        dataset_path='outputs/perf_data.txt',
        api_key='EMPTY',
        dataset='custom',  # 自定义数据集名称
    )

    run_perf_benchmark(args)
```

> 感谢你的反馈！我们将关闭此问题。如果您有任何疑问，请随时重新打开它。如果EvalScope对您有所帮助，欢迎给我们点个STAR以示支持，谢谢！
Repository: modelscope/evalscope
Issue: 压测过程中到达百分之六十的进度卡死，后续请求没有发送出去
Root cause: Environment Incompatibility

## 自查清单

在提交 issue 之前，请确保您已完成以下步骤:
- [ ] 我已仔细阅读了[相关使用说明文档](https://evalscope.readthedocs.io/zh-cn/latest/get_started/parameters.html)
- [x] 我已查看了[常见问题解答](https://evalscope.readthedocs.io/zh-cn/latest/get_started/faq.html)
- [ ] 我已搜索并查看了现有的 issues，确认这不是一个重复的问题

## 问题描述

请简要描述您遇到的问题。

## EvalScope 版本（必填）
eval_type_backport       0.2.2
**evalscope                2.0.0       /workspace/evalscope** 
evaluate                 0.4.3
human-eval               1.0.3
ms-vlmeval               0.0.17
pytrec_eval-terrier      0.5.7

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

## 执行的代码或指令

请提供您执行的主要代码或指令。

## 错误日志

请粘贴完整的错误日志或控制台输出。

## 运行环境

- 操作系统：
- Python版本：

## 其他信息

如果有其他相关信息，请在此处提供。
尝试了很多次
首先使用qwen3 235b fp8 遇到这样的问题
后续使用qwen2.5 72b 也遇到这个问题


![Image](https://github.com/user-attachments/assets/105e8b7d-6fa3-4385-bddb-47f8945d559e)

完整的尝试
qwen3 235b fp8
30/50卡死 
16/25卡死
7/25 卡死

qwen2.5 72b
30/50 卡死
20/20 成功
18/30 卡死

有时候成功有时候失败，非常的奇怪
qwen3 甚至卡死以后 http请求不可达，我用curl也请求不到了


1. 你的请求命令是什么？
2. 你的模型服务是有用什么框架拉起的，是否是并发太高了导致服务挂掉了

> 1. 你的请求命令是什么？
> 2. 你的模型服务是有用什么框架拉起的，是否是并发太高了导致服务挂掉了

感谢您的回复，我补充一下
for qwen2.5
```
vllm serve /mnt/Qwen2.5-72B-Instruct/ \
    --tensor-parallel-size 4 \
    --trust-remote-code \
    --gpu-memory-utilization 0.9 \
    --max-model-len 32768 \
    --served-model-name qwen2_5-72b
```
for qwen3 
```
# sglang
python3 -m sglang.launch_server --model-path /root/.cache/huggingface/Qwen3-fp8 --tp 8 --host 0.0.0.0 --port 30000 --trust-remote-code --reasoning-parser qwen3  --enable-ep-moe --mem-fraction-static 0.8 --chunked-prefill-size 1024
# vllm
vllm serve /mnt/Qwen3-fp8/ \
    --tensor-parallel-size 16 \
    --enable-expert-parallel \
    --trust-remote-code \
    --gpu-memory-utilization 0.9 \
    --enable-reasoning \
    --max-model-len 32768 \
    --reasoning-parser deepseek_r1 \
    --served-model-name qwen3
```

我的Evalscope测试脚本
```
evalscope perf \
  --url "http://xxxxx:30000/v1/chat/completions" \
  --parallel 5 \
  --model qwen3-fp8 \
  --number 25 \
  --api openai \
  --dataset-path /root/.cache/modelscope/hub/datasets/AI-ModelScope/HC3-Chinese/open_qa.jsonl \
  --stream \
```
我的os
```
[root@lingma02 vllm_script]# cat /etc/os-release 
NAME="openEuler"
VERSION="22.03 (LTS-SP4)"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03 (LTS-SP4)"
ANSI_COLOR="0;31"
```
我的并发只有5, 应该不是并发太高的原因



降低并发到1还有这个问题吗

> 降低并发到1还有这个问题吗

im not sure ， 我测试一下吧

> > 降低并发到1还有这个问题吗
> 
> im not sure ， 我测试一下吧

- parallel 5 
    - 18/30
- parallel 2 
    - 18/30
- parallel 1 
    - 15/30
--- 
all failed
都失败了

你提到的失败具体是如何表现的呢，有报错吗

![Image](https://github.com/user-attachments/assets/ecd5c9ee-eaac-46eb-bdb6-80db6ef812ab)

在perf命令中加上`--max-tokens 10`试试，可能是因为输出token较多，看起来像卡住了

十分感谢您的回答，经过排查，应该是我们堡垒机的问题，多有叨唠了

堡垒机自己退出导致进程也消失了，我用nohup 后台运行就没有问题了。

🙏感谢解答，叨唠了
Repository: modelscope/evalscope
Issue: 进行多个并发数的性能测试时，报错：EvalScope Command Line tool: error: unrecognized arguments: 10 50 100 200 20 100 200 400
Root cause: Validation Gap

## 自查清单

在提交 issue 之前，请确保您已完成以下步骤:
- [x] 我已仔细阅读了[相关使用说明文档](https://evalscope.readthedocs.io/zh-cn/latest/get_started/parameters.html)
- [x] 我已查看了[常见问题解答](https://evalscope.readthedocs.io/zh-cn/latest/get_started/faq.html)
- [x] 我已搜索并查看了现有的 issues，确认这不是一个重复的问题

## 问题描述

请简要描述您遇到的问题。

## EvalScope 版本（必填）
v0.15.1

## 使用的工具
- [x] Perf / 模型推理压测工具

## 执行的代码或指令
evalscope perf \
  --parallel 1 10 50 100 200 \
  --number 10 20 100 200 400 \
  --model DeepSeek-R1-Distill-Llama-70B \
  --url http://127.0.0.1:8877/v1/chat/completions \
  --api openai \
  --dataset random \
  --max-tokens 1024 \
  --min-tokens 1024 \
  --prefix-length 0 \
  --min-prompt-length 1024 \
  --max-prompt-length 1024 \
  --tokenizer-path /nfs/largemodel/model/DeepSeek-R1-Distill-Llama-70B \
  --extra-args '{"ignore_eos": true}'

vllm启动部署服务：
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m vllm.entrypoints.openai.api_server --model /nfs/largemodel/model/DeepSeek-R1-Distill-Llama-70B --tensor-parallel-size 4 --port 8877 --served-model-name DeepSeek-R1-Distill-Llama-70B

## 错误日志

![Image](https://github.com/user-attachments/assets/b5f7c6ff-af53-474f-89f0-521047bad553)

usage: evalscope <command> [<args>]
EvalScope Command Line tool: error: unrecognized arguments: 10 50 100 200 20 100 200 400

## 运行环境

- 操作系统：linux
- Python版本：3.11.11

## 其他信息

如果有其他相关信息，请在此处提供。


已解决，拉了最新代码，重新编译就好了。

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

https://modelscope.cn/docs/intro/environment-setup#%E6%9C%80%E6%96%B0%E9%95%9C%E5%83%8F
这里的最新镜像，使用的是0.15.1版本，一样会有这个问题。估计需要构建新的镜像了。
Repository: modelscope/evalscope
Issue: RuntimeError: Cannot run the event loop while another loop is running
Root cause: Environment Incompatibility

## 自查清单

在提交 issue 之前，请确保您已完成以下步骤:
- [x] 我已仔细阅读了[相关使用说明文档](https://evalscope.readthedocs.io/zh-cn/latest/get_started/parameters.html)
- [x] 我已查看了[常见问题解答](https://evalscope.readthedocs.io/zh-cn/latest/get_started/faq.html)
- [x] 我已搜索并查看了现有的 issues，确认这不是一个重复的问题

## 问题描述

运行示例代码，报错

## EvalScope 版本（必填）
v0.16.0

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

## 执行的代码或指令

```
from evalscope.perf.main import run_perf_benchmark
from evalscope.perf.arguments import Arguments

task_cfg = Arguments(
    parallel=[1],
    number=[10],
    model='qwen3-32b',
    url='http://10.59.144.57:6008/v1',
    api='openai',
    dataset='random',
    min_tokens=1024,
    max_tokens=1024,
    prefix_length=0,
    min_prompt_length=1024,
    max_prompt_length=1024,
    tokenizer_path='/home/octopus/data/llm_list/qwen3_32b/Qwen/Qwen3-32B',
    extra_args={'ignore_eos': True}
)
results = run_perf_benchmark(task_cfg)

```

## 错误日志

```
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
Cell In[2], line 1
----> 1 results = run_perf_benchmark(task_cfg)

File ~/.local/lib/python3.10/site-packages/evalscope/perf/main.py:87, in run_perf_benchmark(args)
     85 # Start benchmark
     86 if len(args.number) == 1:
---> 87     return run_one_benchmark(args, output_path=output_path)
     88 else:
     89     return run_multi_benchmark(args, output_path=output_path)

File ~/.local/lib/python3.10/site-packages/evalscope/perf/main.py:39, in run_one_benchmark(args, output_path)
     36 if platform.system() != 'Windows':
     37     add_signal_handlers(loop)
---> 39 return loop.run_until_complete(benchmark(args))

File ~/work/conda/envs/bert_env/lib/python3.10/asyncio/base_events.py:625, in BaseEventLoop.run_until_complete(self, future)
    614 """Run until the Future is done.
    615 
    616 If the argument is a coroutine, it is wrapped in a Task.
   (...)
    622 Return the Future's result, or raise its exception.
    623 """
    624 self._check_closed()
--> 625 self._check_running()
    627 new_task = not futures.isfuture(future)
    628 future = tasks.ensure_future(future, loop=self)

File ~/work/conda/envs/bert_env/lib/python3.10/asyncio/base_events.py:586, in BaseEventLoop._check_running(self)
    584     raise RuntimeError('This event loop is already running')
    585 if events._get_running_loop() is not None:
--> 586     raise RuntimeError(
    587         'Cannot run the event loop while another loop is running')

RuntimeError: Cannot run the event loop while another loop is running

```

## 运行环境

- 操作系统：ubuntu16.04
- Python版本：3.10.12

## 其他信息

如果有其他相关信息，请在此处提供。


是在notebook中运行的代码吗，还是在终端中运行的python脚本呢

> 是在notebook中运行的代码吗，还是在终端中运行的python脚本呢

对的

不要在notebook环境中运行，请写一个python脚本，在终端中运行

> 不要在notebook环境中运行，请写一个python脚本，在终端中运行

好滴，我试一下

> 感谢你的反馈！我们将关闭此问题。如果您有任何疑问，请随时重新打开它。如果EvalScope对您有所帮助，欢迎给我们点个STAR以示支持，谢谢！
Repository: modelscope/evalscope
Issue: perf请求携带特殊参数报错
Root cause: Validation Gap


## 问题描述

压测 perf 时的请求额外参数，如“stop_token_ids”似乎是默认带有的，能否在请求中去除，因为本地起的llm服务不支持特殊参数会报错。

## EvalScope 版本（必填）
v0.16.0

## 使用的工具

- [ √] Perf / 模型推理压测工具
- LLM Api是使用TensorRT-LLM + Triton Server (openai版) https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/client_guide/openai_readme.html#tensorrt-llm

## 执行的代码或指令

evalscope perf \
  --parallel 1 \
  --number 10 \
  --model tensorrt_llm_bls \
  --url http://127.0.0.1:9000/v1/completions \
  --api openai \
  --dataset openqa \
  --debug \
  --no-stream 

## 错误日志

2025-05-21 03:27:48,749 - evalscope - http_client.py - on_request_chunk_sent - 124 - DEBUG - Request sent: <method='POST',  url=URL('http://127.0.0.1:9000/v1/completions'), truncated_chunk='{"prompt": "神州行手机号码成为空号了怎么办，卡里还有几十圆钱，还可以再用吗", "model": "tensorrt_llm_bls", "max_tokens": 2048, "seed": 0, "stop": [], "stop_token_ids": [], "temperature": 0.0}'>
2025-05-21 03:27:48,808 - evalscope - http_client.py - on_response_chunk_received - 136 - DEBUG - Request received: <method='POST',  url=URL('http://127.0.0.1:9000/v1/completions'), truncated_chunk='{"detail":[{"type":"extra_forbidden","loc":["body","stop_token_ids"],"msg":"Extra inputs are not permitted","input":[]}]}'>
2025-05-21 03:27:48,877 - evalscope - benchmark.py - send_request - 89 - ERROR - Request: {'prompt': '神州行手机号码成为空号了怎么办，卡里还有几十圆钱，还可以再用吗', 'model': 'tensorrt_llm_bls', 'max_tokens': 2048, 'seed': 0, 'stop': [], 'stop_token_ids': [], 'temperature': 0.0} failed, state_code: 422, data: {"detail": [{"type": "extra_forbidden", "loc": ["body", "stop_token_ids"], "msg": "Extra inputs are not permitted", "input": []}]}


已修复，使用main分支代码安装即可
Repository: modelscope/evalscope
Issue: 性能测试中TPOT指标计算问题
Root cause: Algorithmic Error



## 问题描述

请简要描述您遇到的问题。
在计算TPOT的公式中：
'Average time per output token (s)': round(self.avg_time_per_token, default_ndigits)，

其中，self.avg_time_per_token = self.n_time_per_output_token / self.n_succeed_queries，
self.n_time_per_output_token += benchmark_data.time_per_output_token，
self.time_per_output_token = self.n_chunks_time / self.completion_tokens

最后一个公式中计算单条请求平均TPOT时使用的分子n_chunks_time是每个请求中去掉首尾chunk的时间，而分母completion_tokens是全部的token数，我的疑问是：似乎分母使用n_chunks更合适？这样分子分母都是不包含首尾chunk的。


## EvalScope 版本（必填）
v0.15.1

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

- [ ] Perf / 模型推理压测工具
- [ ] Arena / 竞技场模式

## 执行的代码或指令

请提供您执行的主要代码或指令。

## 错误日志

请粘贴完整的错误日志或控制台输出。

## 运行环境

- 操作系统：
- Python版本：

## 其他信息

如果有其他相关信息，请在此处提供。


此处确实有点问题，参考了vLLM benchmarking的实现修改了

> 此处确实有点问题，参考了vLLM benchmarking的实现修改了

另外再请教一下，TPOT的计算去掉最后一个chunk的原因，是不是因为最后一个chunk是空的，只是统计usage summary呢？

> > 此处确实有点问题，参考了vLLM benchmarking的实现修改了
> 
> 另外再请教一下，TPOT的计算去掉最后一个chunk的原因，是不是因为最后一个chunk是空的，只是统计usage summary呢？

是的，最后一个chunk只用来统计usage

多谢回复，这个问题我就关闭了。

@Yunnglin 

如果一个 chunk 内不是一个 token 的话，那么这个算法就不对了。

应该除以 （self.completion_tokens - 第一个trunck包含的token个数） 。完整表述如下：
```
在计算TPOT的公式中：
'Average time per output token (s)': round(self.avg_time_per_token, default_ndigits)，

其中，self.avg_time_per_token = self.n_time_per_output_token / self.n_succeed_queries，
self.n_time_per_output_token += benchmark_data.time_per_output_token，
self.time_per_output_token = self.n_chunks_time / （self.completion_tokens -  第一个trunck包含的token个数）
```

另外，Percentile results的结果是从SQLite数据库取得数据，这里的tpot的算法和summary_result的tpot的算法不一样。也是不合适的，2边应该一致
Repository: modelscope/evalscope
Issue: 是否支持多卡推理
Root cause: Unimplemented Feature Gap

## 功能描述 / Feature Description

请简要描述您希望添加的功能。 / Please briefly describe the feature you would like to request.

## 需求背景 / Background

为什么需要这个功能？ / Why is this feature needed?

## 预期行为 / Expected Behavior

这个功能应该如何工作？ / How should this feature work?

## 其他信息 / Additional Information

还有其他相关信息吗？ / Any other relevant information?


需求已收到，后续会尽量支持该功能

@Yunnglin 有的测试数据比较大，单卡测试速度慢，怎么进行多卡评测呢。

@WeihongM 建议使用vLLM设置tensor parallel参数拉起模型服务来测试

@Yunnglin 我理解这只是启动了多个服务，起了多个服务后，在评测的时候还需要数据分别请求各个端口拿到输出，->汇总结果，->最后再输出指标？
这看起来很麻烦，有方便的自动化脚本吗？

> [@Yunnglin](https://github.com/Yunnglin) 我理解这只是启动了多个服务，起了多个服务后，在评测的时候还需要数据分别请求各个端口拿到输出，->汇总结果，->最后再输出指标？ 这看起来很麻烦，有方便的自动化脚本吗？

这种脚本还没有

@Yunnglin 请问近期会实现多卡评测吗。有的数据太大，单卡评测速度比较慢。

@Yunnglin  用vllm拉起模型，然后用evalscope跑测试时，总是会把vllm的服务跑崩，请问我可不可以修改evalscope的代码，让其支持本地部署，而不是提供一个api出来呢

@1204922635 如果需要自定义模型评测，可以参考这个文档：https://evalscope.readthedocs.io/zh-cn/latest/advanced_guides/custom_model.html#id1

老生常谈，请求加上多卡的推理，否则这个有使用瓶颈。。。
尤其是稍微大一点的模型，都会卡很久，是否可以考虑提供官方ray + vllm的启动命令入口

@Oukaishen 对于较大的模型，vllm本身支持tensor-parallel。你希望支持的是evalscope通过ray来启动多个vllm服务吗？

通过SGLang来支持多卡推理

> [@Oukaishen](https://github.com/Oukaishen) 对于较大的模型，vllm本身支持tensor-parallel。你希望支持的是evalscope通过ray来启动多个vllm服务吗？

您好，感谢您的回复，不知道是否你也在微信群内，那样可以更加快讨论。

是的，我是想针对稍微大的数据集，比如说10w数据。可以在单机8卡的情况下，可以每张卡1/8这样并行。最后再做一些统计工作汇总

> > [@Oukaishen](https://github.com/Oukaishen)对于增加的模型，vllm 本身支持张量并行。你希望支持的是 evalscope 通过ray来启动多个vllm服务吗？
> 
> 您好，感谢您的回复，不知道您是否在微信群内，这样可以多快讨论。
> 
> 是的，我是想针对一点大的数据集，比如10w个数据。可以在单机8卡的情况下，可以每张卡1/8这样的玩具。最后再做一些统计工作汇总

哪里可以加入微信群呢

@dgzxx-2000 你可以扫描readme里的微信群二维码来加群

> > [@Oukaishen](https://github.com/Oukaishen) 对于较大的模型，vllm本身支持tensor-parallel。你希望支持的是evalscope通过ray来启动多个vllm服务吗？
> 
> 您好，感谢您的回复，不知道是否你也在微信群内，那样可以更加快讨论。
> 
> 是的，我是想针对稍微大的数据集，比如说10w数据。可以在单机8卡的情况下，可以每张卡1/8这样并行。最后再做一些统计工作汇总

这种 data-parallel 的方式后续会迭代实现，涉及到的代码修改可能比较多
Repository: modelscope/evalscope
Issue: 关于评测结果里Rouge-1出现两次
Root cause: Documentation Deficiency

评测结果里面为什么Rouge-1会出现两次，应该有一个是Rouge-L吗，那如何分辨？

请使用最新版的evalscope v0.16.0，指标已改为大写字母

> 请使用最新版的evalscope v0.16.0，指标已改为大写字母

rouge后面的-f、-p、-r有什么侧重吗，是否有文档解释一下

这个在文档中没有，但这些是常见指标，相关介绍也比较多：

在ROUGE评估指标中，`-f`、`-p`、`-r`分别代表不同的计算方式或侧重点：

1. **`-r`（Recall）**：  
   `-r`表示召回率（Recall），用于衡量生成文本覆盖参考文本的程度。它关注的是生成文本中有多少内容与参考文本相关且被正确覆盖。例如，在ROUGE-L中，召回率的计算基于最长公共子序列（LCS）的比例，即$R_{lcs} = \frac{LCS(ref, pred)}{m}$，其中$m$是参考文本的长度。

2. **`-p`（Precision）**：  
   `-p`表示精确率（Precision），用于衡量生成文本的准确性。它关注的是生成文本中有多少内容是与参考文本匹配的，但不考虑参考文本是否完全覆盖。例如，在ROUGE-L中，精确率的计算为$P_{lcs} = \frac{LCS(ref, pred)}{n}$，其中$n$是生成文本的长度。

3. **`-f`（F-measure）**：  
   `-f`表示F值（F-measure），是召回率和精确率的调和平均数。它综合了召回率和精确率的表现，通常通过参数$\beta$来调整两者的权重。当$\beta$较大时，更重视召回率；当$\beta$较小时，更重视精确率。在ROUGE中，如果特别关注召回率，$\beta$会被设置为一个较大的数值。

总结来说：
- **`-r`侧重于生成文本对参考文本的覆盖程度**。
- **`-p`侧重于生成文本的准确性和相关性**。
- **`-f`则是两者的平衡，根据具体需求调整权重**。

这些指标的选择取决于任务的具体目标。例如，在机器翻译或文本摘要任务中，通常更关注召回率（`-r`），因为漏掉重要信息的影响更大。

> 这个在文档中没有，但这些是常见指标，相关介绍也比较多：
> 
> 在ROUGE评估指标中，`-f`、`-p`、`-r`分别代表不同的计算方式或侧重点：
> 
> 1. **`-r`（Recall）**：
>    `-r`表示召回率（Recall），用于衡量生成文本覆盖参考文本的程度。它关注的是生成文本中有多少内容与参考文本相关且被正确覆盖。例如，在ROUGE-L中，召回率的计算基于最长公共子序列（LCS）的比例，即$R_{lcs} = \frac{LCS(ref, pred)}{m}$，其中$m$是参考文本的长度。
> 2. **`-p`（Precision）**：
>    `-p`表示精确率（Precision），用于衡量生成文本的准确性。它关注的是生成文本中有多少内容是与参考文本匹配的，但不考虑参考文本是否完全覆盖。例如，在ROUGE-L中，精确率的计算为$P_{lcs} = \frac{LCS(ref, pred)}{n}$，其中$n$是生成文本的长度。
> 3. **`-f`（F-measure）**：
>    `-f`表示F值（F-measure），是召回率和精确率的调和平均数。它综合了召回率和精确率的表现，通常通过参数$\beta$来调整两者的权重。当$\beta$较大时，更重视召回率；当$\beta$较小时，更重视精确率。在ROUGE中，如果特别关注召回率，$\beta$会被设置为一个较大的数值。
> 
> 总结来说：
> 
> * **`-r`侧重于生成文本对参考文本的覆盖程度**。
> * **`-p`侧重于生成文本的准确性和相关性**。
> * **`-f`则是两者的平衡，根据具体需求调整权重**。
> 
> 这些指标的选择取决于任务的具体目标。例如，在机器翻译或文本摘要任务中，通常更关注召回率（`-r`），因为漏掉重要信息的影响更大。

感谢，最后想问一下，自定义数据集测试时指标是只有这两类吗，其他指标是只能在专门的公开的数据集里面才有对应的指标吗；如果可以选择其他指标，有无相关的指导文件？

自定义评测默认是这两个指标，自定义评测指标暂时还不支持，后续我们考虑一下

> 自定义评测默认是这两个指标，自定义评测指标暂时还不支持，后续我们考虑一下

好的，感谢
Repository: modelscope/evalscope
Issue: [Feature] Support custom evaluation metrics
Root cause: Unimplemented Feature Gap

## 功能描述 / Feature Description

Support custom evaluation metrics

## 需求背景 / Background

为什么需要这个功能？ / Why is this feature needed?

## 预期行为 / Expected Behavior

这个功能应该如何工作？ / How should this feature work?

## 其他信息 / Additional Information

还有其他相关信息吗？ / Any other relevant information?
Repository: modelscope/evalscope
Issue: simpleQA, reviewing 很慢
Root cause: Documentation Deficiency

## 自查清单

在提交 issue 之前，请确保您已完成以下步骤:
- [x] 我已仔细阅读了[相关使用说明文档](https://evalscope.readthedocs.io/zh-cn/latest/get_started/parameters.html)
- [x] 我已查看了[常见问题解答](https://evalscope.readthedocs.io/zh-cn/latest/get_started/faq.html)
- [x] 我已搜索并查看了现有的 issues，确认这不是一个重复的问题

## 问题描述

simpleQA, 将数据集下载到本地，推理结束后的reviewing很慢，使用的evalscope版本是目前的master源码安装

<img width="1344" alt="Image" src="https://github.com/user-attachments/assets/f3a84832-deb7-4ba1-81b0-69825ad62bc2" />

## EvalScope 版本（必填）
目前的master版本的源码安装

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

## 执行的代码或指令

```shell
evalscope eval \
 --model qwen3_8b \
 --api-url http://127.0.0.1:8801/v1 \
 --api-key EMPTY \
 --eval-type service \
 --datasets simple_qa \
 --eval-batch-size 128 \
 --dataset-args '{"ifeval": {"metric_list": ["Pass@1"], "local_path": "/mnt/rl/data/benchmarks/ifeval"},"mmlu_pro": {"local_path": "/mnt/rl/data/mmlu_pro/data"},"super_gpqa": {"metric_list": ["Pass@1"],"local_path": "/mnt/rl/data/supergpqa/data"},"aime25": {"metric_list": ["Pass@1"], "local_path": "/mnt/rl/data/benchmarks/aime25/test.jsonl"},"gpqa": {"metric_list": ["Pass@1"], "local_path": "/mnt/rl/data/benchmarks/gpqa", "subset_list": ["gpqa_diamond"]},"simple_qa": {"local_path": "/mnt/rl/data/benchmarks/SimpleQA"},"super_gpqa": {"metric_list": ["Pass@1"],"local_path": "/mnt/rl/data/benchmarks/supergpqa"}}' \
 --generation-config temperature=0.6,max_tokens=28000,n=1 \
 --timeout 400000 2>&1 | tee evalscope.log 

## 错误日志

请粘贴完整的错误日志或控制台输出。

## 运行环境

- 操作系统：
- Python版本：

## 其他信息

如果有其他相关信息，请在此处提供。


请问设置judge model了吗
参考这个文档：https://evalscope.readthedocs.io/zh-cn/latest/get_started/parameters.html#judge

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

> 请问设置judge model了吗 参考这个文档：https://evalscope.readthedocs.io/zh-cn/latest/get_started/parameters.html#judge

解决了，谢谢
Repository: modelscope/evalscope
Issue: 性能评测如何设置system prompt呢
Root cause: Documentation Deficiency


请参考这个文档设置：https://evalscope.readthedocs.io/zh-cn/latest/get_started/parameters.html#id3

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

system_prompt不在perf/argument.py 文件里的参数里, 我是直接修改tokenizer_config.json来嵌入提示器的

不支持perf直接设置system_prompt，可以参考来自定义数据集 https://evalscope.readthedocs.io/zh-cn/latest/user_guides/stress_test/custom.html#id3