Summary

  • GPU는 CPU와 달리 수천~수만 개의 단순 코어로 동시 연산을 수행하도록 설계된 장치이며, 딥러닝의 행렬 연산에 최적화돼 있다.
  • GPU 메모리(VRAM)와 코어(CUDA Core)가 학습 성능을 좌우하며, VRAM이 부족하면 OOM(Out Of Memory)이 발생한다.
  • GPU 1장은 독립된 연산 장치이며, 여러 장이 꽂혀 있어도 기본적으로 각자 독립 동작한다.
  • 공유 서버에서는 nvidia-smi로 상태를 확인하고 CUDA_VISIBLE_DEVICES를 지정하는 등 사용 원칙을 지켜야 한다.

들어가며

“왜 같은 모델인데 GPU에서 학습하면 이렇게 빠를까?” 딥러닝을 다루다 보면 한 번쯤 드는 질문이다. 이 글은 GPU 하드웨어가 CPU와 어떻게 다른지, VRAM·코어가 학습에서 어떤 역할을 하는지, 그리고 공유 서버에서 GPU를 다룰 때 지켜야 할 실전 원칙까지 다룬다. GPU가 내부적으로 어떻게 스레드를 실행하는지의 심화 원리는 GPU 내부 연산 메커니즘 — 스레드·워프·SIMT에서 별도로 다룬다.


GPU란

GPU(Graphics Processing Unit)는 원래 화면의 픽셀을 빠르게 계산하기 위해 설계된 연산 장치다. CPU와 달리 단순한 연산을 수만 개 코어가 동시에 처리하는 구조로, 딥러닝의 행렬 연산에 최적화되어 있다.

구분CPUGPU
코어 수수십 개수천~수만 개
코어 특성복잡한 연산에 강함단순 연산을 동시에
메모리RAM (수백 GB)VRAM (수십 GB)
딥러닝 역할데이터 로드·전처리·제어행렬 연산 (학습)

GPU 하드웨어 구성

VRAM (Video RAM)

GPU 전용 메모리다. 학습에 필요한 데이터와 모델 가중치를 올려두는 작업 공간이다.

VRAM과 RAM의 비유 — 책상과 창고

비유: 책상과 창고
 
CPU RAM (251 GB)  →  VRAM (24 GB)
     창고                책상
  데이터 전체 보관    지금 당장 쓸 것만 꺼내 올림
  • 배치 데이터 + 모델 가중치 + 중간 계산값이 모두 VRAM 안에서 처리된다.
  • VRAM이 부족하면 학습 자체가 불가능하다 (OOM: Out Of Memory 에러 발생).
  • 배치 사이즈를 줄이면 VRAM 사용량을 낮출 수 있다.

코어 (CUDA Core)

GPU 안의 연산 단위다.

직관적 예시 — 픽셀 렌더링 (GPU 본래 설계 목적)

4K 이미지(3840 × 2160)를 화면에 그린다고 하면, 총 8,294,400개 픽셀 각각의 색을 계산해야 한다. 코어 수는 예시로 CPU 16코어, GPU는 RTX 4090의 CUDA Core 16,384개를 기준으로 삼는다.

CPU 순차 처리 vs GPU 병렬 처리 — 픽셀 렌더링

CPU 방식: 코어 16개가 순서대로 계산
  → 픽셀 1 계산 → 픽셀 2 계산 → ... → 픽셀 8,294,400 계산
  → 오래 걸림
 
GPU 방식: 코어 16,384개(RTX 4090 기준)가 동시에 계산
  → 픽셀 1~16,384 동시 계산 (1회차)
  → 픽셀 16,385~32,768 동시 계산 (2회차)
  → ...
  → 8,294,400 ÷ 16,384 ≈ 506회 반복이면 전체 완료 → 수백 배 빠름

딥러닝에서도 동일한 원리로, 배치 데이터의 각 행을 코어들이 나눠 동시에 계산한다.

배치 데이터의 코어별 분할 연산

배치 16,384행
├── 코어 1     → 1번째 행 연산
├── 코어 2     → 2번째 행 연산
     ...
└── 코어 16,384 → 16,384번째 행 연산
              ↓ 동시 완료

