Help us understand the problem. What is going on with this article?

GCPとJupyterLabでKaggle用環境構築

目次

  1. 概要
  2. GCP AIプラットフォームでJupyterLabを作成
  3. Kaggle APIのインストール
  4. Kaggle APIキーの設置
  5. Kaggleデータセットをダウンロード、サブミット
  6. Python Notebookの起動
  7. Kaggle用環境の停止 (課金の停止)
  8. Kaggle用環境のスペック変更

1. 概要

Kaggle competitionに参加しているとマシンスペックが足りなくて処理時間が膨大にかかり困ることや、処理中に他の作業ができなくて困ることが多々あります
GCPを使えば、自由自在にマシンスペックを変えて処理時間を短縮したり、Cloud上で処理をさせている間、ローカル環境で別のことができるなど非常に便利です
今回はKaggle初心者のために、便利なKaggle用環境の構築方法を記載します

2. GCP AIプラットフォームでJupyterLabを作成

GCPに登録していることが前提です。アカウントがない人は、下記のQiitaの記事を参考にしてGCPアカウントを作成してください
Qiita : Google Cloud Platform (GCP) のアカウント作った

GCPのメニュー > AIプラットフォーム > ノートブック

Screen Shot 2020-02-20 at 17.51.45.png

+ NEW INSTANCEをクリック

自分の環境に合わせたオプションを選ぶ
画像や動画処理を行わないテーブルコンペであれば、「Python」を選べばとりあえずはOK
Screen Shot 2020-02-20 at 18.11.07.png

スペックを確認

デフォルトだと、下記のSpecで構築される

Type Spec
CPU 4 vCPU
RAM 15 GB
GPU なし
Disk 100 GB
Price $ 99.89 / 月

上記のSpecで問題なければ「作成」をクリック

Screen Shot 2020-02-20 at 18.26.28.png

スペックを変更したい場合には、「カスタマイズ」をクリック

Screen Shot 2020-02-20 at 18.29.42.png

赤枠の箇所で、「CPU & RAM」、「GPU」、「Disk」サイズをカスタマイズして、「作成」をクリック

Screen Shot 2020-02-20 at 18.31.01.png

「JUPYTERLABを開く」をクリック

Screen Shot 2020-02-20 at 18.44.58.png

ブラウザの別タブで下記のような画面が出てきます
Screen Shot 2020-02-20 at 18.48.00.png

3. Kaggle APIのインストール

「Terminal」をクリック

Screen Shot 2020-02-20 at 18.48.49.png

kaggle apiをインストール

ターミナルで、下記のコマンドを実行

Terminal
pip install kaggle

Screen Shot 2020-02-20 at 20.07.50.png

Terminal
pip install kaggle-environments --upgrade

Screen Shot 2020-02-20 at 20.09.12.png

パスを通す

Terminal
echo 'export PATH=/home/jupyter/.local/bin:$PATH' > .bash_profile

「Terminal」を再度立ち上げる

Screen Shot 2020-02-20 at 20.13.27.png

4. Kaggle APIキーの設置

Kaggle APIキーの取得

Kaggle APIキーが分からない人は下記のQiitaの記事を参考にして取得してください
Qiita : Kaggle APIの導入とその操作

Kaggle APIキーの設置

取得したKaggle APIキーをテキストエディタで開き、中身をCopyする
⬇️こんな感じの形式になっています

kaggle.json
{"username":"XXXXXXXXXXXXXXX","key":"XXXXXXXXXXXXXXXXXXXXX"}

GCP上のJupyterLabのGUIでは、隠しフォルダが表示されないのでファイルを直接~/.kaggle配下にファイルをアップロードできないため、echoコマンドでファイルを作成する

Terminal
echo '{"username":"XXXXXXXXXXXXXXX","key":"XXXXXXXXXXXXXXXXXXXXX"}' > ~/.kaggle/kaggle.json

Screen Shot 2020-02-20 at 19.12.15.png

ファイルを権限を変更

Terminal
chmod 600 ~/.kaggle/kaggle.json

Screen Shot 2020-02-20 at 19.16.45.png

5. Kaggleデータセットをダウンロード、サブミット

詳細なkaggle apiのコマンドについては、公式のGithubのページを参考にしてください
その中でもよく使う必須のコマンドを紹介します
Github : Kaggle API

Kaggle competitionsのリストを確認

Terminal
kaggle competitions list

Screen Shot 2020-02-20 at 20.17.47.png

kaggle competitions listの「userHasEntered」がTrueになっているものが今現在、参加しているcompetitionです
これらに限り、下記のコマンドでダウンロードできます
もし、Falseのcompetitionのデータをダウンロードしたい場合には、Kaggle : Competitionsで参加したいCompetitionを開いて、「Join Competition」をクリックしてください

Screen Shot 2020-02-20 at 20.23.38.png

Kaggle competitionsのデータセットをダウンロード

Terminal
kaggle competitions download -c <COMPETITION-NAME>

Screen Shot 2020-02-20 at 20.25.35.png

ファイルをunzipコマンドなどで展開すれば、通常通りデータを扱えます

Terminal
unzip <COMPETITION-NAME>

Screen Shot 2020-02-20 at 20.27.30.png

csvファイルをクリックすれば、JupiyterLab上で確認できます
Kaggle Competitionの制約上、データを公開できないため、灰色で塗りつぶしていますが、普通に見えています

Screen Shot 2020-02-20 at 20.31.53.png

6. Python Notebookの起動

「Python 3」をクリック

Screen Shot 2020-02-20 at 20.35.55.png

コードを書く!

ちなみに、GCPのAIプラットフォームのDefaultは、python3.5.3でした
Screen Shot 2020-02-20 at 20.37.22.png

7. Kaggle用環境の停止 (課金の停止)

超重要です
Kaggle Competionに参加していると、ハイスペックマシンを使う時が多々あります
お金の節約のために、使っていないときは、VMを停止させて節約しましょう

対象を選択後、「停止」をクリック

Screen Shot 2020-02-20 at 20.41.49.png

8. Kaggle用環境のスペック変更

スペックをあげたい際や、むしろそこまでスペックがいらなくなった際には、次のようにして調整しましょう
ちなみに、停止処理をしていないと変更できないです

対象をクリック

Screen Shot 2020-02-20 at 20.44.55.png

「編集」をクリック

Screen Shot 2020-02-20 at 20.45.25.png

CPU, RAMの変更

Screen Shot 2020-02-20 at 20.46.41.png

GPUの追加

Screen Shot 2020-02-20 at 20.49.26.png
Screen Shot 2020-02-20 at 20.51.02.png

まとめ

このようにGCPでは、簡単にKaggle用の環境を作成できます
追い込み時期にSpecをブーストさせたり、クラウド上で処理をさせてローカル環境では別のことができたりとこういった面でも非常におすすめです
こんな長い記事を読んでいただきありがとございます
では、良いエンジニアライフを!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした