본문 바로가기
[GPUaaS]/TensorFlow

[TensorFlow vs PyTorch] GPU 메모리 관리 방식 !!

by METAVERSE STORY 2026. 2. 26.
반응형

 

 

아키텍처 → 실제 동작 → OOM 패턴 → 튜닝 방법 → 실무 선택 기준


⭐ 핵심 한 줄 차이

👉 TensorFlow = 선점형(미리 확보)
👉 PyTorch = 필요할 때 할당 + 캐싱

 

 


1️⃣ TensorFlow GPU 메모리 관리 방식

기본 철학

GPU 메모리는 비싼 자원 → 한 번 잡으면 계속 유지

기본 동작 (매우 중요)

TensorFlow 실행하면:

 
 
GPU 메모리 대부분을 바로 확보
 

예시
GPU 80GB → 실행 시 70~75GB 선점

👉 다른 프로세스 못씀
👉 fragmentation 최소화
👉 안정적인 학습


내부 구조

TensorFlow는 BFC allocator (Best-Fit with Coalescing) 사용

특징

  • 큰 메모리 풀 확보
  • 내부에서 블록 분할
  • 조각난 메모리 합침
  • 재할당 최소화

 
 
GPU = 하나의 메모리 풀
TensorFlow 내부에서만 관리
 

장점

✔ OOM 덜 발생
✔ 메모리 조각화 거의 없음
✔ 대규모 모델 안정적
✔ 멀티 GPU 분산 안정성 높음


단점

✔ GPU 공유 어려움
✔ 작은 작업에도 큰 메모리 점유
✔ 인터랙티브 환경 불편 (Jupyter 등)


설정 변경 가능 (매우 중요 실무 옵션)

메모리 증가 방식 (추천)

 
 
tf.config.experimental.set_memory_growth(gpu, True)
 

→ 필요할 때만 증가


메모리 상한 설정

 
 
tf.config.set_logical_device_configuration(
    gpu,
    [tf.config.LogicalDeviceConfiguration(memory_limit=10240)]
)
 

→ GPU 10GB만 사용


 

 

2️⃣ PyTorch GPU 메모리 관리 방식

기본 철학

Python 스타일 → 필요할 때 할당

기본 동작

 
 
tensor.cuda() 할 때 메모리 할당
tensor 삭제해도 OS 반환 안함
→ 캐싱
 

핵심 구조 = Caching Allocator

동작 순서

1 메모리 필요 → GPU에서 확보
2 사용 후 free
3 OS 반환 안함
4 내부 cache 저장
5 다음 요청 재사용

 
 
할당은 동적
해제는 캐싱
 

장점

✔ GPU 공유 쉬움
✔ 인터랙티브 사용 편함
✔ 작은 실험 최적
✔ 필요한 만큼만 사용


단점

✔ fragmentation 발생 가능
✔ OOM 예측 어려움
✔ 메모리 누수처럼 보일 수 있음


중요한 실무 명령어

캐시 반환

 
 
torch.cuda.empty_cache()
 

※ 실제 메모리 해제 아님
※ allocator cache 정리


메모리 확인

 
 
torch.cuda.memory_allocated()
torch.cuda.memory_reserved()
 

allocated = 실제 사용
reserved = 캐싱 포함


 

 

3️⃣ 메모리 해제 방식 차이 (매우 중요)

항목 TensorFlow PyTorch
메모리 확보 시작 시 대부분 필요할 때
메모리 반환 거의 안함 캐싱 유지
OS 반환 거의 없음 거의 없음
fragmentation 거의 없음 발생 가능
GPU 공유 어려움 쉬움
인터랙티브 불편 매우 좋음

 

 


4️⃣ OOM 발생 패턴 차이

TensorFlow OOM

주로 원인

✔ 초기 메모리 부족
✔ 너무 큰 batch
✔ 모델 구조 과대

특징
👉 예측 가능
👉 안정적 실패


PyTorch OOM

주로 원인

✔ fragmentation
✔ cache 누적
✔ graph 참조 유지
✔ tensor 미삭제

특징
👉 갑자기 OOM
👉 GPU 여유 있는데 실패 가능

 

 


5️⃣ 실무 GPU 운영 관점 비교

환경 추천
대규모 학습 TensorFlow
LLM 연구 PyTorch
multi-user GPU 서버 PyTorch
Kubernetes GPU 공유 PyTorch
장시간 안정 학습 TensorFlow
interactive notebook PyTorch

 

 


6️⃣ 멀티 GPU / 분산학습 영향

TensorFlow

  • 메모리 구조 정적
  • NCCL 안정적
  • deadlock 적음

PyTorch

  • rank별 메모리 편차 가능
  • fragmentation 영향 받음
  • DDP에서 memory spike 가능

 

 


7️⃣ GPU 서버 운영자 관점 (중요)

당신처럼 GPU 인프라 운영 기준:

TensorFlow

✔ 예측 가능
✔ 리소스 고정
✔ scheduler 관리 쉬움


PyTorch

✔ 사용자 경험 좋음
✔ 메모리 사용 변동 큼
✔ OOM 분석 필요

 

 


8️⃣ 초고급 내부 구조 비교

 
 
TensorFlow
GPU memory pool → sub allocation → reuse

PyTorch
CUDA malloc → caching allocator → block reuse
 

⭐ 최종 핵심 정리 (실무 필수 기억)

✔ TensorFlow = GPU 선점형 안정 모델
✔ PyTorch = 동적 + 캐싱 유연 모델

✔ TensorFlow = 시스템 친화
✔ PyTorch = 사용자 친화

✔ TensorFlow = fragmentation 최소
✔ PyTorch = fragmentation 관리 필요

 

 

 

반응형

댓글