본문 바로가기

5. Troubleshooting

[Pytorch] colab memory CUDA out of memory. Tried to allocate 24.00 MiB (GPU 0; 7.43 GiB total capacity; ......

일단 GPU메모리가 바닥나서 나는 오류이다.

Colab쓸때 가끔 보는오류

 

나는 이유도 여러가지 있고 해결방법도 여러가지 있다.

 

일단 기본적인 원인을 꼽자면

정말로 GPU메모리가 부족할정도로 큰 데이터가 들어왔다는것이다.

 

  1. 전체 데이터를 모두 CUDA로 만들고 학습을 돌렸을때 -> CPU상태의 데이터를 batch로 받아 연산시에만 CUDA로 바꾸어 쓴다.
    CUDA가 생각보다 용량이 작고 당장 계산하지 않을 데이터를 CUDA에 넣어놓는것은 비효율적,.. 약간 뻔한 이유
  2. (1)번을 수행했음에도 메모리가 부족한 경우가 있는데 그것은 한 batch에서 너무 많은 데이터를 사용하기 때문이다. batch size를 줄여주자.
  3. cuda 캐시를 비워주는 아래 명령을 이용해보자. 왠만하면 요쯤에서 해결된다.
    # cuda delete cache
    torch.cuda.empty_cache()
    
  4.  (1, 2, 3)번 모두 했음에도 잘 안되는 경우에는 파이썬 내의 가비지 컬랙터를 이용하여 안쓰는 메모리 정리를 좀 해주자
    import gc
    gc.collect()​
    가끔 이걸로 해결된다.
  5. 위에가 모두 안될경우 Colab이나 환경 문제일 확률이 크다. colab일경우 런타임을 초기화 했다가. 다시실행하면 되는경우가 많다.
    주로 코드에 약간 문제가 있거나, 실행중 interrupt한뒤 에러가 생기는경우 이렇게하면 될확률이 높다.
    colab아니면... 음... 재설치? 안해봐서 모르겠다.

 

나는 transformer 모델 돌리다가 위와같은 에러를 만났다.

 

아참 그리고 좀 골때린 소리처럼 들릴지 몰라도 자료형 때문에 나는 에러가 한번 발생하면, 이유없이 해당에러가 나와서 진행을 못하게 만드는 경우가 있다 pandas환경에서부터 원하는 자료형을 만들어놓고 tensor로 옮기도록 하자. (매우중요!!!)