Colab

Introduction

Colab은 Google 에서 제공하는 Jupyter Notebook 환경이다.
GPU : Tesla K80
최대 12시간

돈이 많다면 GPU를 직접 구매하거나, AWS, Azure, GCP 등을 사용할 수 있지만, 여유가 없다면 Colab을 사용하는것이 유용하다.

Pro

Colab Pro는 월 $9.99 으로 구독이 가능하다.
GPU : T4, P100
RAM : 고용량 최대 24시간

Colab Pro 에서도 24시간 사용을 보장하지는 않는다.
하지만 Colab Pro 본래의 용도대로 사용하는 대부분의 구독자는 사용량 한도를 경험할 가능성이 거의 없다고 한다.

terminal 기능도 사용 가능하다. 다만, jupyter notebook과 다르게 키보드 입력 단위로 서버를 왕복하기 때문에 속도 지연이 크게 느껴진다.

기회가 생겨 유료 서버 P40, V100 를 사용했을때 비교한 결과, 상대적으로 나쁘지 않은 성능을 보여주었다.

model env epoch batch size input image time(s)
EfficientNet b7 Tesla T4 (15109MiB) 1 (16384 image) 16 3 _ 228 _ 228 910.186
EfficientNet b7 Tesla P40 (24451MiB) 1 (16384 image) 16 3 _ 228 _ 228 718.866
EfficientNet b7 Tesla P40 (24451MiB) 1 (16384 image) 32 3 _ 228 _ 228 671.688
EfficientNet b7 Tesla P100 (16280MiB) 1 (16384 image) 16 3 _ 228 _ 228 587.277
EfficientNet b7 Tesla V100 (32480MiB) 1 (16384 image) 16 3 _ 228 _ 228 320.569
EfficientNet b7 Tesla V100 (32480MiB) 1 (16384 image) 32 3 _ 228 _ 228 284.785

Visual Studio Code

Jupyter Notebook 에서만 사용하기엔 불편한점이 많은데, 이럴때는 Visual Studio Code 에서 사용할 수 있다.

사전 준비

  • Colab
  • ngrok 계정
  • vscode extensions : Remote - SSH

Part Colab

Google Drive

colab의 실행 결과를 저장하기 위해서 google drive를 mount 해주는것이 좋다.

from google.colab import drive
drive.mount('/content/drive/')
cd '/content/drive/MyDrive/Colab Notebooks/'

Remote SSH

ngrok 계정이 필요하다.
로컬 서버에서 임의의 url을 만들어 외부에서 접속할 수 있게 해준다.

ngrok에서 생성된 token과 사용할 password 를 다음 코드에 넣고 실행시킨다.

!pip install colab_ssh --upgrade

NGROK_TOKEN = ''
PASSWORD = ''

from colab_ssh import launch_ssh_cloudflared, init_git_cloudflared
launch_ssh_cloudflared(password=PASSWORD)

Runtime

colab은 활동이 없으면 자동으로 런타임 연결을 종료한다.
이러한 자동종료는 무한반복으로 방지할 수 있다.

import time
while True:
    time.sleep(300)

Part Client

위 코드의 실행결과에서 이후 진행할 내용을 설명해준다.

  1. Cloudflared을 다운받는다.
  2. 아래 처럼 생성된 host 설정에 Cloudflared의 절대경로를 입력하고 ssh에 추가한다. (ssh 설정은 보통 ~/.ssh/config 에 위치)
Host *.trycloudflare.com
	HostName %h
	User root
	Port 22
	ProxyCommand <PUT_THE_ABSOLUTE_CLOUDFLARE_PATH_HERE> access ssh --hostname %h
  1. vscode - Remote SSH - Connect to Host 를 선택한 후 위 코드에서 생성된 url을 입력한다.

설정이 끝났으니 Remote SSH의 목록에서 선택해 접속, 설정한 password 를 입력하면 사용 가능하게된다.

Google Drive

SSH 방식은 매번 재연결하는 불편함이 있어서 생각해낸 방법

PC 버전 google drive를 설치하고, workspace를 자동 연동되는 경로에 지정하면 편하다.
평소대로 개발하고, 모델, 데이터셋을 설정한 다음, 실제 학습만 colab에서 다음과 같이 실행하면 된다.

!python3 run.py

Leave a comment