# ❓ 常见问题

下面是EvalScope使用过程中遇到的一些常见问题

```{important}
EvalScope使用中出现的大部分问题可能已经在最新版本中修复，建议先拉main分支代码安装再试试，看问题是否可以解决，请确保使用的是最新版本的代码。
```

## 模型benchmark测试

### Q0: 为什么评测的结果为0/评测结果明显不对？

A: 使用如下方法排查问题：
  1. 确认模型接口是否可以正常推理
  2. 在`outputs/2025xxxxx/predictions/`路径下查看模型的输出，确认模型是否有输出，输出是否正常
  3. 使用`evalscope app`启动可视化界面，查看评测结果是否正常

### Q1: 为什么推理模型测出来的精度很低，例如QwQ模型在ifeval上?

A: `--datast-args` 的 ifeval加上 `"filters": {"remove_until": "</think>"}'`，去掉模型的思考过程。

### Q2: 使用API模型服务评测embeddings报错 openai.BadRequestError: Error code: 400 - {'object': 'error', 'message': 'dimensions is currently not supported', 'type': 'BadRequestError', 'param': None, 'code': 400}

A: 设置`'dimensions': None`，或者不设置该参数

### Q3: 查看outputs/2025xxxxx/predictions/路径下面模型的输出最后几个case的内容为null

A: 输出长度不够，被提前截断了

### Q4: evalscope 当前内置的评测集（例如 LiveCodebench、AIME、MATH-500）等只支持 pass1 评测吗？支持 passk 评测吗？

A: 
1. 本框架支持QwQ评测中的`n_sample`参数，在generation config中设置`n`可计算多个sample的平均指标，参考：https://evalscope.readthedocs.io/zh-cn/latest/best_practice/eval_qwq.html#id5
2. 本框架支持 `pass@k` 指标，参考 https://evalscope.readthedocs.io/zh-cn/latest/get_started/parameters.html#id3 中的`metrics_list`

### Q5: 数据集从本地加载报错，缺少`dtype` ?

A: 数据集本地加载是有点问题，需要modelscope下个版本修复，临时的解决方案是先手动删掉数据集目录下的`dataset_infos.json` 这个文件

### Q6: 评估Qwen2-audio的时候，跑了几个文本指标，回复的内容全是感叹号

A: 参考复现代码：
```python
from evalscope.run import run_task

task_cfg = {
    'model': '/opt/nas/n/AudioLLM/allkinds_ckpt/Qwen/Qwen2-Audio-7B-Instruct',
    'datasets': ['gsm8k', 'math_500', "gpqa", "mmlu_pro", "mmlu_redux"],
    'limit': 100
}

run_task(task_cfg=task_cfg)
```
目前对于本地加载的多模态模型支持并不完善，建议使用vllm等推理服务拉起api来评测

### Q7: 评测多模态大模型时报错：Unknown benchmark

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

### Q8: 评估Gemma3系列模型时出现RuntimeError: CUDA error: device-side assert triggered错误

A: gemma3是多模态模型，目前框架的chat_adapter对于多模态模型的支持不是很完善，建议使用模型推理框架（vllm等）拉起模型服务来进行评测

### Q9: 如何进行多卡评估？

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

### Q10: 模型推理服务的压测使用可视化工具找不到报告

