CUDA 메모리 부족 오류, allocated·reserved·peak 로그는 어떻게 읽을까
CUDA 메모리 부족 오류를 읽을 때는 현재 텐서 사용량인 allocated, 할당기가 관리하는 reserved, 측정 구간의 최대 텐서 사용량인 peak를 같은 측정 구간·장치 기준으로 기록해야 합니다. 먼저 작업 전후 로그와 peak 초기화 위치를 확인하세요. reserved와 allocated를 더하거나, 둘의 차이를 곧바로 단편화로 해석하면 진단이 어긋납니다. 30초 진단 순서 종료 로그는 낮은데 OOM이 난다: 한 작업 직전 peak를 초기화하고, 작업 후 현재값과 peak를 함께 기록합니다. 반복할수록 allocated가 오른다: 같은 입력 크기에서 기준선을 비교하고 결과 텐서·참조가 남는 위치를 확인합니다. 이 패턴만으로 누수라고 확정하지 않습니다. reserved만 높아 보인다: 먼저 allocator backend와 로그 범위를 확인합니다. 무작정 empty_cache나 allocator 설정 변경부터 하지 않습니다. 적용 범위: PyTorch 2.14 공식 CUDA 문서, NVIDIA CUDA GPU를 쓰는 단일 프로세스의 단일 장치 진단입니다. 확인일은 2026-10-20 KST입니다. 아래 GPU 계측 코드는 문서 기반 미실행 예제 이며, 실제로 실행한 부분은 GPU가 필요 없는 가상 로그 계산과 Python 문법 검사 입니다. 다중 GPU·다중 프로세스·CUDA Graph 캡처 중인 서비스에 그대로 넣는 예제가 아닙니다. 목차와 한 줄 정의 allocated·reserved : 현재 텐서 사용량과 캐싱 할당기의 관리량입니다. peak와 기준 구간 : 마지막 초기화 이후 기록한 최대 텐서 사용량입니다. 작업 전후 계측 : 같은 GPU에서 한 작업의 전후와 피크를 기록합니다. 가상 로그 해석 : 종료 4 GiB와 구간 최대 9 GiB를 구분합니다. 증상별 다음 행동 : 원인을 단정하지 않고 확인 범위를 좁힙니다. 요약·비교와 Appendix : 실행 여부와 제약을 다시 확인합니다. 1. allocated와 reserved는...