Open LeoCeasar opened 2 weeks ago
请用具体的执行命令是什么,可以的话也提供一下输出
一直卡在图示所在的最后一个返回日志里面,然后我用ctrl + c 退出之后,出现写入数据库的日志和下面的退出日志
卡住最久等了三个小时 都没写入结束。数据库一直为空。
执行指令: evalscope perf --model llama2_7b_chat --parallel 64 --url 'http://127.0.0.1:8000/v1/completions' --api "custom" --dataset openqa --query-template '{"model": "%m", "prompt":"%p", "max_tokens": 1024, "temperature": 0.7}' --dataset-path /home/workspace/oldcat/data/HC3-Chinese/open_qa.jsonl --wandb-api-key xxx --debug
xian za现在我刚刚重新运行的卡住的状态,两个模型相同的指令。
有任何进展么?方便问一下是什么情况导致的?
目前看来可能是 costum_api.py 文件中 parse_responses 的解析错误,我们正在讨论修复方案。
您也可以尝试以下方法解决:
evalscope perf --model llama2_7b_chat --parallel 64 \
--url 'http://127.0.0.1:8000/v1/chat/completions' --dataset openqa \
--query-template '{"model": "%m", "messages": [], "max_tokens": 1024, "temperature": 0.7}' \
--dataset-path ./open_qa.jsonl \
--wandb-api-key xxx \
--debug
好的,感谢,想请教一下我自己修改的api 的文件 我该具体如何操作,才能让perf工具访问到?
我是用的是vllm 作为推理后端,里面是使用prompt作为输入语句的。我该如何修改变量,我将openai api的response函数拷贝过去 还是一样卡住。
我是直接用openai 的api 解析 依旧出现同样的情况。
如果您使用 vLLM 作为推理后端,那么您可以直接使用 OpenAI 格式的 API 解析。参考:
evalscope perf --model llama2_7b_chat --parallel 64 \
--url 'http://127.0.0.1:8000/v1/chat/completions' --dataset openqa \
--query-template '{"model": "%m", "messages": [], "max_tokens": 1024, "temperature": 0.7}' \
--dataset-path ./open_qa.jsonl \
--wandb-api-key xxx \
--debug
从您上文提供的命令来看,需要修改的变量是 --api
和 --query-template
。
如果您自定义 API,您可以参考 EvalScope 文档的相关设置构建源码,再从源码安装 EvalScope。
如果您使用 vLLM 作为推理后端,那么您可以直接使用 OpenAI 格式的 API 解析。参考:
evalscope perf --model llama2_7b_chat --parallel 64 \ --url 'http://127.0.0.1:8000/v1/chat/completions' --dataset openqa \ --query-template '{"model": "%m", "messages": [], "max_tokens": 1024, "temperature": 0.7}' \ --dataset-path ./open_qa.jsonl \ --wandb-api-key xxx \ --debug
从您上文提供的命令来看,需要修改的变量是
--api
和--query-template
。如果您自定义 API,您可以参考 EvalScope 文档的相关设置构建源码,再从源码安装 EvalScope。
是的,我是用这个之后出现的现在是相同的问题。 是不是新版做了什么调整? 我一个月前使用都是正常的
可以在上面图片中看到,指令在执行中(被卡住)
输出结果卡到如上所示的位置 半天不动了。
docker日志如上。
我采用了你说的这些调用方式 但是依旧无法存储数据库。
能否麻烦帮忙答疑解惑一下,卡住很久了
理解您着急的心情,我们在尝试复现。目前我们测试了最近两个版本的 EvalScope ,使用 OpenAI API 并没有遇到该问题,您的版本是?
python 3.10 Name: evalscope Version: 0.5.5 Summary: EvalScope: Lightweight LLMs Evaluation Framework Home-page: https://github.com/modelscope/evalscope Author: ModelScope team Author-email: contact@modelscope.cn License: Location: /mnt/nvme/nvme0/workspace/miniconda/envs/evalscope/lib/python3.10/site-packages Requires: absl-py, accelerate, cachetools, datasets, editdistance, jieba, jsonlines, matplotlib, modelscope, nltk, openai, pandas, plotly, pyarrow, pympler, pyyaml, regex, requests, requests-toolbelt, rouge-chinese, rouge-score, sacrebleu, scikit-learn, seaborn, sentencepiece, simple-ddl-parser, tabulate, tiktoken, torch, tqdm, transformers, transformers-stream-generator Required-by:
python 3.8 torch 2.1 Name: vllm Version: 0.4.0+cu116 Summary: A high-throughput and memory-efficient inference and serving engine for LLMs Home-page: https://github.com/vllm-project/vllm Author: vLLM Team Author-email: License: Apache 2.0 Location: /opt/conda/lib/python3.8/site-packages Requires: cmake, fastapi, ninja, numpy, prometheus-client, psutil, py-cpuinfo, pydantic, ray, requests, sentencepiece, tiktoken, transformers, uvicorn Required-by:
理解您着急的心情,我们在尝试复现。目前我们测试了最近两个版本的 EvalScope ,使用 OpenAI API 并没有遇到该问题,您的版本是?
目前看来,您的环境是没有问题的,我们也无法复现该问题。您是否修改过 EvalScope 的源码?
上文我们发现的问题是在 evalscope/perf/http_client.py 文件的 statistic_benchmark_metric_worker 函数中 407 行:
avg_time_per_token = total_time / n_total_completion_tokens
可能出现 ZeroDivisionError: float division by zero,导致直接退出循环,陷入无结束的等待。
而出现 ZeroDivisionError 的原因是 evalscope/perf/custom_api.py 的 parse_responses 无法解析 OpenAI 格式的 Response,导致 n_total_completion_tokens 取值为 0。
能否请您检查一下,您遇到的是否是上述原因导致的问题?
我一开始没有修改过源代码,直接使用openai的api格式也不行。然后在custom里面将response的代码替换成openai里面的也不行
通过错误以及增加日志排查 发现是statistic_benchmark_metric_worker benchmark_data_queue.task_done()卡住 无法继续执行。可能是什么原因?
上文我们发现的问题是在 evalscope/perf/http_client.py 文件的 statistic_benchmark_metric_worker 函数中 407 行: avg_time_per_token = total_time / n_total_completion_tokens 可能出现 ZeroDivisionError: float division by zero,导致直接退出循环,陷入无结束的等待。
那么看起来,您遇到的就是这个问题,能否请您排查:
n_query_prompt_tokens, n_query_completion_tokens = api_plugin.parse_responses(
benchmark_data["response_messages"],
request=benchmark_data["request"])
这一部分返回值是否正常?
上文我们发现的问题是在 evalscope/perf/http_client.py 文件的 statistic_benchmark_metric_worker 函数中 407 行: avg_time_per_token = total_time / n_total_completion_tokens 可能出现 ZeroDivisionError: float division by zero,导致直接退出循环,陷入无结束的等待。
那么看起来,您遇到的就是这个问题,能否请您排查:
n_query_prompt_tokens, n_query_completion_tokens = api_plugin.parse_responses( benchmark_data["response_messages"], request=benchmark_data["request"])
这一部分返回值是否正常?
代码没走到这一步,在try except里面就卡住了
能看看您添加日志的位置和日志的输出吗?
程序跑完之后,一直卡住,没有调用API,也没有写入数据库。
wandb 调用成功,数据库创建成果,但是数据库没有写入任何数据。