-
Notifications
You must be signed in to change notification settings - Fork 419
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chat.py生成结果的时候,GPU的显存会持续增加,最后显存溢出 #66
Comments
把num_beams和max_new_tokens减小,或者把max_memory减小 |
@Facico 好的,我试一下 |
大佬解决了吗,我遇到一样问题,而且随着问答次数上升,显存不断增加,并没有输出结果后释放显存,最终导致溢出。 |
@greatewei 因为问答的时候历史对话是拼接的,当然会越拼越长,在一定的显存要求下是不会超的,但是长度大于你的显存要求是肯定就会超,现在不管那个模型的对话基本都有这个问题。 |
这样的方式是否也能应对并发请求的场景,目前观察到的现象只要有问答显存就会增长,num_beams和max_new_tokens参数减小后的效果是显存增长速度变慢,但是始终是增加,及时问答结束也并且未能得到释放 |
@greatewei @yuxuan2015 |
我尝试了几个case,总的来说显存是只增不降,如果将load_8bit修改为false,响应速度将会很快,但是显存增长也很快,是否有办法结束对话后自动释放显存空间呢? |
@greatewei 把上面说的那个问题修改了也是这样吗 |
是的,只要问题内容足够长,显存会不断增长,load8bit 设置为false 效果更明显 |
@greatewei 因为这个显存消耗是由输入长度和输出长度一起确定的,输入长度会和历史信息一起截取max_memory的长度。 你可以适当减小max_memory,当达到极限长度的时候显存是能保持稳定的 |
使用两段不同的长文本进行测试的效果还是会出现显存溢出,可能还需要其他方法处理。 |
@greatewei 你能提供你的显卡类型和max_memory设置的大小吗 |
v100, 32G显存, max_memory:1024(这个参数我进行了忽略,我采用了llama-index的方式,需要提供更多上下文),即使max_memory参数进行了限制,增个服务的显存是只增不减的,只要尝试次数过多,或者直接忽略max_memory参数的限制,可以很快的复现。 |
@greatewei 就是你使用的不是我们提供的脚本? |
使用你们原版的chat.py脚本可以复现,但是不是很明显,需要改造一下。 |
@greatewei 使用我们的脚本把max_memory设置好了应该是不会有问题的。我也没有你现在的代码我也复现不了你的情况。 |
我恢复了脚本,将load_8bit设置为False 提问第一个问题: 提问第二个问题: |
@greatewei 他这个显存变化应该是他生成长度不同造成的变化 |
嗯,但是一直没有释放,目前我的解决方案是回答输出后释放缓存,效果很明显:torch.cuda.empty_cache() |
这个我们最新版本的chat.py也有加,可以在OOM的时候释放,https://github.com/Facico/Chinese-Vicuna/blob/master/chat.py#L282。 |
哦,我终于知道你是什么意思了,你的意思是随着文本的变长,显存一直变大,但是在下一次输入还没开始的时候就一直保持的这个变大之后的显存是吧。 |
是的,人一多就OOM了,看了一下你的写法是触发OOM后才进行释放,我是evaluate函数的最后增加了torch.cuda.empty_cache() |
运行chat.sh启动服务之后,在生成结果的时候,显存使用会持续增加,直至最后显存溢出,这个有什么解决方法吗
The text was updated successfully, but these errors were encountered: