BM-K / Sentence-Embedding-Is-All-You-Need

Korean Sentence Embedding Repository
Creative Commons Attribution Share Alike 4.0 International
202 stars 17 forks source link

CUDA out of memory #8

Closed kwjy1 closed 1 year ago

kwjy1 commented 1 year ago

sentence embedding을 위해 3000개 정도 되는 문장 리스트에 대해 임베딩을 시도하면 OOM 문제가 발생합니다.

100개 이내의 문장을 쓸 때는 문제가 없는걸 보면 모델이 계속 메모리에 적재되는 것 같습니다.

del model torch.cuda.empty_cache() gc.collect()

등을 활용해보긴 했는데 해결이 되지 않습니다.

cature

BM-K commented 1 year ago

안녕하세요. 입력값인 docs의 list 길이가 100이라는 것은 모델에 100 batch size로 입력값이 들어간다는 뜻입니다. 그렇기에 @kwjy1님께서 사용하고 계신 gpu의 메모리에 따라 OOM 문제가 발생할 수 있으므로 입력값의 크기를 조정하거나 더 많은 메모리를 할당할 수 있는 gpu 사용을 권장해드립니다.

kwjy1 commented 1 year ago

빠른 답변 감사합니다. 저도 그런 문제인것 같아 배치를 나누어 반복문을 구성하였는데 결국 메모리가 쌓여서 OOM 문제가 발생하더라고요

capture3

capture2

BM-K commented 1 year ago

embeddings list에 계속해서 gpu tensor 값이 append 되기 때문에 발생하는 OOM으로 보입니다. embeddings.append 코드에서 gpu tensor 값을 cpu로 변경하여 적재하시면 해결될 것 같습니다.

kwjy1 commented 1 year ago

embeddings_batch.cpu().detach().numpy() 해결되었습니다. 감사합니다! Problem solved. Thanks a lot !!!