👨‍💻

GCPでKaggle環境を構築する(2025)

に公開

なぜ実施したのか

元々Kaggleはやっていたのですが、本格的に上位を目指していこうと思い立ちました。
ただ、マシンパワーに不安がまだまだあるので、GCPでもう少し強いマシンを使いたくなったというのがメインの理由です。

Google Colabを環境として使うことも多かったのですが、

  • ローカル環境で使えるLLM Tool(Copilot使いたい)との相性が悪く、多くのコードを生成するときに効率が悪かった。
  • Driveのマウントも毎回して面倒になった。

などから、GCPにLocalから繋いでリソースを使っている方も多そうだったので、勉強がてら実施しました。

PC

私はMacbook Airを使っていますので、Windowsの方は若干コマンドが異なるかもしれません。

参考にした記事

流れ

流れは下記の通りで進みます。
Goalは「LocalからKaggleコンテナが入ったGCPにアクセスし、GCPリソースを使って分析できること」です。

  1. GCP環境でVMを作る
  2. Local環境を整え、GCPとssh接続する
  3. GCPにDockerをインストールし、分析する

1. GCP環境でVMを作る

まずはVMを必要があります。
VMはVirtual Machineの略で、クラウド上でいじれるパソコンみたいなものです。
(AWSだとEC2, Azure/GCPだとVMと言ったりします。)

1-1. VMを作成する

これは他の方と同じ通りでポチポチ作成していきました。
私は今のコンペでGPUを使うか微妙だったので、汎用&ハイメモリのものを作成しました。
1時間0.47$なので消し忘れても一日数千円でダメージは小さい(大きいですが)ので、これでやっていきます。
ネットワーク周りの細かい設定は今回実施しません(必要に応じて今後やります)。
→と思ったらストレージ周りは増強しないとKaggleのDocker環境が入りませんでした。ので、200GBに拡張しました。

初期設定の10GBだとDockerを入れる際に容量不足になります。
ストレージだけは10→最低200GBくらいに設定した方が良さそうです。

2. Local環境を整え、GCPとssh接続する

GCPのVMができたので、ローカルから接続してみます。
ただ、Kaggleの環境が準備されていない(Pythonや各種packageが入っていない状態)ので、初期状態のGCPに接続するtestの段階になります。
Localとssh接続するにはVSCodeの設定ととそれに関わるファイルの生成・登録が必要でした。

2-1. VSCodeの設定

VSCodeでGCPと接続した上で分析するためには下記の拡張機能を入れる必要があります。
これらをinstallください。

  • Remote SSH
  • Dev Containers

2-2. 必要ファイルの作成・登録

GCPと接続するためには下記のファイルを作る必要があります。

  • ssh keyの作成
  • configの作成

2-2-1. ssh keyの作成

こちらの記事に従って、ssh keyを作成しました。
https://zenn.dev/moritako/articles/f3ec225278546b

2-2-2. configの作成

こちらの記事に従って、configファイルを作成しました。
https://osushinekotan.hatenablog.com/entry/2023/10/01/223228

# configファイルの中身
Host kaggle-instance-1 # インスタンス名
    Hostname {インスタンスの外部IP}
    User {SSH鍵のユーザー名}
    IdentityFile {ローカルの公開鍵の場所} # ~/.ssh/id_ed25519など

configのインスタンス名&外部IPにはインスタンス名と外部IPに下記を入れる必要があります。

2-3. sshキーの登録をGCPに登録する

configファイルができたらssh接続できるかなと思ったのですが、自分で生成したsshキーをGCP側にも登録する必要があります。
下記を参考ください。
https://qiita.com/NeGI1009/items/f9e6f10df7d428bc3c26

2-4. ssh接続する

下記の拡張機能を開くと、インスタンスに飛べるボタンがあるのでポチッと押してみます。
無事繋がったようです。

3. GCPにDockerをインストールし、分析する

次にDockerをGCP側で設定する必要があります。
下記の手順でKaggle環境と同じGCPにローカルから入ることができました。

  1. VSCodeからssh接続(拡張機能活用)
  2. DockerをGCPへインストール
  3. Docker環境にはいる(拡張機能活用)
  4. 分析開始

3-1. VSCodeからssh接続(拡張機能活用)

これは先ほど入っている状態です。

3-2. DockerをGCPへインストール

これはsshで入った状態で、ぽちぽちDockerをいれていきます。
なので、VSCodeのターミナルで打っていきます。

rootユーザーに切り替えます。

sudo su

Dockerインストールと設定をします。

curl https://get.docker.com | sh
sudo systemctl start docker && sudo systemctl enable docker

Kaggleの環境を導入するgitをcloneします。

git clone https://github.com/Kaggle/docker-python.git

cloneしたgit環境に入ります。

cd docker-python

buildします。https://github.com/Kaggle/docker-python.git を参考にします。

./build

dockerをrunします。

docker run --name kaggle -it kaggle/python-build /bin/bash

3-3. Docker環境に入る(拡張機能活用)

ここまできたら拡張機能のDev Containerでコンテナに入れるので入ります。
(VSCode再起動しないとみれないこともありそうなので、見えなかったらいくつかリトライするのが良い気がします)

3-4. 分析開始

.pyは普通に作れますし、Copilotも使えます。

Jupyter LabやJupyter notebookもVSCodeのTerminalから立ち上げられます。
他自作Moduleの読み込みもできましたし、スペックを確認すると、今回立ち上げたスペックのものとなっていたので、しっかりGCP環境と繋がっていそうです。

Discussion