6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Kaggleの公式DockerイメージをGCPにデプロイしてJupyter Notebookに接続する

Last updated at Posted at 2020-01-01

掲題の通り、GCPのVMインスタンスにKaggleの公式Dockerイメージをデプロイし、ローカルマシンからJupyter Notebookに接続するまでの手順を記述しています。

gcloudの設定

gcloudをインストールしていない場合は、インストールしておいてください。
以下のように、認証と設定が済んでいる想定で進みます。ゾーンはasia-northeast1-b以外でも構いません。

$ gcloud auth login
$ gcloud config set project PROJECT_ID
$ gcloud config set compute/zone asia-northeast1-b

インスタンス作成

以下のコマンドでインスタンスを作成します。

$ gcloud compute instances create kaggle-compute \
  --image-family=ubuntu-1804-lts \
  --image-project=gce-uefi-images \
  --boot-disk-size="100" \
  --custom-cpu 24 \
  --custom-memory 22GB \
  --maintenance-policy="TERMINATE" \
  --no-restart-on-failure \
  --preemptible

主な仕様は以下の通りです。

  • インスタンス名: kaggle-compute
  • OS: Ubuntu 18.04
  • CPU: 24コア
  • メモリ: 22GB
  • ストレージ: 100GB

CPUのコア数を更に増やす場合は、別途割り当て上限の変更を申請する必要があります。

--preemptibleを付けることでプリエンプティブル VM インスタンスとしてインスタンスを作成できます。
これにより、可用性を犠牲にして大幅なコストカットが可能となります。

少し経つと以下のコマンドでssh接続できるようになります。

$ gcloud compute ssh kaggle-compute

sshできたら、インスタンスの初期設定をするため、以下のスクリプトを作成し、実行します。
このスクリプトによりdockerdocker-composepipKaggle APIunzipがインストールされます。
unzipは必須ではないのですが、Kaggleのデータセットはzip形式で配布される場合もあるので、解凍するためにインストールしておきます。

set_up.sh
#! /bin/bash
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get -y install docker-ce docker-ce-cli containerd.io
sudo curl -L https://github.com/docker/compose/releases/download//1.25.1-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo apt-get install -y python3-pip
pip3 install kaggle
sudo apt-get -y install unzip
$ sh ./set_up.sh

kaggle.jsonを配置

つぎにkaggle APIを使用できるようにします。インストールは前述のスクリプトによって完了しているので、kaggle.jsonを置くだけです。
お好きな方法で~/.kaggle/kaggle.jsonを配置してください。

$ vim ~/.kaggle/kaggle.json # put your kaggle.json
$ chmod 600 ~/.kaggle/kaggle.json
$ kaggle --version
Kaggle API 1.5.6

コンテナ起動

必要なファイルを以下のリポジトリにcommitしています。
https://github.com/shinsuke27/kaggle-docker

これをcloneしてdocker-compose up --buildします。
このとき、to login with a token:というステートメントのあとにNotebookのURLがトークン付きで吐かれるのでこちらを控えておきます。

$ git clone https://github.com/shinsuke27/kaggle-docker.git kaggle
$ cd ./kaggle
$ mkdir ./input
$ sudo docker-compose up --build

なお、ここで作成したinputというディレクトリ内にコンペのデータを配置することで、KaggleのNotebookと同じパスでデータを読み込むことができます。

Jupyter Notebookに接続

$ gcloud compute ssh kaggle-compute -- -L 8080:localhost:8080

ブラウザから http://loocalhost:8080/ に接続します。

GPU対応させるには

こちらをご参照ください
https://qiita.com/shin27/items/50bf1df1b2bae3dba032

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?