# ❓ 常见问题 下面是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": ""}'`,去掉模型的思考过程。 ### 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: 目前并没有对``内容做额外的处理,默认是``和``放在一起的,然后从里面解析答案来评测。已经支持后处理过滤器, 建议对推理模型过滤掉思考部分。 使用示例: ```shell --datasets ifeval --dataset-args '{"ifeval": {"filters": {"remove_until": ""}}' ``` ### 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: 2025-03-31 08:56:52,226 - evalscope - http_client.py - on_response_chunk_received - 137 - DEBUG - Request received: ``` 参考复现代码 ```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)