본문 바로가기

부스트캠프 AI Tech 3기/이론 : U-stage

[Day10] Pytorch 10. Troubleshooting

OOM : Out Of Memory

iteration을 돌면서 발생

왜,어디서 발생했는지 알기 어려워서 대처가 어려움

#1
CUDNN_STATUS_NOT_INIT #GPU를 제대로 설치하지 않았을 때
#2
device-side-assert #OOM의 일종

 

1. 간단한 방법

Batch size를 줄이고 CPU를 비우고(커널 재실행) 다시 실행해보기

 

2. GPUUtil

GPU Util 로 현재 내 GPU의 상태를 확인한다

iteration 마다 메모리가 늘어나는지 확인할 수 있다

!pip install GPUtil

import GPUtil
GPUtil.showUtilization()

 

3. torch.cuda.empty_cache()

GPU에서 사용하지 않는 캐시 cache 정리

del은 주소 관계만 끊기 때문에 다른 함수다

 

축적되는 변수

 

python 기본객체로 변환하는 방법 

#1
torch_tensor.item
#2
float(torch_tensor)

 

 

 

del 명령어

필요가 없어진 변수를 적절히 삭제한다

ex) for loop에 사용했던 변수

 

가능 batch size 실험

학습시 OOM이 발생하면 batch size를 점점 줄이다가 1까지 실험해보기

 

torch.no_grad()

inference시에는 no_grad로 설정해서 backward시에 쌓이는 메모리를 미리 방지

with torch.no_grad():
    for data, target in test_load
    ...기타 코드

 

  • colab에서는 큰 사이즈 모델 ex) lstm, cnn은 실행하지 않는 것이 좋음
  • tensor의 float precision을 16bit으로 줄이기