Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

posted at

updated at

Organization

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

クラウドで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

参考

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
1
Help us understand the problem. What are the problem?