그래픽카드 메모리 리셋

Donggun Lim·2024년 8월 1일

에러메시지

OutOfMemoryError: CUDA out of memory. Tried to allocate 48.00 MiB. GPU 0 has a total capacty of 23.69 GiB of which 20.81 MiB is free. Process 2921978 has 23.66 GiB memory in use. Of the allocated memory 23.18 GiB is allocated by PyTorch, and 177.60 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

아래 남은 메모리가 가운데 보이는 24526Mib / 24526Mib 입니다.

아래와 같이 코딩하고 실행합니다..

코드 설명

gc.collect():
  1. Python의 가비지 컬렉터를 명시적으로 실행하여 사용되지 않는 객체를 메모리에서 해제합니다. 이 과정을 통해 CPU 메모리를 최적화합니다.
torch.cuda.empty_cache():
  1. PyTorch의 GPU 메모리 캐시를 비워서 실제로 사용 중이지 않은 GPU 메모리를 해제합니다. 이 과정을 통해 GPU 메모리를 최적화합니다.

사용 시기
이 코드를 사용하면 CPU와 GPU 메모리 사용량을 줄일 수 있습니다. 다음과 같은 경우에 유용합니다.

  • 대규모 데이터 처리 후 메모리를 정리해야 할 때.
  • GPU 메모리 부족 오류를 피하기 위해 캐시를 비울 필요가 있을 때.
  • 메모리 사용량을 모니터링하고 최적화할 필요가 있을 때.

주의 사항

  • torch.cuda.empty_cache()는 GPU 메모리 캐시를 비우지만, 실제로 사용 중인 메모리를 해제하지는 않습니다. 따라서 메모리 사용량을 줄이는 데는 한계가 있습니다.
  • gc.collect()를 자주 호출하는 것은 시스템 성능에 영향을 줄 수 있으므로, 필요한 경우에만 사용해야 합니다.

이 코드들을 적절히 사용하면 메모리 관리와 최적화에 도움이 됩니다.

profile
일단 시작하고 완성할거야

0개의 댓글