FlagEmbedding icon indicating copy to clipboard operation
FlagEmbedding copied to clipboard

运行一段时间,显存不释放,最终CUDA out of memory

Open caoyutingtjpu opened this issue 2 years ago • 7 comments

使用官方示例 transformers做serving,显存40G,循环调用,A100 40G显存直接打满,如果不重启,这部分显存不释放

from FlagEmbedding import FlagModel
sentences_1 = ["样例数据-1", "样例数据-2"]
sentences_2 = ["样例数据-3", "样例数据-4"]
model = FlagModel('BAAI/bge-large-zh-v1.5', 
                  query_instruction_for_retrieval="为这个句子生成表示以用于检索相关文章:",
                  use_fp16=True) # Setting use_fp16 to True speeds up computation with a slight performance degradation
embeddings_1 = model.encode(sentences_1)
embeddings_2 = model.encode(sentences_2)

caoyutingtjpu avatar Oct 18 '23 07:10 caoyutingtjpu

可以调小batch size,降低显存占用。

staoxiao avatar Oct 18 '23 09:10 staoxiao

可以调小batch size,降低显存占用。

你指的batch size是传入的token数吗? 测试发现,batch_size在128,如果同时请求serving数过多,也会一直不释放,除非重启serving

caoyutingtjpu avatar Oct 19 '23 04:10 caoyutingtjpu

我也碰到这个问题,我是一次传入batchsize的数据循环做,batchsize每次传入都是一样的,为什么显存占用越来越高?

linchen111 avatar Oct 25 '23 07:10 linchen111

文本越长,相同的batch size也会占用更多显存。

staoxiao avatar Oct 25 '23 08:10 staoxiao

import torch

torch.cuda.empty_cache() # 在每次推理结束后,释放显存 希望可以帮助到你。

putdoor avatar Nov 03 '23 07:11 putdoor

import torch

torch.cuda.empty_cache() # 在每次推理结束后,释放显存 希望可以帮助到你。

谢谢,这个方式我们之前尝试过,随着运行时间的增加,显存占用非常高,当前是限制了总的使用显存大小

caoyutingtjpu avatar Nov 07 '23 02:11 caoyutingtjpu

import torch torch.cuda.empty_cache() # 在每次推理结束后,释放显存 希望可以帮助到你。

谢谢,这个方式我们之前尝试过,随着运行时间的增加,显存占用非常高,当前是限制了总的使用显存大小

你好,我也遇到了这个问题,请问您后来又解决吗

Homura2333 avatar Aug 19 '24 04:08 Homura2333