본문 바로가기
AI/툴 사용법

Google Colaboratory 입문자들을 위한 설명!

by 지수코딩 2018. 12. 12.

추후 BERT로 classification하는 문제를 풀어보고 싶은 분들은 아래 링크에 매뉴얼을 참고하여 실습해 보시기 바랍니다.

https://jisoo-coding.tistory.com/34

 

BERT를 Google Colab에서 돌려보기(TPU 사용)

글에 들어가기 앞서, Google Colaboratory 사용법을 익히고 싶은 분들은 아래 링크를 참고하시기 바랍니다. https://jisoo-coding.tistory.com/2 Google Colaboratory 입문자들을 위한 설명! Google Colab Free GP..

jisoo-coding.tistory.com

 

 

Google Colab Free GPU Tutorial

Keras, Tensorflow, 및 PyTorch를 사용하여 무료 Tesla K80 GPU 에서 Google Colaboratory를 통해 딥러닝 응용프로그램을 개발할 수 있습니다.

 

Google Colab 이란?

Google Colab은 AI개발자들을 위해 구글에서 제공하는 무료 클라우드 서비스입니다. Colab으로 무료 GPU에서 딥러닝 응용 프로그램을 개발할 수 있습니다. Keras,TensorFlow,PyTorch,OpenCV와 같은 라이브러리를 사용하여 딥러닝 응용프로그램을 개발해보세요! ! !

 

<구글 Colab을 사용하기 위한 준비>

1.구글 드라이브에서 폴더 생성

 

 




Colab은 자신의 구글 드라이브에서 작동하기 때문에, 작업할 폴더를 먼저 만들어야 합니다. 예시를 위해 드라이브에 “app”이라는 이름의 폴더를 생성했습니다. (폴더를 만들지 않아도 상관 없습니다)

 

2.Colab Notebook 파일 생성

좌측의  

 

버튼 누르기 > 더보기 > Colaboratory

 

만약 Colaboratory가 보이지 않는다면,

연결할 앱 더보기 > colab 검색 > 연결

3.무료 GPU 설정

수정 > 노트 설정 or 런타임 > 런타임 유형 변경 선택을 통해 하드웨어 가속기로써 GPU를 쉽게 변경할 수 있다.

4.구글 Colab에서 .py파일 실행 및 가져오기

이제 구글 Colab을 실행할 수 있습니다.

 

필수적인 라이브러리 설치와 권한 부여를 위해 아래 코드를 실행하세요

 

from google.colab import drive

drive.mount('/content/drive/')

 

위의 코드를 입력하시고 실행하면 결과로 아래와 같이 링크를 얻을 수 있습니다.

 

 

링크 클릭 -> 구글 로그인

 

 

 

인증코드를 복사하여 텍스트 박스에 붙여 넣으세요

권한 인증 절차가 완료되면 아래와 같은 화면을 보실 수 있습니다.

 

 

 

이제 아래와 같은 입력으로 구글 드라이브에 성공적으로 들어가실 수 있습니다.

해당 디렉토리 내용

 

디렉토리 변경

 



Github 저장소 구글 Colab에 클론하는 방법

 

Step 1: 원하는 Git 링크 복사

예시) https://github.com/hunkim/DeepLearningZeroToAll

클론 또는 다운로드 >링크 복사

 



Step 2 : Git Clone하기

실행 명령어: !git clone https://github.com/hunkim/DeepLearningZeroToAll

 

Step 3: 구글 드라이브에서 폴더 열기

폴더는 github repository와 똑같이 드라이브에 올라갑니다

 

4.노트북 파일 열기

원하는 파일에서 우클릭>연결 앱>Colaboratory

5. 실행

이제 구글Colab에서 Github repository를 사용하실 수 있습니다.






사용팁

 

1. 라이브러리 설치

Keras

!pip install -q keras

import keras

PyTorch

from os import path

from wheel.pep425tags import get_abbr_impl, get_impl_ver, get_abi_tag

platform = '{}{}-{}'.format(get_abbr_impl(), get_impl_ver(), get_abi_tag())

accelerator = 'cu80' if path.exists('/opt/bin/nvidia-smi') else 'cpu'

!pip install -q http://download.pytorch.org/whl/{accelerator}/torch-0.3.0.post4-{platform}-linux_x86_64.whl torchvision

import torch

또는:

!pip3 install torch torchvision

MxNet

!apt install libnvrtc8.0

!pip install mxnet-cu80

import mxnet as mx

OpenCV

!apt-get -qq install -y libsm6 libxext6 && pip install -q -U opencv-python

import cv2

XGBoost

!pip install -q xgboost==0.4a30

import xgboost

GraphViz

!apt-get -qq install -y graphviz && pip install -q pydot

import pydot

7zip Reader

!apt-get -qq install -y libarchive-dev && pip install -q -U libarchive

import libarchive

Other Libraries

!pip install 또는 !apt-get install 으로 다른 라이브러리를 사용할 수 있습니다.

 



2. GPU를 사용중인지 확인하는 방법



CPU만 사용하고 있을 시

GPU를 사용하고 있을 시

3. 사용중인 GPU확인하기

 

from tensorflow.python.client import device_lib

device_lib.list_local_devices()

 

4. RAM확인

!cat /proc/meminfo

 

5. CPU확인

!cat /proc/cpuinfo

 

6. Changing Working Directory

일반적으로 아래 코드를 실행시 :

!ls

 

datalab과 drive 폴더들을 볼 수 있습니다.

그러므로 파일이름을 정의하기전에 drive/app을 추가하세요

이런 문제를 없애기 위해, 아래의 코드를 사용하여 쉽게 디렉토리를 바꿀 수 있습니다.(여기선 app 폴더로 이동합니다.):

