활용 사례

대학원생과 연구실을 위한 GPU 서버 활용법

GPU를 1년 내내 돌리지 않거나 실험마다 필요한 VRAM이 다르면 구매보다 대여가 편해요. 버전 고정, 저장 이미지, 시드 설정으로 재현성을 챙기고, 다 쓴 서버는 바로 삭제하세요.

업데이트
  1. RTX 3090 24GB시간당 230원

    BF16을 지원해서 대부분의 논문 재현, 캐글, 졸업 프로젝트를 한 장으로 돌릴 수 있어요.

  2. V100 16GB준비 중

    V100으로 실험한 논문을 비슷한 조건에서 재현할 때 맞지만, BF16이 없어 FP16으로 돌려야 해요.

  3. RTX 3060 Ti 8GB준비 중

    코드 검증, 작은 모델 실험, 수업 과제처럼 가벼운 작업에 맞아요.

내 모델에 필요한 메모리는 LLM VRAM 계산기로 확인할 수 있어요.

이런 상황에서 쓰기 좋아요

  • 연구실 공용 GPU 대기가 길어서 학회 마감 전에 실험을 못 돌리는 경우
  • 논문 코드를 저자와 비슷한 GPU와 CUDA 환경에서 재현해야 하는 경우
  • 캐글 노트북의 주간 GPU 한도나 세션 시간으로는 학습이 끝나지 않는 경우
  • 졸업 프로젝트나 캡스톤처럼 정해진 기간에만 GPU가 필요한 경우

GPU 구매와 대여, 무엇이 맞을까요

장비는 쉬는 시간에도 비용이 이미 들어가 있고, 대여는 서버가 있는 시간만큼만 요금이 나가요. GPU가 1년 동안 실제로 얼마나 돌아갈지부터 따져 보세요.

GPU 구매와 대여를 고르는 기준
기준구매가 맞는 경우대여가 맞는 경우
사용 패턴1년 내내 거의 쉬지 않고 돌아가요마감 전이나 특정 실험 기간에 몰려요
필요한 VRAM실험 규모가 일정해서 한 종류로 충분해요실험마다 필요한 VRAM이 달라요
운영전력, 냉각, 고장 대응을 맡을 공간과 사람이 있어요하드웨어 관리 없이 실험만 하고 싶어요
예산장비 구매 예산을 한 번에 집행할 수 있어요쓴 만큼 나가는 비용이 계획하기 편해요
데이터기관 밖으로 반출할 수 없는 데이터예요외부 서버에 올려도 되는 데이터예요

평소 실험은 연구실 장비로 하고, 마감 전에 몰리거나 큰 VRAM이 필요한 실험만 빌려서 돌려도 돼요. 환자 정보 같은 민감한 데이터라면 기관의 반출 규정과 연구 승인 조건부터 확인하세요.

재현 가능한 실험 환경 만들기

같은 코드라도 라이브러리, CUDA, GPU가 바뀌면 결과가 달라질 수 있어요. 환경을 함께 남겨 두면 몇 달 뒤 리뷰어 질문이나 후속 실험 때 같은 조건을 다시 만들 수 있어요.

  • pip freeze나 conda env export로 패키지 버전을 고정해요.
  • GPU, 드라이버, CUDA, PyTorch, cuDNN 버전을 결과 폴더에 저장해요.
  • 서버 환경은 저장 이미지로 남기고, 어떤 실험에 어떤 이미지를 썼는지 적어 두세요.
  • 난수 시드를 고정하고, 실행마다 결과가 달라지는 연산을 줄여요.
bash
nvidia-smi --query-gpu=name,driver_version --format=csv > env.txt
python -c "import torch; print(torch.__version__, torch.version.cuda, torch.backends.cudnn.version())" >> env.txt
pip freeze > requirements.lock.txt
실험을 시작할 때 환경 정보를 파일로 남겨요.
python
import os
import random

import numpy as np
import torch


def set_seed(seed: int = 42) -> None:
    os.environ["CUBLAS_WORKSPACE_CONFIG"] = ":4096:8"
    random.seed(seed)
    np.random.seed(seed)
    torch.manual_seed(seed)
    torch.cuda.manual_seed_all(seed)
    torch.backends.cudnn.benchmark = False
    torch.use_deterministic_algorithms(True, warn_only=True)


set_seed(42)  # 스크립트 맨 앞, GPU 연산 전에 호출해요
warn_only=True는 결정적 구현이 없는 연산을 만나면 오류 대신 경고만 내요.

그래도 GPU나 라이브러리 버전이 다르면 결과가 비트 단위까지 같지는 않아요. 논문에는 실험한 GPU와 주요 버전을 적고, 여러 시드의 평균과 편차를 보고하세요. PyTorch 재현성 문서도 참고하세요.

오래된 논문 재현에는 V100이 맞을 때가 있어요

Ampere 세대가 널리 쓰이기 전에는 V100으로 실험한 논문이 많아요. 같은 GPU에서 돌리면 배치 크기, 메모리 한계, 혼합 정밀도 설정을 논문과 맞추기 쉬워요. CUDA 10.x로 빌드된 오래된 PyTorch는 Ampere GPU에서 sm_86 is not compatible 경고와 함께 실패할 수 있는데, V100에서는 돌아가요. Shelf의 V100 16GB는 준비 중이에요.

