활용 사례

코랩 대신 쓰는 JupyterLab GPU 서버

GPU 서버의 JupyterLab은 런타임이 초기화되지 않아서 설치한 패키지와 파일이 그대로 남아요. 대신 노트북을 닫아도 요금은 계속되니, 데이터는 볼륨에 두고 작업이 끝나면 서버를 삭제하세요.

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

    노트북에서 하는 대부분의 모델 실험과 7~8B급 LLM 추론을 한 장으로 할 수 있어요.

  2. GA102 20GB시간당 190원

    BF16과 최신 라이브러리를 쓸 수 있고, 일반적인 딥러닝 실습과 QLoRA 실험에 충분해요.

  3. RTX 3060 Ti 8GB준비 중

    CUDA와 PyTorch를 익히거나 작은 모델로 코드를 검증하는 정도에 맞아요.

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

이런 분께 맞아요

  • 학습 도중 런타임이 끊겨 처음부터 다시 돌린 적이 있는 분
  • 매번 같은 패키지 설치와 데이터 업로드에 시간을 쓰는 분
  • 같은 GPU 메모리 크기를 기준으로 실험 결과를 비교해야 하는 분
  • 회사나 연구실 데이터를 개인 Google Drive에 올리기 어려운 분

노트북을 쓰는 방식은 그대로이고, 커널이 도는 곳만 내가 고른 GPU 서버로 바뀌어요. 더 자세한 비교는 Colab 대안 비교에 있어요.

호스팅 노트북과 무엇이 달라질까요

호스팅 노트북과 GPU 서버의 JupyterLab 비교
항목호스팅 노트북 (Colab 등)GPU 서버 + JupyterLab
세션사용량 한도나 유휴 시간에 따라 끊길 수 있어요서버를 삭제할 때까지 유지돼요
GPU배정되는 GPU가 달라질 수 있어요생성할 때 고른 GPU를 계속 써요
패키지런타임이 초기화되면 다시 설치해요한 번 설치하면 남고, 저장 이미지로 다음 서버에 옮겨요
데이터Drive를 연결하거나 매번 업로드해요볼륨에 두고 경로로 바로 읽어요
환경 관리드라이버와 CUDA를 신경 쓰지 않아도 돼요템플릿이 설치해 주고, 이후 변경은 직접 관리해요
이용 요금무료 한도나 요금제에 따라 달라요서버가 있는 시간만큼 1시간 단위로 계산돼요

짧은 실습과 공유용 예제는 호스팅 노트북으로, 긴 학습과 고정된 환경이 필요한 작업은 GPU 서버로 나눠 써도 좋아요. Colab의 사용 한도는 Colab FAQ에서 확인할 수 있어요.

PyTorch 노트북 예시 환경으로 시작하기

“PyTorch 2.4 Notebook (CUDA 12.4, JupyterLab, Python)” 예시 환경으로 서버를 만들면 드라이버, PyTorch, JupyterLab이 설치된 상태로 시작해요. 다른 버전이 필요하면 가상 환경을 만들어 따로 설치하세요.

“Ubuntu 22.04 + CUDA 12.4 (Docker, SSH)” 같은 기본 환경이라면 JupyterLab을 직접 설치해요. 아래 명령은 노트북 시작 폴더를 볼륨(/mnt/data)으로 지정해요.

bash
python3 -m venv ~/jupyter-env
source ~/jupyter-env/bin/activate
pip install jupyterlab
jupyter lab --no-browser --port 8888 --ServerApp.root_dir=/mnt/data
JupyterLab은 기본으로 서버 안에서만 접속할 수 있는 127.0.0.1에서 열려요.

내 PC에서 SSH 터널을 연결하고, 서버 터미널에 출력된 http://127.0.0.1:8888/lab?token=... 주소를 브라우저에서 여세요. 토큰은 비밀번호와 같으니 공유하지 마세요. 문제가 생기면 JupyterLab 원격 접속하기를 참고하세요.

bash
ssh -N -L 8888:127.0.0.1:8888 <사용자>@<서버 주소>
내 PC의 터미널에서 실행해요.

