본문 바로가기
딥러닝\머신러닝

[pytorch, 딥러닝] CUDA out of memory 에러 해결방법(이미지분석)

by 인포메틱스 2022. 8. 10.
반응형

 

모델을 제작하거나, 사용할 때 가장 많이 발생되는 에러를 정리해보겠습니다.

 

1. CUDA out of memory?!

 말 그대로 메모리 부족으로 모델 작동이 안되는 경우입니다. GPU로 분석할 경우 전용 GPU메모리가 넘치면 멈추게 됩니다.

 이런 error의 경우 모델을 제작할때, 혹은 모델을 사용할때 발생이 됩니다.

 

2. 에러를 어떻게 해결해야하는가?

 CUDA out of memory 에러의 일반적으로 구글링에서의 해결방법은 batch size를 줄여라. 다른 프로세스의 GPU점유를 줄여라 입니다.

 이 방법은 모델을 제작할때 발생하는 에러에 대한 해결방법입니다.

 

 만약 여러분 중에 일부가 어떠한 모델을 사용할때 위 같은 에러가 발생을 한다면, 모델 제작할때 해결방법과 같다고 생각이 되시겠지만, 그렇지 않습니다. 

 

 먼저 보셔야 할것은 모델을 적용해서 사용할 때, 두가지 입니다.

1. model.eval()을 선언하셧는지?

 - eval() 모드는 모델 내에 불필요한 layer들을 비 활성화 시킴니다. 예를 들어서 (Batchnorm, dropout과 같은)

 그러므로서 layer들이 update가 되지 않게 해줍니다.

2. torch.no_grad()를 선언하셧는지?

 no_grad의 경우 각 layer에 들어갈 gradient 계산을 못하게 해줍니다. torch.no_grad()를 사용하지 않으면, gradient를 계속적으로 계산을 하고 메모리를 잡아 먹게 됩니다(메모리 할당량이 계속해서 높아집니다.). 

 

 일부 patch를 classification 하기에는 좋은데, whole slide image 전체를 적용하기에는 메모리가 부족하게 됩니다.


 

 위와 같이 진행해도 모델 사용에 memory부족이 뜬다면, dataloader의 batch size 조절 + 다른프로세스를 꺼버린다던지 하시면 됩니다. 그래도 안된다면, GPU를 좀더 좋은 것을 사셔야 합니다.

 

 혹은 모델을 다시 제작을 하는데, patch size 좀 더 낮은 사이즈로 제작하시게 되면 모델이 필요로 하는 메모리가 줄어듭니다(이미지분석을 기준으로 말씀드립니다.).

728x90
반응형

댓글