논문이 V100 32GB를 썼다면 16GB에서는 배치 크기를 줄이고 그래디언트 누적으로 실제 배치를 맞추세요. 최신 코드를 V100에서 돌릴 때는 다음을 확인하세요.

  • BF16을 지원하지 않아요. BF16이 기본인 최신 스크립트는 FP16 혼합 정밀도와 손실 스케일링(GradScaler)으로 바꿔야 해요.
  • CUDA 13부터 Volta 지원이 빠졌어요. CUDA 툴킷과 PyTorch 모두 CUDA 12.x 빌드를 쓰세요. 확인 방법은 CUDA 버전 확인하기에 있어요.
  • FlashAttention 2처럼 Ampere 이상을 요구하는 라이브러리는 쓸 수 없어요.

크레딧으로 예산 안에서 실험하기

작은 데이터로 한 에폭을 돌려 시간을 재고, 실험 수와 반복 횟수를 곱해 필요한 GPU 시간을 어림하세요. 예상보다 길어질 때 하이퍼파라미터 탐색 범위를 어디까지 줄일지도 미리 정해 두세요.

  • 크레딧은 선불로 충전해 쓰고, 1크레딧은 1원이에요. 쓰지 않은 유료 크레딧은 환불받을 수 있어요.
  • 이용 요금은 서버를 생성한 시점부터 1시간 단위로 계산되고, 생성할 때 첫 1시간이 청구돼요. 짧은 실험 여러 개는 서버를 여러 번 만들기보다 한 서버에서 이어서 돌리세요.
  • 볼륨과 저장 이미지도 저장 요금이 있어요. 프로젝트가 끝나면 남길 결과를 옮기고 정리하세요.

데이터셋과 결과는 볼륨에 모아 두세요

데이터셋을 볼륨에 한 번 올려 두면 새 서버마다 연결해서 바로 써요. 다른 GPU로 같은 실험을 비교할 때도 마찬가지예요. 폴더를 이렇게 나눠 두면 어떤 결과가 어떤 설정에서 나왔는지 찾기 쉬워요.

text
/mnt/data/
├── datasets/      # 원본 데이터, 실험 중에는 수정하지 않아요
├── checkpoints/   # 실험별 체크포인트
├── runs/          # 설정 파일, 로그, env.txt
└── results/       # 논문 표와 그림에 쓰는 최종 결과
볼륨이 /mnt/data에 연결돼 있다고 가정했어요.

학교 서버나 내 PC의 데이터는 rsync로 주고받으면 연결이 끊겨도 이어서 전송돼요. 볼륨은 백업 서비스가 아니니 원본 데이터와 최종 결과는 학교 스토리지나 연구실 NAS에도 보관하세요.

bash
rsync -avP ./datasets/ <사용자>@<서버 주소>:/mnt/data/datasets/
rsync -avP <사용자>@<서버 주소>:/mnt/data/results/ ./results/
내 PC에서 실행해요. 첫 줄은 올리기, 둘째 줄은 내려받기예요.

실험 하나의 작업 흐름

  1. 서버를 생성해요

    실험에 맞는 GPU를 고르고 데이터셋 볼륨을 연결해요. 이전 실험의 저장 이미지가 있으면 그 이미지로 생성해요.

  2. 접속해서 환경을 기록해요

    SSH로 접속해 nvidia-smi로 GPU를 확인하고, 환경 정보를 runs/에 남겨요. 캐글 데이터는 Kaggle API 토큰을 설정한 뒤 kaggle competitions download -c 대회이름으로 서버에서 바로 받아요.

  3. tmux 안에서 실험을 돌려요

    SSH 연결이 끊겨도 학습이 계속되도록 tmux에서 실행하고, 체크포인트와 로그는 볼륨에 저장해요.

  4. 결과를 옮기고 환경을 남겨요

    결과를 내 PC나 학교 스토리지로 내려받고, 같은 환경이 다시 필요하면 저장 이미지로 남겨요.

  5. 서버를 삭제해요

    다음 실험은 같은 볼륨과 저장 이미지로 새 서버를 만들어 이어 가요.

Shelf에서는

지금은 GA102 20GB와 RTX 3090으로 서버를 만들 수 있고, 다른 GPU는 준비 중이에요. 시간당 요금은 요금 안내에서 확인하세요.

원하는 GPU를 기다려야 할 때는 첫 1시간 요금을 예치하고 GPU 예약 대기열에 들어갈 수 있어요. GPU가 배정되기 전에 취소하면 전액 환불돼요.

자주 묻는 질문

논문을 재현하려면 저자와 같은 GPU가 꼭 필요한가요?

꼭 그렇지는 않아요. 다만 메모리 크기나 BF16 지원 여부가 다르면 배치 크기와 정밀도 설정을 바꿔야 해서 결과가 조금 달라질 수 있어요.

캐글 대회에서 외부 GPU로 학습해도 되나요?

외부에서 학습한 모델을 쓸 수 있는 대회가 많지만, 코드 대회처럼 제출을 캐글 노트북에서 해야 하는 등 규칙이 대회마다 달라요. 참가 전에 대회 규칙 페이지를 확인하세요.

학생 혼자 쓰기에는 어떤 GPU가 적당한가요?

사전 학습 모델을 파인튜닝하거나 큰 배치가 필요하면 24GB가 편해요. 다만 처음부터 큰 GPU를 쓰기보다, 작은 GPU에서 코드가 도는지 먼저 확인하고 옮기면 예산을 아낄 수 있어요.

GPU 서버가 필요할 때

필요한 GPU와 개발 환경을 골라 시간 단위로 시작해요.