“코어 1개 = 행 1개 전담”은 몇 개의 코어를 동시에 쓰는지(병렬화 단위) 를 정할 뿐, 그 코어가 얼마나 오래 걸리는지는 별개다. 행 안의 열(feature) 개수만큼 코어 내부에서 연산을 처리해야 하므로, 열이 많을수록 코어 1개가 그 행을 끝내는 데 걸리는 시간이 늘어난다.

행 수(배치 크기)는 동시에 쓰는 코어 수를, 열 수(feature 차원)는 코어 1개당 작업 시간을 결정한다.

참고로, 모델링에서 배치 사이즈가 코어 수를 의미하진 않는다. 배치 사이즈는 사람이 정하는 하이퍼파라미터이고, 코어 수는 하드웨어 고정값이다. 배치가 코어보다 많으면 코어가 나눠서 여러 번 처리하고, 적으면 일부 코어만 사용된다.

GPU 여러 장의 의미

GPU 1장은 독립된 연산 장치다 (VRAM, 코어 모두 별도). 여러 장이 서버에 꽂혀 있어도 기본적으로 각자 독립 동작한다.

서버 내 GPU 여러 장의 독립 동작

서버
├── GPU 0 (RTX 4090)  → 모델 A 학습
├── GPU 1 (RTX 4090)  → 다른 팀원 실험
├── GPU 2 (RTX 4090)  → 모델 B 학습
└── GPU 3 (RTX 4090)  → 대기 중

각 GPU는 서로 독립 → 간섭 없이 동시 실행 가능

하나의 모델을 여러 GPU에 분산하는 것(Multi-GPU)도 가능하지만, 별도 코드가 필요하며 현재 프로젝트는 모델 1개 = GPU 1장 구성이다.


GPU 사용 가이드 (실전)

GPU 상태 확인 — nvidia-smi

nvidia-smi 실행

nvidia-smi

출력 항목 해석:

항목의미정상 범위
TempGPU 온도학습 중 70~85°C
Pwr: Usage/Cap현재 전력 / 최대 전력학습 중 350~440W
Memory-UsageVRAM 사용량 / 전체용량 초과 시 OOM
GPU-Util연산 사용률학습 중 90~100%
ProcessesGPU 점유 프로세스PID + 사용량 확인

실시간 갱신 및 프로세스별 확인

# 1초 간격 실시간 갱신
watch -n 1 nvidia-smi
 
# GPU별 프로세스만 확인
nvidia-smi --query-compute-apps=pid,used_memory,gpu_uuid --format=csv

GPU 제조사별 확인 명령어

제조사대표 제품확인 명령어비고
NVIDIARTX, Tesla, A100nvidia-smi딥러닝 표준, CUDA 지원
AMDRadeon, Instinctrocm-smiROCm 프레임워크
AppleM1/M2/M3 (통합 GPU)sudo powermetricsRAM·VRAM 공유 구조
IntelArcintel_gpu_top딥러닝 지원 초기 단계

공유 서버 사용 원칙

  1. 실행 전 nvidia-smi 확인 — 다른 팀원이 사용 중인 GPU에 올리지 않는다.
  2. CUDA_VISIBLE_DEVICES 반드시 지정 — 미지정 시 기본값 GPU 0에 몰린다.
  3. 타인 프로세스 kill 금지root 소유 프로세스는 절대 종료하지 않는다.
  4. 완료 후 VRAM 해제 확인nvidia-smi로 점유 해제 확인 후 다음 사용자에게 넘긴다.
  5. 온도 이상 시 공유 — 90°C 이상 지속되면 팀에 알린다.

마치며

GPU가 빠른 이유는 수많은 단순 코어가 데이터를 동시에 나눠 처리하기 때문이다. VRAM은 그 코어들이 당장 쓸 데이터·가중치를 올려두는 작업 공간이며, 부족하면 OOM이 발생한다.

  • VRAM 부족(OOM)이 의심되면 배치 사이즈부터 줄여본다.
  • 공유 서버에서는 작업 전 nvidia-smi로 점유 상태를 확인하고 CUDA_VISIBLE_DEVICES를 반드시 지정한다.
  • GPU가 스레드 단위로 연산을 어떻게 쪼개 실행하는지는 GPU 내부 연산 메커니즘 — 스레드·워프·SIMT에서 이어서 다룬다.

Reference