Pytorch를 사용할 때 다양한 에러와 문제들을 접하게 된다.
자주 나올 수 있는 trouble을 어떻게 해결할 지에 대해 다뤄보고자 한다.
정의
문제점
왜, 어디서 문제가 발생했는지 알기 어려움
메모리의 이전 상황을 파악하기 힘듦
방안
batch size를 줄여서 GPU를 clean하게 만든 후 다시 run
GPU util이라는 GPU의 상태를 보여주는 모듈을 사용
torch.cuda.empty_cache() -> 사용되지 않은 GPU 상 cache를 정리하여 가용 메모리를 확보,
메모리가 남는 걸 긁어오는 메소드지만 자주 사용하는 것은 좋지 않음
누적되는 1d tensor 객체이면서 계속하여 저장할 필요가 없는 경우(ex. loss),
파이썬 기본 객체로 변환하여 처리 -> loss.item
loop가 끝나도 파이썬은 변수를 저장하기 때문에 del을 사용해서 삭제
inference 시점에서는 torch.no_grad()를 사용하여 backward pass를 하여 메모리가 자유로움