노트북 안에서 GPU 확인하기

첫 셀에서 PyTorch가 GPU를 인식하는지 확인하세요. torch.cuda.is_available()이 True이고 GPU 이름이 나오면 준비된 거예요. False가 나오면 PyTorch가 GPU를 인식하지 못할 때를 참고하세요.

python
import torch

print(torch.__version__, torch.version.cuda)
print(torch.cuda.is_available())
print(torch.cuda.get_device_name(0))

free, total = torch.cuda.mem_get_info()
print(f"사용 가능 {free / 1e9:.1f} GB / 전체 {total / 1e9:.1f} GB")

셀 앞에 !를 붙이면 셸 명령이 실행돼요. 패키지는 !pip 대신 %pip로 설치하세요. 지금 커널의 Python 환경에 설치돼서, 엉뚱한 환경에 설치되는 실수를 막아요.

python
!nvidia-smi
%pip install transformers datasets
노트북 셀에서 실행하는 예시예요.

노트북을 여러 개 열어 두면 커널마다 GPU 메모리를 따로 잡아서 CUDA out of memory가 나기 쉬워요. 쓰지 않는 노트북은 커널을 종료하세요.

데이터와 노트북 파일은 볼륨에 두세요

서버의 로컬 디스크는 서버를 삭제하면 함께 지워져요. 노트북 파일, 데이터셋, 체크포인트는 처음부터 볼륨에 저장하세요. 더 큰 GPU가 필요해지면 볼륨을 새 서버에 연결해 같은 파일로 이어서 작업하면 돼요.

저장 이미지에는 설치한 패키지와 설정이 남지만, 커널 메모리의 변수나 학습 상태는 남지 않아요. 오래 걸린 전처리 결과와 모델 가중치는 torch.save() 등으로 볼륨에 저장하세요.

하루 작업 흐름과 요금 주의점

  1. 서버를 생성해요

    노트북 예시 환경과 GPU를 고르고, 데이터가 있는 볼륨을 연결해요. 저장 이미지가 있다면 그 이미지로 생성해요.

  2. JupyterLab에 접속해요

    SSH 키로 접속해 JupyterLab을 열고, 첫 셀에서 GPU를 확인해요.

  3. 실험하고 결과를 볼륨에 저장해요

    노트북, 중간 결과, 체크포인트를 볼륨에 저장해요. 중요한 결과물은 다른 곳에도 한 벌 남겨 두세요.

  4. 환경을 남기고 서버를 삭제해요

    새로 설치한 패키지가 있다면 저장 이미지로 남기고 서버를 삭제해요.

Shelf에서는

  • 볼륨과 저장 이미지는 서버와 별개라 직접 삭제할 때까지 남고, 따로 저장 요금이 있어요.
  • 이용 요금은 서버를 생성한 시점부터 1시간 단위로 계산되고, 생성할 때 첫 1시간이 청구돼요. GPU별 요금은 요금 안내에서 볼 수 있어요.

자주 묻는 질문

코랩에서 쓰던 노트북 파일을 그대로 쓸 수 있나요?

.ipynb 파일은 JupyterLab에서 그대로 열려요. 다만 google.colab의 drive.mount()나 files.upload() 같은 Colab 전용 코드는 동작하지 않으니, 파일 경로를 볼륨 경로로 바꾸세요.

VS Code에서 서버의 노트북을 쓸 수 있나요?

VS Code의 Remote - SSH 확장으로 서버에 접속하고 Jupyter 확장을 함께 설치하면, .ipynb 파일을 서버의 Python 커널로 실행할 수 있어요.

노트북 탭을 닫으면 학습이 멈추나요?

커널은 서버에서 계속 실행돼요. 다만 연결이 끊긴 동안의 출력은 다시 열었을 때 보이지 않을 수 있어요. 몇 시간 걸리는 학습은 로그를 파일로 남기거나, 스크립트로 만들어 tmux에서 실행하세요.

GPU 서버가 필요할 때

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