[THUDM/ChatGLM-6B][BUG/Help] 在有GPU的情况下,推理过程消耗CPU,并且只用CPU的1核

2024-05-20 975 views
5

使用工程中的 api.py启动。 进行推理,推理内容为: {"prompt": "帮我写一段java招聘信息,要求2年工作经验,会国产数据库,会rabbitmq,能需求分析", "history": []}

返回内容大概有240~270字不等。

用jmeter进行压力测试,结果为如下图,10个并发下吞吐量4.5个每分钟 image 过程中,发现有1核CPU使用率为100%,GPU使用率为44%,也就是CPU只使用了1核心,导致不能处理更多的请求,GPU并不能跑满。 image image

使用postman对项目进行debug,发现在下图代码行处理速度挺慢,并且这行代码执行时CPU中1核跑满,GPU40%~50% image

glm在推理时一定要用cpu么,推理不应该都在GPU上跑的么?如何能把CPU多核心用起来,不然都挤在一个核心上,拖慢推理速度。 还是说 有什么设置不对,导致了用到了CPU,在跑之前代码没动过。

用jmeter进行压力测试,结果为如下图,10个并发下吞吐量4.5个每分钟 image 过程中,发现有1核CPU使用率为100%,GPU使用率为44%,也就是CPU只使用了1核心,导致不能处理更多的请求,GPU并不能跑满。 image image

使用postman对项目进行debug,发现在下图代码行处理速度挺慢,并且这行代码执行时CPU中1核跑满,GPU40%~50% image

Environment
- OS: ubuntu 22
- Python: 3.8.16
- Transformers: 4.27.1
- PyTorch: 1.13.1
- CUDA Support (`python -c "import torch; print(torch.cuda.is_available())"`) : 是

回答

0

推理基本用不到CPU。只是 CPU 在等待 GPU 计算完成的时候也是显示占用率 100%。

4

推理基本用不到CPU。只是 CPU 在等待 GPU 计算完成的时候也是显示占用率 100%。

一次提问gpu消耗40~50%的样子,在并发测试的时候,gpu并不能跑满,照道理2个并发GPU应该也能到80~100的样子,GLM只能单线程处理请求么?

3

同求CPU多核运行的改进,一旦能充分利用CPU资源,模型应用的范围和场景也能大大拓宽。或者提供模型转化成gpt格式的脚本也好:pray:

2

我这边也出现了这样的问题,5个并发和1个并发一样,gpu负载40%左右,cpu负载从91%达到270%。感觉gpu没有充分利用起来。

1

有进展吗? 并发起来就全部都慢下来了

3

遇到了同样的问题,想提升GPU的使用率 但是cpu限制住了,