개요

무료로 파이썬 쥬피터 노트북 및 GPU(NVdia Tesla K80)를 활용한 텐서플로우를 무료로 활용할 수 있는 Google colab을 활용하여 케글(Kaggle)을 연동하는 과정을 정리하여 포스팅한다.

colab 사이트 가입

colab 사이트에 가서 구글 계정으로 가입을 한다. 그러면 노트북이 생성되고 이 노트북은 내 구글 드라이브의 Colab Notebooks에 저장이 된다.

예를 들면 아래와 같은 형태이다.

colab 장비 스펙

위 과정까지 하고나면 파이썬 노트북을 활용하면 된다. 이 장비는 구글의 클라우드 서버에 장비로 할당이 되는데 아래의 스펙이 할당되어 아주 훌륭하다고 할 수 있다.

  • CPU : 제온
  • Mem : 13GB
  • HDD : 320GB
  • GPU : NVidia Tesla K80

colab 노트북에서 kaggle 연동하기

위에서 파이썬 노트북을 활용하는 방법을 알아보았고 이제 colab을 kaggle과 연동할수도 있는데 이 방법을 한번 알아보자.

kaggle pip 설치

colab 노트북에서 파일 메뉴 -> 새 파이썬 3 노트를 실행하여 새 노트북을 만든다.

이후 파이썬 kaggle 모듈을 pip로 아래와 같이 설치한다.

!pip install kaggle

kaggle 인증키 다운로드

파이썬 kaggle 모듈은 kaggle API를 사용하고 이 API는 내 인증 key가 필요하다. 이 인증 key는 kaggle.json이라는 파일로 존재하는데 아래의 과정으로 다운로드 받을 수 있다.

  • https://www.kaggle.com/계정이름/account에서 edit profile 누르기
  • API -> Create New API Token 누르면 kaggle.json이 로컬에 다운로드 됨

구글드라이브에 kaggle.json 업로드

위에서 받은 인증키를 구글드라이브의 어느 경로든 업로드하면 된다. 필자는 편의상 Colab Notebooks 밑에다 업로드 하였다.

kaggle.json 인증서 연동

colab 노트북용 VM장비에 kaggle.json을 다운로드 하는 과정에 해당하는 코드이다. kaggle.json을 구글드라이브에서 땡겨서 VM장비에 다운로드 하는 역할을 한다.

from googleapiclient.discovery import build
import io, os
from googleapiclient.http import MediaIoBaseDownload
from google.colab import auth

auth.authenticate_user()

drive_service = build('drive', 'v3')
results = drive_service.files().list(
        q="name = 'kaggle.json'", fields="files(id)").execute()
kaggle_api_key = results.get('files', [])

filename = "/content/.kaggle/kaggle.json"
os.makedirs(os.path.dirname(filename), exist_ok=True)

request = drive_service.files().get_media(fileId=kaggle_api_key[0]['id'])
fh = io.FileIO(filename, 'wb')
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
    status, done = downloader.next_chunk()
    print("Download %d%%." % int(status.progress() * 100))
os.chmod(filename, 600)

검증: kaggle 명령어 테스트

!kaggle competitions list

ref                                             deadline             category            reward  teamCount  userHasEntered  
----------------------------------------------  -------------------  ---------------  ---------  ---------  --------------  
imagenet-object-detection-challenge             2029-12-31 07:00:00  Research         Knowledge          0           False  
imagenet-object-detection-from-video-challenge  2029-12-31 07:00:00  Research         Knowledge          0           False  
imagenet-object-localization-challenge          2029-12-31 07:00:00  Research         Knowledge          5           False  
titanic                                         2020-04-07 00:00:00  Getting Started  Knowledge      10608            True  
house-prices-advanced-regression-techniques     2020-03-01 23:59:00  Getting Started  Knowledge       4521           False  
digit-recognizer                                2020-01-07 00:00:00  Getting Started  Knowledge       2090           False  
competitive-data-science-predict-future-sales   2019-01-01 23:59:00  Playground           Kudos        192           False  
freesound-audio-tagging                         2018-07-31 23:59:00  Research         Knowledge          8           False  
whale-categorization-playground                 2018-07-09 23:59:00  Playground           Kudos        131           False  
inaturalist-2018                                2018-06-04 23:59:00  Research             Kudos         22           False  
imaterialist-challenge-furniture-2018           2018-05-30 23:59:00  Research            $2,500        128           False  
landmark-retrieval-challenge                    2018-05-22 23:59:00  Research            $2,500         99           False  
landmark-recognition-challenge                  2018-05-22 23:59:00  Research            $2,500        183           False  
talkingdata-adtracking-fraud-detection          2018-05-07 23:59:00  Featured           $25,000       1946           False  
donorschoose-application-screening              2018-04-25 23:59:00  Playground            Swag        352           False  
data-science-bowl-2018                          2018-04-16 23:59:00  Featured          $100,000       3200           False  
mens-machine-learning-competition-2018          2018-04-02 23:59:00  Featured           $50,000        934           False  
womens-machine-learning-competition-2018        2018-04-01 23:59:00  Featured           $50,000        505           False  
jigsaw-toxic-comment-classification-challenge   2018-03-20 23:59:00  Featured           $35,000       4551           False  
plant-seedlings-classification                  2018-03-12 23:59:00  Playground           Kudos        836           False

케글 데이터는 다음과 같이 불러올 수 있다. -p 이후로는 경로를 지정한다.

!kaggle competitions download -c titanic -p ../input/

이런 명령어는 아래와 같이 Competition문제의 Data메뉴에 가면 명령어가 나와 있다.

GPU 설정

colab 노트북에서 런타임 메뉴 -> 런타임 유형 변경 으로 아래와 같이 GPU를 설정 할 수 있다. 텐서플로우 설치방법은 기회가 되면 차후에 다시 포스팅하겠다.

참고자료