import os

os.chdir(“drive/My Drive/app”)

위의 코드를 실행시킨 후, 다시 !ls 코드를 실행시켜보세요

 

 

app폴더안에 있는 파일과 디렉토리의 목록을 보실 수 있습니다. 매번 drive/app을 추가하지 않으셔도 됩니다.



7. “No backend with GPU available“ Error 해결법

 

Failed to assign a backend

No backend with GPU available. Would you like to use a runtime with no accelerator?

 

다음과 같은 error메세지를 만났을 때, 잠시 후에 다시 사용해보세요 현재, 많은 사람들이 GPU들을 사용중에  있기 때문에 이런 메세지가 납니다.

 

Reference

8. 모든 셀들의 출력값을 지우기

 

도구>>명령 팔레트 >> 모든 출력 지우기

9. “apt-key output should not be parsed (stdout is not a terminal)” 경고문

Warning: apt-key output should not be parsed (stdout is not a terminal)

 

다음과 같은 경고 메세지를 만났을 때,권한부여는 완료된겁니다. 이제   구글드라이브를 마운트하세요

!mkdir -p drive

!google-drive-ocamlfuse drive

 

10. 구글 Colab을 Tensorboard를 사용하는 방법

다음 repository를 참고하세요:

https://github.com/mixuala/colab_utils

 

11. Google Colab을 다시 시작하는 방법

가상머신에서 재시작(또는 초기화) 하는 방법:

 

!kill -9 -1

 

 

12. Form을 추가하여 사용하기

 

코드에서 매번 hyperparameters을 변경하지 않으려, Google Colab에 간단하게 form을 추가하여 사용하세요



예를 들어, learning_rate와 optimizer 변수를 포함하는 form을 추가하겠습니다.

 

1.셀에서 더보기 버튼클릭

 

2.양식 추가

 

3. 수정 버튼 클릭

 

4. 제목 지정 후 저장버튼 클릭

 

 

5. 더보기 버튼>양식> 양식 입력란 추가

 

6.양식 유형과, 변수 유형, 변수이름 설정 후 저장

 

결과:

 

변수 설정 확인하기:

 

13. 함수 인수를 보는 방법

 

TensorFlow, Keras 등의 함수 인수를 보려면 함수 이름 뒤에 물음표 (?)를 추가하면됩니다.



이제 TensorFlow 웹 사이트를 클릭하지 않고도 원본 문서를 볼 수 있습니다.

 

14. 구글Colab에서 Tensorboard를 사용하는 방법

.

 

# You can change the directory name

LOG_DIR = 'tb_logs'

 

!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip

!unzip ngrok-stable-linux-amd64.zip

 

import os

if not os.path.exists(LOG_DIR):

 os.makedirs(LOG_DIR)

 

get_ipython().system_raw(

   'tensorboard --logdir {} --host 0.0.0.0 --port 6006 &'

   .format(LOG_DIR))

 

get_ipython().system_raw('./ngrok http 6006 &')

 

!curl -s http://localhost:4040/api/tunnels | python3 -c \

   "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"




위 코드를 실행시키고  URL을 여세요



텐서보드 실행을 위해 실행 예제코드를 실행시켜보세요

 

from __future__ import print_function

import keras

from keras.datasets import mnist

from keras.models import Sequential

from keras.layers import Dense, Dropout, Flatten

from keras.layers import Conv2D, MaxPooling2D

from keras import backend as K

from keras.callbacks import TensorBoard

 

batch_size = 128

num_classes = 10

epochs = 12

 

# input image dimensions

img_rows, img_cols = 28, 28

 

# the data, shuffled and split between train and test sets

(x_train, y_train), (x_test, y_test) = mnist.load_data()

 

if K.image_data_format() == 'channels_first':

   x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)

   x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)

   input_shape = (1, img_rows, img_cols)

else:

   x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)

   x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)

   input_shape = (img_rows, img_cols, 1)

 

x_train = x_train.astype('float32')

x_test = x_test.astype('float32')

x_train /= 255

x_test /= 255

print('x_train shape:', x_train.shape)

print(x_train.shape[0], 'train samples')

print(x_test.shape[0], 'test samples')

 

# convert class vectors to binary class matrices

y_train = keras.utils.to_categorical(y_train, num_classes)

y_test = keras.utils.to_categorical(y_test, num_classes)

 

model = Sequential()

model.add(Conv2D(32, kernel_size=(3, 3),

                activation='relu',

                input_shape=input_shape))

model.add(Conv2D(64, (3, 3), activation='relu'))

model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Dropout(0.25))

model.add(Flatten())

model.add(Dense(128, activation='relu'))

model.add(Dropout(0.5))

model.add(Dense(num_classes, activation='softmax'))

 

model.compile(loss=keras.losses.categorical_crossentropy,

             optimizer=keras.optimizers.Adadelta(),

             metrics=['accuracy'])



tbCallBack = TensorBoard(log_dir=LOG_DIR,

                        histogram_freq=1,

                        write_graph=True,

                        write_grads=True,

                        batch_size=batch_size,

                        write_images=True)

 

model.fit(x_train, y_train,

         batch_size=batch_size,

         epochs=epochs,

         verbose=1,

         validation_data=(x_test, y_test),

         callbacks=[tbCallBack])

score = model.evaluate(x_test, y_test, verbose=0)

print('Test loss:', score[0])

print('Test accuracy:', score[1])

 

 

위에서 말한 URL에 들어가면 TensorBoard를 확인하실 수 있습니다!



 

참고문헌

 

https://medium.com/deep-learning-turkey/google-colab-free-gpu-tutorial-e113627b9f5d

반응형

댓글