Google Colab 시작하기
Google Colab은 브라우저에서 Python 코드를 실행할 수 있는 무료 Jupyter 노트북 환경이다. 별도의 환경 설정 없이 GPU까지 사용할 수 있어서 머신러닝 실습이나 빠른 프로토타이핑에 유용하다.
Jupyter 노트북이란
Jupyter는 코드를 셀 단위로 실행하고 결과를 바로 확인할 수 있는 대화형 개발 환경이다.
일반적인 .py 파일은 전체 코드를 한 번에 실행하지만, Jupyter 노트북(.ipynb)은 코드를 조각조각 나눠서 실행할 수 있다. 각 셀을 실행하면 결과가 바로 아래에 출력되고, 변수도 메모리에 유지돼서 다음 셀에서 계속 사용할 수 있다.
# 셀 1 실행
x = 10
# 셀 2 실행 - 위에서 정의한 x를 그대로 사용
print(x * 2) # 20
데이터 분석이나 머신러닝에서 많이 쓰는 이유는 데이터를 불러온 뒤 여러 가지 전처리를 시도해볼 수 있고, 그래프나 표가 셀 아래에 바로 렌더링되며, 코드와 설명(Markdown)을 함께 작성해서 문서화하기 좋기 때문이다.
Google Colab은 이 Jupyter 노트북을 클라우드에서 실행할 수 있게 만든 서비스다. 로컬에서 Jupyter를 쓰려면 pip install jupyter 후 jupyter notebook 명령어로 실행하면 된다.
셀 간 변수가 유지되는 원리
셀마다 새로운 Python을 실행하는 게 아니라, 커널이라는 하나의 Python 프로세스가 백그라운드에서 계속 돌아가고 있다. 모든 셀은 같은 프로세스의 글로벌 네임스페이스를 공유한다.
터미널에서 python을 실행하면 >>> 프롬프트가 나오는데, 여기서 변수를 정의하면 다음 줄에서도 쓸 수 있다. Jupyter도 이것과 똑같은 REPL(Read-Eval-Print Loop) 방식이다. 단지 UI가 웹 기반 노트북 형태인 것뿐이다.
노트북 UI(프론트엔드)와 커널은 ZeroMQ라는 메시징 라이브러리로 통신한다. 셀 실행 버튼을 누르면 코드가 커널로 전송되고, 커널이 실행 후 결과를 다시 프론트엔드로 보내는 구조다.
[노트북 UI] ←ZeroMQ→ [IPython 커널 (Python 프로세스)]
↓
글로벌 네임스페이스
- x = 10
- df = DataFrame(...)
- model = ...
런타임 재시작하면 변수가 다 날아가는 이유도 이거다. 커널 프로세스가 종료되면서 메모리에 있던 모든 변수가 사라진다.
노트북 생성
Google Colab에 접속하면 바로 시작할 수 있다. Google 계정으로 로그인하면 된다.
새 노트북을 만들려면 File > New notebook 을 클릭한다. 생성된 노트북은 자동으로 Google Drive의 Colab Notebooks 폴더에 저장된다.
기존 .ipynb 파일을 열고 싶으면 File > Upload notebook 으로 로컬 파일을 업로드하거나, File > Open notebook 에서 Google Drive나 GitHub에서 불러올 수 있다.
셀 실행
Colab 노트북은 셀 단위로 코드를 실행한다. 셀에 코드를 입력하고 Shift + Enter 를 누르면 실행된다. 실행 결과는 셀 바로 아래에 출력된다.
print("Hello, Colab!")
새 셀을 추가하려면 + Code 버튼을 클릭하거나 Ctrl + M B (현재 셀 아래에 추가)를 누른다. 텍스트 셀은 + Text 버튼으로 추가하고 Markdown 문법을 사용할 수 있다.
자주 쓰는 단축키는 다음과 같다.
Shift + Enter: 셀 실행 후 다음 셀로 이동Ctrl + Enter: 셀 실행 (현재 셀 유지)Ctrl + M B: 아래에 새 셀 추가Ctrl + M A: 위에 새 셀 추가Ctrl + M D: 현재 셀 삭제
패키지 설치
Colab에는 NumPy, Pandas, TensorFlow, PyTorch 등 주요 라이브러리가 이미 설치되어 있다. 추가 패키지가 필요하면 셀에서 pip를 실행하면 된다.
!pip install transformers
셀에서 ! 로 시작하면 쉘 명령어로 실행된다. 설치한 패키지는 런타임이 종료되면 사라지므로 노트북을 다시 열 때마다 설치해야 한다.
파일 관리
왼쪽 사이드바의 폴더 아이콘을 클릭하면 파일 탐색기가 열린다. 여기서 파일을 업로드하거나 다운로드할 수 있다.
코드로 파일을 업로드하려면 다음과 같이 한다.
from google.colab import files
uploaded = files.upload()
실행하면 파일 선택 다이얼로그가 뜨고, 선택한 파일이 현재 작업 디렉토리에 업로드된다.
파일을 다운로드하려면 이렇게 한다.
from google.colab import files
files.download('result.csv')
Google Drive 연동
대용량 파일이나 데이터셋을 다룰 때는 Google Drive를 마운트해서 사용하면 편하다.
from google.colab import drive
drive.mount('/content/drive')
실행하면 Google 계정 인증을 요청한다. 인증이 완료되면 /content/drive/MyDrive 경로로 Drive에 접근할 수 있다.
import pandas as pd
df = pd.read_csv('/content/drive/MyDrive/data/train.csv')
Drive에 저장한 파일은 런타임이 종료되어도 유지되므로 작업 결과를 보존하고 싶을 때 유용하다.
런타임 설정
기본 런타임은 CPU만 사용한다. GPU나 TPU를 사용하려면 런타임 유형을 변경해야 한다.
Runtime > Change runtime type 을 클릭하고 Hardware accelerator 에서 GPU나 TPU를 선택한다. 무료 버전에서도 GPU를 사용할 수 있지만 사용량에 따라 제한이 있다.
현재 할당된 GPU를 확인하려면 다음 코드를 실행한다.
!nvidia-smi
런타임은 일정 시간 동안 사용하지 않으면 자동으로 종료된다. 무료 버전 기준으로 약 90분 정도 유휴 상태가 지속되면 연결이 끊긴다. 런타임이 종료되면 설치한 패키지와 업로드한 파일이 모두 사라지므로 중요한 결과물은 Drive에 저장해두는 게 좋다.
요금제
Colab은 무료로도 GPU를 사용할 수 있지만 제한이 있다. 필요에 따라 유료 요금제를 선택할 수 있다.
무료 버전은 T4 같은 GPU를 사용할 수 있지만, 연속으로 많이 쓰면 일시적으로 GPU 할당이 차단된다. 약 90분 유휴 시 연결이 끊기고 최대 12시간까지 런타임이 유지된다.
Colab Pro (월 $9.99)는 V100, A100 같은 더 빠른 GPU에 우선 접근할 수 있다. 메모리도 더 많이 할당되고 런타임이 최대 24시간까지 유지된다.
Colab Pro+ (월 $49.99)는 Pro의 모든 기능에 더해 백그라운드 실행을 지원한다. 브라우저를 닫아도 노트북이 계속 실행되므로 장시간 학습에 유용하다.
Pay As You Go 옵션도 있다. 구독 없이 컴퓨팅 유닛만 따로 구매해서 사용할 수 있다. 100 유닛 단위로 구매 가능하고 (약 $9.99), 구매한 유닛은 90일간 유효하다. 무료 계정 상태에서도 구매할 수 있어서 가끔씩만 GPU가 필요하면 이 방식이 나을 수 있다. 다만 자주 쓴다면 Pro 구독이 더 경제적이다.
무료 버전으로도 간단한 실습이나 프로토타이핑은 충분하다. 대규모 모델 학습이나 장시간 실행이 필요하면 유료 요금제를 고려하면 된다.
여러 노트북 동시 실행
여러 노트북을 동시에 실행하면 비용이 어떻게 될까?
무료 버전은 동시에 실행 가능한 세션 수가 제한된다. 보통 1~2개 정도고, 여러 개 열어도 GPU는 하나에만 할당되는 경우가 많다.
유료 버전은 컴퓨팅 유닛이 각 노트북별로 따로 소모된다. 2개 노트북을 동시에 1시간 실행하면 2시간분 유닛이 소모되는 식이다. GPU 종류에 따라 소모율도 다르다.
- T4 GPU: 시간당 약 1.96 유닛
- V100 GPU: 시간당 약 5.36 유닛
- A100 GPU: 시간당 약 11.08 유닛
- TPU: 시간당 약 5 유닛
Pro는 월 100 유닛, Pro+는 월 500 유닛이 포함되어 있고 초과 시 추가 구매해야 한다. 여러 노트북을 동시에 돌리면 유닛이 빠르게 소모되니까 필요한 것만 실행하는 게 좋다.
GCP VM과 비용 비교
Colab 대신 GCP(Google Cloud Platform)에서 직접 VM 인스턴스를 띄우는 방법도 있다. 어느 쪽이 저렴할까?
Colab Pro+는 월 $49.99에 500 유닛이 포함된다. A100 기준 시간당 약 11 유닛이 소모되니까 약 45시간 사용 가능하고, T4 기준으로는 약 250시간 사용 가능하다.
GCP VM의 on-demand 요금은 A100 40GB가 시간당 약 $34, T4가 시간당 약 $0.35 정도다. 45시간 A100을 쓰면 $135180, 250시간 T4를 쓰면 $87 정도가 나온다.
GCP Spot VM(선점형)을 쓰면 더 저렴하다. 대신 언제든 중단될 수 있다. A100이 시간당 약 $1~1.5, T4가 시간당 약 $0.11 정도다.
결론적으로 가벼운 사용(월 수십 시간)이면 Colab이 저렴하고 편하다. 무거운 사용(월 100시간 이상)이면 GCP Spot VM이 더 저렴할 수 있다. 다만 Colab은 환경이 이미 다 설정되어 있어서 편의성 면에서 압도적이다. 24시간 연속으로 여러 GPU를 돌려야 하는 상황이 아니면 대부분 Colab Pro나 Pro+가 낫다.
폼 기능
노트북을 다른 사람과 공유할 때 입력값을 쉽게 바꿀 수 있도록 폼을 만들 수 있다.
#@title 설정
learning_rate = 0.001 #@param {type:"number"}
epochs = 10 #@param {type:"slider", min:1, max:100}
model_name = "bert-base" #@param ["bert-base", "bert-large", "roberta"]
셀 오른쪽에 폼 UI가 생성되어 값을 드롭다운이나 슬라이더로 조절할 수 있다.
유용한 팁
노트북 상단의 RAM 과 Disk 표시를 클릭하면 현재 리소스 사용량을 확인할 수 있다. 메모리가 부족하면 런타임을 재시작하거나 불필요한 변수를 삭제해야 한다.
%%time 매직 커맨드를 셀 맨 위에 추가하면 해당 셀의 실행 시간을 측정할 수 있다.
%%time
# 시간을 측정할 코드
model.fit(X_train, y_train)
비밀 키나 API 키는 코드에 직접 넣지 말고 Colab의 Secrets 기능을 사용한다. 왼쪽 사이드바의 열쇠 아이콘을 클릭해서 키를 등록하고 다음과 같이 불러온다.
from google.colab import userdata
api_key = userdata.get('OPENAI_API_KEY')
Colab의 동작 원리
Colab이 어떻게 각 사용자에게 독립된 실행 환경을 제공하는지 궁금할 수 있다.
컨테이너 기반 격리
사용자가 Colab에 접속하면 Google 서버에서 Linux 컨테이너(또는 경량 VM)가 할당된다. 각 사용자마다 독립된 환경이 생기는 거다. 컨테이너 안에는 Python, Jupyter 커널, 주요 라이브러리들이 미리 설치되어 있다.
Google은 gVisor라는 자체 개발한 컨테이너 샌드박스 기술을 사용한다. 일반 Docker보다 보안이 강화된 격리 환경을 제공한다.
브라우저와 서버 간 통신
브라우저에서 코드를 입력하고 실행하면 WebSocket으로 Google 서버의 Jupyter 커널에 코드가 전송된다. 커널이 컨테이너 내에서 Python 코드를 실행하고, 결과(출력, 그래프 등)를 다시 브라우저로 전송한다.
[브라우저 UI] ←WebSocket→ [Jupyter 커널] ←→ [컨테이너 내 Python]
GPU 할당
GPU 런타임을 선택하면 NVIDIA GPU가 장착된 서버의 컨테이너로 연결된다. Google 데이터센터에 GPU 서버 풀이 있고, 요청 시 할당해주는 방식이다. 무료 사용자는 공유 자원이라 사용량 제한이 있다.
왜 무료로 제공할까
Google 입장에서는 개발자들이 Colab에서 TensorFlow나 GCP 서비스에 익숙해지면 나중에 유료 클라우드 서비스를 쓸 가능성이 높아진다. 일종의 마케팅 비용인 셈이다.