LoginSignup
2
3

More than 1 year has passed since last update.

GCPでプリエンプティブルのJupyterLab環境を楽して構築

Last updated at Posted at 2021-10-10

クラウドでJupyter環境を使いたい場合Google Colaboratory(Colab)Proを使えばいいと思います。私も基本的にそうしています。

ですが本稿では、何らかの理由でColabが使えない状況・かつクラウドのリソースを使いたいという時に、Colabのように安価で簡単に使い始められるJupyterLab環境をGoogle Cloud Platform(GCP)に構築します。
Colabぐらい...とはいきませんが、できるだけ楽に・安価に構築します。

"楽"というのは、具体的には下記のようになっています。

  • 構築後のインスタンスに接続してpip install等で内部状態を変える必要がないこと
    • Ansible等のツールを使わなくても環境の再現性が取れる
  • 構成に合わせてIPアドレスやポート番号などのネットワーク構成を変える必要がないこと
    • セキュアな状態を保つためにネットワークを管理したりする必要がない

プリエンプティブル VM インスタンスによるコスト削減

GCPには プリエンプティブル VM インスタンス という機能があり、「24時間で停止する」等いくつかの制約を受ける代わりに安価で利用できます。Microsoft Azureで言うAzure Spot Virtual Machinesや、AWSで言うSpot Instancesと似たような物だと思います。

本稿ではこのプリエンプティブルインスタンスを構築することでコストを削減します。
...ですが、AI PlatformノートブックやVertex AI ノートブックを使ったり、マーケットプレイスのVMイメージを利用した方法ではプリエンプティブルインスタンスにできないようなので、Compute Engineで新規VMインスタンスから構築します。

実行環境

GCPの管理コンソールにアクセスできるWebブラウザだけあれば良いです。

手順

インスタンスの構築

GCPの管理コンソールで「Compute Engine」→「VM インスタンス」→「インスタンスを作成」から、好みの名前やスペックを選んでインスタンスを構築します。必須なのは以下2点です。

  • 「ブートディスク」→「変更」→「公開イメージ」 「OS」を「Deep Learning on Linux」 にする
    • バージョンは使いたいソフトウェアにあわせてお好みで image.png
  • 「ネットワーク、ディスク、セキュリティ、管理、単一テナンシー」→「管理」→「可用性ポリシー」 「プリエンプティブ」を「オン」 にする image.png

必須の設定は以上です。ネットワークのアクセス許可等の設定は基本的に必要ありません。

JupyterLabにアクセスする

Deep Learning on Linuxのイメージを使うと8080ポートでJupyterLabが自動的に立ち上がりますが、このままではアクセスする方法がありません。

そこでgcloudコマンドを使っての SSHポートフォワード を使うことで、パブリックネットワークに対してアクセス許可を新規で追加したりすることなくJupyterLabにアクセスできるようになります。さらに、CloudShellには Webプレビュー という公開されたポートに対してGCPログイン済アカウントでのみアクセスできるURLを払い出す機能があります。
これらを利用することで、ブラウザのみで(gcloudコマンド実行環境をローカルに構築したりすること無く)セキュアにJupyterLab環境へアクセスします。

管理コンソール右上「CloudShellをアクティブにする」で、CloudShellを起動します。
image.png

Shellが立ち上がったら、下記コマンドを入力します。

$ gcloud compute ssh --project [プロジェクト名] --zone [ゾーン名] [インスタンス名] -- -L 8080:localhost:8080

プロジェクト名やゾーン名は省略しても実行できる場合があります。

実行後、インスタンスに接続できたらShellはそのまま「ウェブでプレビュー」→「ポート 8080 でプレビュー」を選択します。

image.png

これでJupyterLabが立ち上がって使えるようになっていると思います。

image.png

参考

2
3
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
2
3