Python, PyTorch, Jupyter에서 GPU 메모리 지우는 방법 (커널 재시작 없이)
Python, PyTorch, Jupyter에서 GPU 메모리 지우는 방법 (커널 재시작 없이)
다음은 Python, PyTorch 및 Jupyter 환경에서 GPU 메모리를 지우는 방법입니다.
torch.cuda.empty_cache() 사용
torch.cuda.empty_cache()
함수는 PyTorch에서 GPU 메모리에 할당된 모든 캐시를 비웁니다. 이 함수는 학습이 종료되고 더 이상 메모리가 필요하지 않을 때 사용하는 것이 좋습니다.
import torch
# 모델 학습 코드
torch.cuda.empty_cache()
del 연산자 사용
del
연산자를 사용하여 GPU 메모리에 할당된 텐서를 직접 삭제할 수 있습니다.
import torch
# 모델 학습 코드
del tensor1, tensor2
Jupyter 환경에서 %reset 명령어 사용
Jupyter 환경에서 %reset
명령어를 사용하면 모든 변수와 메모리가 재설정됩니다. 이 명령어는 모든 GPU 메모리를 비롯한 모든 변수와 메모리를 지우려는 경우에 유용합니다.
# Jupyter 환경에서
%reset
nvidia-smi 명령어 사용
nvidia-smi
명령어는 GPU 사용량 및 메모리 정보를 확인하는 데 사용됩니다. 이 명령어를 사용하여 GPU 메모리 사용량이 감소했는지 확인할 수 있습니다.
# 터미널에서
nvidia-smi
참고:
- 위의 방법 중 하나를 사용하여 GPU 메모리를 지운 후에도 일부 메모리가 사용 중일 수 있습니다. 이는 시스템 프로세스 및 기타 응용 프로그램에서 사용하는 메모리 때문일 수 있습니다.
- GPU 메모리 누수 문제가 발생하는 경우 PyTorch 및 CUDA 버전을 업데이트하거나 드라이버를 재설치하는 것이 좋습니다.
- GPU 메모리 관리에 대한 자세한 내용은 PyTorch 문서 및 CUDA 문서를 참조하십시오.
예제 코드
import torch
# 모델 학습 코드
# GPU 메모리 사용량 확인
print(torch.cuda.memory_allocated())
# `torch.cuda.empty_cache()` 사용
torch.cuda.empty_cache()
# GPU 메모리 사용량 다시 확인
print(torch.cuda.memory_allocated())
# `del` 연산자 사용
tensor1 = torch.randn(1000, 1000)
tensor2 = torch.randn(1000, 1000)
# GPU 메모리 사용량 확인
print(torch.cuda.memory_allocated())
# `del` 연산자를 사용하여 텐서 삭제
del tensor1, tensor2
# GPU 메모리 사용량 다시 확인
print(torch.cuda.memory_allocated())
# Jupyter 환경에서
# GPU 메모리 사용량 확인
!nvidia-smi
# `%reset` 명령어 사용
%reset
# GPU 메모리 사용량 다시 확인
!nvidia-smi
# 터미널에서
nvidia-smi
GPU 메모리를 지우는 대체 방법
gc.collect() 사용
gc.collect()
함수는 Python 가비지 컬렉터를 실행하여 사용하지 않는 메모리를 자동으로 해제합니다. 이 함수를 사용하여 GPU 메모리뿐만 아니라 CPU 메모리도 지울 수 있습니다.
import gc
# 모델 학습 코드
gc.collect()
torch.cuda.reset_max_memory_allocated() 사용
torch.cuda.reset_max_memory_allocated()
함수는 GPU 메모리 할당 최대값을 재설정합니다. 이 함수를 사용하여 GPU 메모리 사용량을 제한할 수 있습니다.
import torch
# 모델 학습 코드
torch.cuda.reset_max_memory_allocated(1024 * 1024 * 1024) # 1GB
CUDA_VISIBLE_DEVICES 환경 변수 사용
CUDA_VISIBLE_DEVICES
환경 변수를 사용하여 사용할 GPU를 지정할 수 있습니다. 이 변수를 사용하여 특정 GPU만 사용하도록 설정하여 다른 GPU의 메모리를 확보할 수 있습니다.
# 터미널에서
export CUDA_VISIBLE_DEVICES=0
# Python 코드
# 모델 학습 코드
다른 GPU 사용
여러 개의 GPU가 있는 경우 다른 GPU를 사용하여 모델을 학습할 수 있습니다. 이렇게 하면 현재 사용 중인 GPU의 메모리를 확보할 수 있습니다.
- 위의 방법 중 어떤 방법이 가장 적합한지는 상황에 따라 다릅니다.
python pytorch jupyter