컴퓨터비전 프로젝트의 클라우드 비용은 “GPU 시간당 얼마”로 계산했다가 두 배 이상 어긋나는 일이 흔하다. 원인은 두 가지다. GPU가 놀고 있는 시간과 데이터를 옮기는 값이다.
이 글은 시간당 단가표 대신 그 두 가지를 어떻게 볼 것인지에 초점을 맞춘다. 단가는 자주 바뀌지만 이 구조는 잘 안 바뀐다.
컴퓨터비전 워크로드가 다른 점
언어 모델 학습은 대체로 연산 자체가 병목이다. 컴퓨터비전은 다르다.
- 입력이 무겁다. 고해상도 이미지와 비디오를 매 스텝 읽어야 한다
- 전처리가 CPU를 먹는다. 디코딩, 리사이즈, 증강(augmentation)이 CPU에서 돌면 GPU가 기다린다
- 데이터셋이 크다. 수십 기가에서 테라바이트 단위가 흔하고, 이걸 옮기는 값이 든다
그래서 GPU 사양표(연산 성능)만 보고 고르면 실패한다. 볼 항목의 우선순위가 다르다.
| 순위 | 항목 | 왜 |
|---|---|---|
| 1 | VRAM 용량 | 배치 크기와 입력 해상도를 결정한다. 부족하면 아예 못 돌린다 |
| 2 | vCPU 수와 메모리 | 데이터 로딩·증강이 여기서 돈다. 부족하면 GPU가 논다 |
| 3 | 로컬 디스크(NVMe) | 데이터셋을 로컬에 두면 네트워크 스토리지보다 훨씬 빠르다 |
| 4 | GPU 연산 성능 | 위 셋이 충족된 다음에 의미가 있다 |
| 5 | 시간당 단가 | 마지막에 본다 |
GPU 사용률을 먼저 확인하는 습관을 들이면 이 순서가 왜 이런지 바로 이해된다. 학습 중 nvidia-smi로 사용률을 봤을 때 계속 50% 아래를 오간다면, 더 비싼 GPU를 빌려도 그 돈이 대기 시간에 쓰인다.
# 데이터 로딩 병목을 줄이는 기본 설정
loader = DataLoader(
dataset,
batch_size=64,
num_workers=8, # CPU 코어 수에 맞춰 조정
pin_memory=True, # CPU→GPU 전송 가속
persistent_workers=True,
prefetch_factor=4,
)
num_workers를 0이나 2로 둔 채 GPU 탓을 하는 경우가 정말 많다. 이 한 줄이 다른 어떤 인스턴스 업그레이드보다 싸다.
제공사 유형별 성격
업체명을 나열하는 대신 성격으로 나눈다.
대형 종합 클라우드 — 리전과 부가 서비스가 가장 많고 기업 요구사항(보안, 규정 준수, VPC)을 충족한다. 대신 GPU 시간당 단가가 가장 비싼 편이고 요금 구조가 복잡하다. 회사 인프라와 통합해야 하거나 규정 준수가 필요할 때 선택한다.
GPU 특화 클라우드 — GPU 임대에 집중해 같은 카드가 훨씬 싸다. 대신 부가 서비스가 적고, 가용성이 시간대에 따라 들쭉날쭉할 수 있다. 개인 연구나 스타트업의 실험에 가장 합리적이다.
분산형·마켓형 — 개인·소규모 사업자가 내놓은 GPU를 빌린다. 가장 싸다. 대신 안정성과 보안 수준이 제공자마다 다르고, 민감한 데이터를 올리기에는 부적절하다. 공개 데이터셋으로 하는 실험에 맞는다.
스폿·선점형 인스턴스 — 어느 유형이든 제공되는 할인 옵션이다. 언제든 회수될 수 있는 대신 크게 싸다. 학습처럼 중단됐다 이어서 할 수 있는 작업에 적합하다. 반드시 체크포인트를 자주 저장하는 코드가 전제다.
숨은 비용: 데이터 전송료와 스토리지
여기서 예산이 어긋난다.
이그레스(egress, 밖으로 나가는 전송) — 클라우드로 데이터를 넣는 것은 대체로 무료이고, 빼내는 것에 요금이 붙는다. 데이터셋을 올렸다가 결과물과 체크포인트를 내려받고, 다른 클라우드로 옮기는 과정에서 GPU 요금에 맞먹는 금액이 나오는 경우가 있다.
스토리지 — 인스턴스를 껐다고 저장 요금이 멈추는 게 아니다. 데이터셋을 붙여둔 볼륨은 계속 과금된다. 실험이 끝나면 정리해야 한다.
대책 세 가지
- 데이터셋을 한 번만 올린다. 실험마다 다시 올리지 말고 스냅샷을 만들어 재사용한다
- 체크포인트는 이그레스가 무료이거나 싼 오브젝트 스토리지로 뺀다. 학습 중 자동 동기화해두면 인스턴스가 회수돼도 안전하다
- 필요한 것만 내려받는다. 전체 체크포인트가 아니라 최종 가중치만
# 학습 중 체크포인트를 외부 스토리지로 주기적 동기화
while true; do
rclone sync ./checkpoints remote:project/checkpoints --transfers 4
sleep 600
done
비용을 줄이는 실전 순서
- 먼저 작은 인스턴스에서 파이프라인을 완성한다. 코드 버그를 비싼 GPU 위에서 잡지 않는다
- GPU 사용률을 확인한다. 낮으면 데이터 로딩부터 고친다
- 혼합 정밀도(AMP)를 켠다. 대부분의 비전 모델에서 정확도 손실 없이 속도와 메모리가 개선된다
- 스폿 인스턴스 + 체크포인트 자동 저장으로 전환한다
- 끝나면 즉시 인스턴스와 볼륨을 정리한다. 잊고 켜둔 GPU가 가장 비싼 실수다
- 예산 알림을 건다. 대부분의 클라우드가 금액 임계값 알림을 제공한다
⚠️ GPU 시간당 단가, 이그레스 요금, 인스턴스 종류는 제공사와 리전마다 다르고 자주 바뀐다. 실제 금액은 각 제공사의 공식 요금 계산기로 확인할 것.

Leave a Reply