AI/PyTorch

[PyTorch] Troubleshooting 팁

sangwonYoon 2023. 3. 23. 00:55

GPUtil

GPU의 상태를 보여주는 모듈이다.

!pip install GPUtil

import GPUtil
GPUtil.showUtilization()

 

OOM (Out Of Memory)

  • GPU에서 메모리가 부족할 때 발생한다.
  • batch 사이즈를 줄인 뒤, GPU를 clean 시키고 재실행시켜 본다.

 

del 명령어

python에서는 loop이 끝나도 loop 안에서 선언된 변수가 메모리를 차지하고 있기 때문에, del 명령어를 사용해서 삭제해주는 것이 필요하다.

for x in range(10): 
  i = x
print(i) # 출력: 9

 

torch.cuda.empty_cache()

  • 사용되지 않는 GPU 캐시를 정리하여 가용 메모리를 확보한다.
  • del은 객체를 삭제하지만, 해당 객체에 대한 모든 참조가 삭제되어야 garbage collector에 의해 메모리 할당이 해제된다는 차이점이 있다.

 

torch.no_grad()

모델의 학습이 끝난 뒤, 추론 단계에서는 torch.no_grad()를 사용해서 backward로 인해 메모리가 쌓이지 않도록 한다.

with torch.no_grad():
	for data, target in test_loader:
		output = network(data)
		test_loss += F.nll_loss(output, target, size_average=False).item()
		pred = output.data.max(1, keepdim=True)[1]
		correct += pred.eq(target.data.view_as(pred)).sum()

 

그 외 다양한 GPU 에러 정리

https://brstar96.github.io/devlog/shoveling/2020-01-03-device_error_summary/

 

이유를 알 수 없는 GPU 에러 정리(device-side assert, CUDA error, CUDNN_STATUS_NOT_INITIALIZED 등등…)

딥러닝 모델 학습에 있어서 빠지면 서러운 GPU는 간혹 알 수 없는 오류를 뿜으며 뻗을 때가 있죠. 이 포스팅에서는 깃허브 이슈 페이지와 스택 오버플로우에서 자주 만날 수 있는 GPU-side 에러들에

brstar96.github.io