개요
무료로 파이썬 쥬피터 노트북 및 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로 아래와 같이 설치한다.
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 이후로는 경로를 지정한다.
이런 명령어는 아래와 같이 Competition문제의 Data메뉴에 가면 명령어가 나와 있다.
GPU 설정
colab 노트북에서 런타임 메뉴 -> 런타임 유형 변경 으로 아래와 같이 GPU를 설정 할 수 있다. 텐서플로우 설치방법은 기회가 되면 차후에 다시 포스팅하겠다.