はじめに
今回は「Kaggle用開発環境の構築手順をひとまとめにしたプロジェクト雛形」を作成したので、ご紹介できればと思います。
「もっと良い方法があるよ」や「ここをこう直したらいいのでは」というご意見がございましたら、ぜひコメントいただけると嬉しいです。よろしくお願いします。
目指しているKaggle用開発環境
今回の雛形を作るにあたり、特に以下の点を重視しました。
- VSCodeとJupyterLab(ブラウザ)の双方からアクセスできること:
共通処理を適宜スクリプトに切り出してNotebookを綺麗に保ちたい - 複製が用意であること:
新たにインスタンスを作っても、簡単に同じ環境を作ることができる
作成したプロジェクト雛形
「上記の条件を満たすような環境をスムーズに構築できる」ことを目指して作成したプロジェクト雛形がこちらになります。 github.com
プロジェクト雛形の使い方に関するざっくりとしたイメージがこちらです。
CUDAのインストールやDockerコンテナのビルドも雛形に組み込んでいるため、 コマンド1つで環境構築が完了し、スムーズにJupyterLabの起動まで行えるという想定です。
動作確認したインスタンスの設定
雛形はGPUが導入されている環境を想定しています。 また、雛形内の各種実行コマンドはubuntuで動作させることを前提に記述しておりますので、 異なる環境を利用する場合はMakefileを 適宜読み替えていただければと思います。
設定内容 | |
---|---|
マシンタイプ | n1-highmem-4 |
GPU | 1 x NVIDIA T4 |
ブートディスク | ubuntu-2004-focal-v20240209 |
ディスクサイズ | 100GB |
VM プロビジョニング モデル | スポット |
利用方法
雛形の利用方法を以下に示します。
1. インスタンスにKaggle用開発環境を構築
GCEインスタンスを起動し、VSCodeの拡張機能:Remote Developmentを経由してインスタンスにアクセスします。
あとは、雛形をクローンして環境構築処理を実行すれば完了です。
git clone https://github.com/tm4roon/my-kaggle-project.git
source ./my-kaggle-project/setup.sh
2. プロジェクト雛形からコンペ用実験ディレクトリの作成
先ほどクローンしたmy-kaggle-project
をベースにコンペの実験ディレクトリを作成していきます。ここではTitanic - Machine Learning from Disasterを例に、実験ディレクトリの作成手順を紹介します。
cookiecutter my-kaggle-project
上記のコマンドを実行すると、各種パラメータを設定するよう求められますので、下記のように設定します。
competition_name
は、Kaggle APIのパラメータ[COMPETITION]
に対応しておりますので、参加するコンペ名に対応する値を入力してください。その他の値は任意に設定していただいて問題ありません。
3. ブラウザからJupyterLabへアクセス
下記のコマンドにより、JupyterLabを起動します。
make up # JupyterLabを起動
permission denied while trying to connect to the Docker daemon socket at ...
とエラーが出る場合はsudo
を付けて再度実行してみてください。
次に、VSCodeのポート転送を利用して、インスタンスのポート8888をlocalhostのポート8888に転送します。
あとは、ブラウザからlocalhost:8888にアクセスすれば、JupyterLabが立ち上がっていることが確認できると思います。※ 起動までに少し時間がかかる場合があります。
4. コンテナの停止
下記のコマンドでコンテナを停止できます。GCEのインスタンスも忘れずに停止しておきましょう。
make down
その他の代替案
今回はGCEとDockerを組み合わせてKaggle環境を構築しましたが、GCPには以下のようなNotebookを利用できるサービスが存在します。 手軽にNotebookを利用したり、ランタイムをサクサク切り替えたりと便利ですので、開発環境としてこれらのサービスを検討してみてもいいかもしれません。