PyTorch 모델, VRAM 사용량 분석해보니…

Bean·2025년 5월 29일
0

인공지능

목록 보기
45/123

모델의 파라미터 수는 겨우 20만 개 정도 늘었을 뿐인데 (파라미터 수: 1.1M → 1.3M), VRAM 사용량이 2배 가까이 증가했습니다...

보통 이런 현상의 원인은 단순한 파라미터 수 증가가 아니라, feature map 크기의 변화 때문입니다. 이 글에서는 PyTorch의 3D U-net 기준으로, VRAM 사용량에 가장 큰 영향을 미치는 요인들을 분석해보겠습니다.


1. 입출력 채널 수 증가가 메모리 폭발의 시작

입출력 채널 수가 32 → 64로 늘어나면, feature map이 차지하는 메모리는 최대 4배까지 증가할 수 있습니다. 왜냐하면, 텐서의 메모리 사용량은 다음과 같이 계산되기 때문입니다:

메모리 사용량 = 배치 크기 × 채널 수 × 해상도(D × H × W) × 데이터 타입 크기

예시:

(B, 32, D, H, W) → (B, 64, D, H, W)

채널 수만 두 배 늘어도 메모리 사용량은 4배가 될 수 있습니다. 특히 여러 레이어에 걸쳐 이 변화가 적용되면 누적 메모리는 훨씬 커집니다.

VRAM이 4배로 늘어난 이유:
1) 순전파 활성화(activations) + 역전파용 저장(gradient buffers)

  • 순전파에 쓰이는 feature map 메모리
  • 역전파 때 gradient 계산을 위해 저장해 두는 activation buffer
    두 종류의 버퍼가 모두 채널 수에 비례해 커지기 때문입니다.

채널 수 2배 →순전파 activation은 2배→역전파 buffer도 2배 → 총 4배 화소(pixel) 데이터가 메모리에 올라갑니다.


2. 입력 해상도 증가: 2배가 아니라 8배

3D 볼륨 데이터에서는 해상도가 32³ → 64³로 증가할 경우, 텐서 크기는 2³ = 8배가 됩니다.

예시:

(32, 32, 32) → (64, 64, 64)

이러한 해상도 증가는 feature map 크기를 급격히 증가시키며, 그 결과 VRAM도 순식간에 소모됩니다.


3. 정리: VRAM 증가의 진짜 주범은?

요소파라미터 수 영향VRAM 영향증분 비율 추정
채널 수 (32 → 64)↑ 약간↑↑↑2~4배
해상도 (32³ → 64³)-↑↑↑↑↑↑↑↑8배 이상
파라미터 수 (1.1M → 1.3M)↑ 조금거의 없음1.2배 정도

결론: VRAM 사용량의 급격한 증가는 대부분 intermediate feature map 크기 때문이지, 파라미터 개수 때문이 아닙니다.


4. 팁: 메모리 분석 도구 활용하기

PyTorch에서는 다음과 같은 도구로 GPU 메모리를 더 자세히 분석할 수 있습니다:

  • torch.cuda.memory_summary(): 메모리 현황 요약 출력
  • torch.profiler: 메모리 타임라인과 병목 분석

5. 요약

  • VRAM 2배 증가의 원인은 해상도 및 채널 수 증가
  • 파라미터 수 증가는 상대적으로 영향이 미미
  • PyTorch에서는 활성화 텐서가 VRAM의 핵심 요인
  • 분석에는 memory_summary()profiler 활용

profile
AI developer

0개의 댓글