Colaboratory 의 GPU 를 이용해 Machine Learning 을 해보자!

Deep Learning, Machine Learning 에 대한 이야기가 정말 많이 나오고 있다. 개발자라면 누구나 한번 해볼까? 라는 생각을 하게 된다. 하지만, 조금 찾아 보다 보면

GPU 가 필요하네, 어... 1080TI 정도는 있어야 하는거야?
GPU 를 사야하나?
굳이 사서 이걸 봐야할까?
그냥 다음에 하자!

라는 단계로 의식의 흐름은 다음에 하면 되지라는 결론을 내게 한다.

구글에서(역시 구글!!) 이런 의식의 흐름을 해결 해주는 서비스가 Colaboratory 라는 서비스를 제공 하고 있는 것을 알게 되어 공유하고자 글을 적게 되었다.

1. Google Colaboratory 는 무엇인가?

Colaboratory는 머신러닝 교육과 연구를 위한 서비스다. Colaboratory 는 기본적으로 Jupyter 노트북 환경이므로 설치 없이도 사용할 수 있고, Jupyter 노트북처럼 코드와 수행 결과를 통합하여 보여주며 서비스 입니다. 물론, 여러 사람이 협업하여 사용 할 수도 있습니다.(Colaboratory FAQ 참고)

쉽게 이야기하면 Jupyter notebook 의 공짜 서비스라고 할 수 있습니다. 이 정도만 해도 그냥 그저 그런 서비스였겠지만!!

JUPYTER NOTEBOOK vs Colaboratory
Colaboratory 는 GPU를 제공합니다. 무려 K80 GPU(GPU 11.4GB)를 말입니다.

아래는 Colaboratoty 에서 제공하는 GPU 정보입니다.

물론 제한은 있습니다. 한 번에 12 시간 동안만 무료로 GPU를 백엔드로 사용할 수 있다는 것입니다. 이 12 시간 제한은 단일 VM 할당 제한으로 CPU, GPU, STORAGE에 모두 적용됩니다. 하지만, 일일 제한이 없으므로 12 시간 동안 VM 사용 후 바로 다른 VM을 사용할 수 있습니다.

2. Google Colaboratory 사용하기

https://colab.research.google.com/ 사이트로 접속하고 로그인을 하면 아래 그림처럼 사용 준비가 끝난다.

Colaboratory 는 Google Drive, Github, 파일 업로드 등의 통해서 코드를 작성하고 실행할 수 있다. 하지만, 위에서 설명한 것처럼 VM 의 STORAGE 는 12시간 혹은 세션이 종료되면 초기화 되므로 가능하면 Google Drive 에 저장하는 것을 추천합니다.

아래처럼 "GOOGLE 드라이브" > "새 PYTHONE 3 노트" 를 선택하면 바로 TensorFlaow 코드를 작성하고 실행 해볼 수 있다.

Colaboratory 는 기본적으로 Tensor 가 기본적으로 설치 되어 있어 그대로 사용 할 수도 있지만, 아래처럼 기본 라이브러리를 추가하거나 업그레이드도 가능합니다. (참고 : Snippets : Importing libraries)

3. Google Colaboratory 에서 GPU 사용하기

기본적으로 Colaboratory 의 런타입 유형은 CPU 로 되어 있습니다. 따라서, GPU 로 런타입 유형을 변경 하면 바로 GPU 를 이용할 수 있습니다.

GPU 를 사용여부를 확인하는 것은 아래와 같은 방법으로 확인 할 수 있다.

1. !nvidia-smi 명령어 확인

2. TensorFlow 를 이용해서 GPU 이름을 출력하여 확인

4. Google Colaboratory 에 Train 데이터 업로드

Colaboratory 로 GPU 를 사용 할 수 있는 것은 정말 좋은데, 그럼 Train 데이터는 어떻게 업로드를 해야하지? 라는 문제에 마주치게 된다.

Train 데이터 업로드는 아래와 같은 3가지 방법으로 해결할 수 있다.

1. 로컬에 있는 데이터 파일 업로드 하기

from google.colab import files
uploaded = files.upload()

2. Google Drive 파일 ID 로 업로드 하기

#1) google drive 에 접근하기 위한 라이브러리 설치 
!pip install -U -q PyDrive
#2) google drive 에 있는 파일 id 확인
# google drive 의 Get Sahre Link 에서 확인 하면 된다
#3) url id 를 갖는 파일을 colab 에 다운로드 하기 
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials
# Authenticate and create the PyDrive client.
# This only needs to be done once per notebook.
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)
file_id = '1JAvSQ4-pN1q7st3L8Y8-Zq2d7TuSF8_c' # URL id. 
downloaded = drive.CreateFile({'id': file_id})
downloaded.GetContentFile('redball.csv')

코드를 실행하면 아래 처럼 Verification Code 를 입력 창에, 출력된 링크를 통해 얻은 Verification Code 를 입력하면 업로드가 완료된다.

3. Google Drive 를 mount 하여 사용하기

Drive 폴더에 Google Drive 를 Mount 하여 Google Drive 에 미리 업로드한 Train 파일을 이용할 수 있다.

#1) google drive 에 접근하기 위한 라이브러리 설치 
!pip install -U -q PyDrive
# 2) Google Drive 로그인 인증 
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}
# 3) Google Drive drive 폴더로 Mount
!umount drive
!mkdir -p drive
!fusermount -u ~/drive
!google-drive-ocamlfuse drive
# 4) Google Drive Mount 확인  
print ('Files in Drive:')
!ls drive/

5. Google Colaboratory 에 대해...

  • Colaboratory 는 GPU 를 무료로 사용 할 수 있는 서비스로 Machine Learning 을 처음 공부 하거나 시작 하는 개발자들에게는 정말 유용한 서비스다!!! GPU 가 없다면 한번 사용해보자!!
  • 위의 내용을 잘 읽었다면, Colaboratory 는 Linux 의 Console 명령어를 ! 를 붙여서 사용할 수 있다는 것을 아주 쉽게 눈치 챘을 것이다. 이걸 이용해서 Google Drive 에 있는 Python 파일 역시 !python 명령어를 이용해서 실행할 수도 있다.
  • Colaboratory 는 Jupyter Notebook 처럼 런타인 환경을 Local 머신과 연동하여 사용 할 수도 있다. 물론, 이렇게 사용한다면 Jupyter Notebook 을 사용하겠지만 말이다.