A: 该可视化工具专门用于展示模型评测结果，不适用于模型推理服务的压测结果可视化。如需查看模型推理服务的压测结果可视化，请参考[压测结果可视化指南](https://evalscope.readthedocs.io/zh-cn/latest/user_guides/stress_test/examples.html#wandb)。

### Q11: 是否有可用的docker？

A: 使用镜像可以查看[这里](https://modelscope.cn/docs/intro/environment-setup#%E6%9C%80%E6%96%B0%E9%95%9C%E5%83%8F)，使用modelscope的官方镜像，里面包含了evalscope库

### Q12: ifeval数据集做评测的时候报-Unable to detect language for text कामाची घाई

A: 报错信息包含：
due to Need to load profiles.
NotADirectoryError: [Errno 20] Not a directory: '/nltk_data/tokenizers/punkt_tab.zip/punkt_tab/english/collocations.tab'

解决方案：
1. `unzip /path/to/nltk_data/tokenizers/punkt_tab.zip`
2. 命令如下
```shell
!evalscope eval
--model xxxx
--api-url xxxx
--api-key xxxxx
--generation-config temperature=1.0
--eval-type service
--eval-batch-size 50
--datasets ifeval
--judge-worker-num 1
```

### Q13: Math-500数据集评估结果误判badcase集合

A: 这是数学解析规则出问题了，写这些匹配规则比较复杂，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)

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

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

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

### Q15: 在评测service时，默认temperature是多少？

A: 默认是0

### Q16: 在AIME24上进行评测的时候结果不准或者不稳定怎么办？

A: aime 默认的指标是 pass@1，采样得够多才估计得更准，可以设置 n 为较大的值，也可以设置temperature 和 seed，让模型的输出尽量一致

### Q17: 评测结果可视化的gradio程序，离线部署后无法工作(无公网)

A: 可以参考这里的解决方法 [gradio-app/gradio#7934](https://github.com/gradio-app/gradio/issues/7934)

### Q18: 多模态自定义问答题格式不支持裁判么？

A: 自定义问答题需要自己实现judge的逻辑

### Q19: 运行aime 2024 评估, 报SSLError错误

A: 报错示例：
```text
requests.exceptions.SSLError: HTTPSConnectionPool(host='www.modelscope.cn', port=443): Max retries exceeded with url: /api/v1/datasets/HuggingFaceH4/aime_2024 (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))
```

报错原因是data-args写的不对，应该是这样：
```python
dataset_args={
    'aime24': {
        'local_path': "/var/AIME_2024/",
        'few_shot_num': 3
    }
},
```

### Q20: 数据集评测时如何设置一个样本推理几次生成几个答案？

A: 在generation config里面指定

参考：https://evalscope.readthedocs.io/zh-cn/latest/get_started/parameters.html#id2

### Q21: modelscope - WARNING - Use trust_remote_code=True. Will invoke codes from ceval-exam. Please make sure that you can trust the external codes. 这个警告是怎么回事？trust_remote_code=True这个参数要怎么传递？

A: 这个是warning不影响评测流程，框架已经默认`trust_remote_code=True`

### Q22: api评测的时候使用base模型超过最大token报错怎么办？

A: api评测走的是 `chat` 接口，base模型评测可能会有点问题（模型输出不会停止），建议用Instruct模型来测试

### Q23: 用vllm起服务总是报几次retrying request问题后，就开始报 Error when calling OpenAI API: Request timed out.

A: 模型输出比较长，尝试加上`stream`参数, `timeout`加大

### Q24: 请问如何评测多模态模型（如Qwen-2.5-vl）在语言模型评测数据集（如MMLU）上的性能？

A: 多模态模型建议用vllm这种框架拉起服务再评测，目前还没支持多模态模型本地加载

参考：https://evalscope.readthedocs.io/zh-cn/latest/get_started/basic_usage.html#api

### Q25: stream参数报错 EvalScope Command Line tool: error: unrecognized arguments: --stream True

A: 直接用 `--stream` 不要填加 `True` 

### Q26： 执行示例报错 RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking argument for argument index in method wrapper_CUDA__index_select)

A: 首先确认显存是否足够，由于默认的device map是auto，可能有些权重被分到cpu上了，可以尝试增加`--model-args device_map=cuda `

### Q27： 对于r1类的模型，评估过程会忽略思考部分，直接对生成的最终结果进行评测吗？还是将思考过程和结果一起作为答案进行评测？

A: 目前并没有对`<think>`内容做额外的处理，默认是`<think>`和`<answer>`放在一起的，然后从里面解析答案来评测。已经支持后处理过滤器, 建议对推理模型过滤掉思考部分。
使用示例：
```shell
--datasets ifeval
--dataset-args '{"ifeval": {"filters": {"remove_until": "</think>"}}'
```

### Q28： 可视化界面图表展示异常

A: plotly 尝试降到 5.23.0 版本

### Q29: 现阶段是否有直接基于预测结果进行评估的入口

A: 参考这个 https://evalscope.readthedocs.io/zh-cn/latest/get_started/parameters.html#id5 ，设置use_cache参数

### Q30: 评测中断了，如何继续评测（断点续评）？

A: 支持的，请使用`use_cache`参数定传入上次评测输出的路径即可重用模型预测结果以及review结果。

## 模型压测

### Q1: 测试ollama发现，当并发数大于5后，Throughput(average tokens/s)的值始终上不去，我的显卡 cpu 内存 io都不存在瓶颈，是怎么回事？

A: 参考复现代码：
```shell
ollama run deepseek-r1:7b

evalscope perf --url http://127.0.0.1:11434/v1/chat/completions --parallel 20 --model deepseek-r1:7b --number 50 --api openai --dataset longalpaca --stream --tokenizer-path /home/data/DeepSeek-R1-Distill-Qwen-7B/
```

加一个 export OLLAMA_NUM_PARALLEL=10

### Q2：无法使用--min-tokens 2048 --max-tokens 2048 \控制输出的长度

A: `--min-tokens` 不是所有模型服务都支持该参数，请查看对应API服务的文档。

- 解释：对应API服务的文档指的是测试的模型服务的文档，就是谁提供的API服务，可能是推理引擎拉起的服务，也可能是云服务商提供的服务。

### Q3: 速度基准测试脚本运行报错 

A: 参考报错信息
```text
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"}'>
```
参考复现代码
```shell
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的额外处理对输入长度有影响。

### Q4: perf压测支持自定义解析返回体吗？

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

### Q5: 调整那个参数可以加大并发处理吗

A: 你可以参考一下这个：[vllm-project/vllm#3561](https://github.com/vllm-project/vllm/issues/3561)

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

A: 参考示例代码：
```shell
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 '<|im_end|>'
--dataset openqa
```
降低并发再尝试一下

### Q7: TTFT测试结果不对劲，我完成50个请求的总时间才30多秒，TTFT也是30多秒，什么情况

A: 要准确统计Time to First Token (TTFT)指标，需要在请求中包含--stream参数，否则TTFT将与Latency相同。

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

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

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

### Q9: 为什么输出的ttft时间与vllm收集的ttft时间相差较大

A: evalscope得到的TTFT是end-to-end的时间，从请求发出开始计时，到接受到第一个token结束，中间有网络传输和处理时间，跟服务端统计结果可能有些偏差

### Q10: 如果请求超时了，可以设置更长的timeout参数嘛？

A: 可以，添加下面的参数即可
```shell
 --connect-timeout 60000 \
 --read-timeout 60000 \
```

### Q11: 测试模型服务的推理速度的示例中，model怎么理解？

A: `model`填的是模型服务框架部署的模型名称，比如OpenAI的服务有`gpt-4o`, `o1-mini`等模型

### Q12: KTransformers 流输出无法识别报错ZeroDivisionError: float division by zero

A: 部署的模型服务似乎没有返回使用信息，这与标准的 OpenAI API 格式不同，需要传递 `--tokenizer-path` 参数来计算 `token` 数量。

### Q13: 如何进行多模态大模型的压测，如何输入图片呢？

A: 目前支持dataset设置为flickr8k进行多模态模型压测，请[参考](https://evalscope.readthedocs.io/zh-cn/latest/user_guides/stress_test/parameters.html#id5)