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와 달리 단순한 연산을 수만 개 코어가 동시에 처리하는 구조로, 딥러닝의 행렬 연산에 최적화되어 있다.
| 구분 | CPU | GPU |
|---|---|---|
| 코어 수 | 수십 개 | 수천~수만 개 |
| 코어 특성 | 복잡한 연산에 강함 | 단순 연산을 동시에 |
| 메모리 | 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출력 항목 해석:
| 항목 | 의미 | 정상 범위 |
|---|---|---|
Temp | GPU 온도 | 학습 중 70~85°C |
Pwr: Usage/Cap | 현재 전력 / 최대 전력 | 학습 중 350~440W |
Memory-Usage | VRAM 사용량 / 전체 | 용량 초과 시 OOM |
GPU-Util | 연산 사용률 | 학습 중 90~100% |
Processes | GPU 점유 프로세스 | PID + 사용량 확인 |
실시간 갱신 및 프로세스별 확인
# 1초 간격 실시간 갱신
watch -n 1 nvidia-smi
# GPU별 프로세스만 확인
nvidia-smi --query-compute-apps=pid,used_memory,gpu_uuid --format=csvGPU 제조사별 확인 명령어
| 제조사 | 대표 제품 | 확인 명령어 | 비고 |
|---|---|---|---|
| NVIDIA | RTX, Tesla, A100 | nvidia-smi | 딥러닝 표준, CUDA 지원 |
| AMD | Radeon, Instinct | rocm-smi | ROCm 프레임워크 |
| Apple | M1/M2/M3 (통합 GPU) | sudo powermetrics | RAM·VRAM 공유 구조 |
| Intel | Arc | intel_gpu_top | 딥러닝 지원 초기 단계 |
공유 서버 사용 원칙
- 실행 전
nvidia-smi확인 — 다른 팀원이 사용 중인 GPU에 올리지 않는다. CUDA_VISIBLE_DEVICES반드시 지정 — 미지정 시 기본값 GPU 0에 몰린다.- 타인 프로세스
kill금지 —root소유 프로세스는 절대 종료하지 않는다. - 완료 후 VRAM 해제 확인 —
nvidia-smi로 점유 해제 확인 후 다음 사용자에게 넘긴다. - 온도 이상 시 공유 — 90°C 이상 지속되면 팀에 알린다.
마치며
GPU가 빠른 이유는 수많은 단순 코어가 데이터를 동시에 나눠 처리하기 때문이다. VRAM은 그 코어들이 당장 쓸 데이터·가중치를 올려두는 작업 공간이며, 부족하면 OOM이 발생한다.
- VRAM 부족(OOM)이 의심되면 배치 사이즈부터 줄여본다.
- 공유 서버에서는 작업 전
nvidia-smi로 점유 상태를 확인하고CUDA_VISIBLE_DEVICES를 반드시 지정한다. - GPU가 스레드 단위로 연산을 어떻게 쪼개 실행하는지는 GPU 내부 연산 메커니즘 — 스레드·워프·SIMT에서 이어서 다룬다.
Reference