カスタム コンテナを使用してインスタンスを作成する
このページでは、カスタム コンテナに基づいて Gemini Enterprise Agent Platform Workbench インスタンスを作成する方法について説明します。
概要
Agent Platform Workbench インスタンスは、Google 提供のベースコンテナから派生したカスタム コンテナの使用をサポートしています。これらのベースコンテナを変更してカスタム コンテナ イメージを作成し、これらのカスタム コンテナを使用して Agent Platform Workbench インスタンスを作成できます。
ベースコンテナは、ホスト仮想マシン(VM)の Container-Optimized OS で構成されます。ホストイメージは cos-stable イメージ ファミリーからビルドされます。
制限事項
プロジェクトを計画する際は、次の制限事項を考慮してください。
カスタム コンテナは、Google 提供のベースコンテナから派生したものである必要があります。ベースコンテナから派生していないコンテナを使用すると、互換性の問題が発生するリスクが高まり、Agent Platform Workbench インスタンスの使用をサポートする機能が制限されます。
Agent Platform Workbench インスタンスで複数のコンテナを使用することはできません。
カスタム コンテナをホストする VM は Container-Optimized OS で実行されているため、ホストマシンへの操作方法が制限されます。たとえば、Container-Optimized OS にはパッケージ マネージャーが含まれていません。つまり、ホスト上で動作するパッケージは、マウントされたコンテナで実行する必要があります。
Agent Platform Workbench インスタンスは、
nerdctl(containerd CLI)を使用してカスタム コンテナを実行します。これは、Image ストリーミング サービスとの互換性を確保するために必要です。メタデータ値を使用して追加されるコンテナ パラメータは、nerdctlでサポートされているものに準拠する必要があります。Agent Platform Workbench インスタンスは、Artifact Registry または公開コンテナ リポジトリから pull するように構成されています。非公開リポジトリから pull するようにインスタンスを構成するには、containerd で使用される認証情報を手動で構成する必要があります。
ベースコンテナ
標準ベースコンテナ
標準ベースコンテナは、Agent Platform Workbench のすべての機能をサポートし、次のものを含みます。
- プリインストールされたデータ サイエンス パッケージ。
- Deep Learning Containers に類似した Cuda ライブラリ。
- Google Cloud JupyterLab の統合(Managed Service for Apache Spark や BigQuery の統合など)。
curlやgitなどの一般的なシステム パッケージ。- メタデータベースの JupyterLab 構成。
- Micromamba ベースのカーネル管理。
仕様
標準ベースコンテナの仕様は次のとおりです。
- ベースイメージ:
nvidia/cuda:12.6.1-cudnn-devel-ubuntu24.04 - 画像サイズ: 約 22 GB
- URI:
us-docker.pkg.dev/deeplearning-platform-release/gcr.io/workbench-container:latest
スリム ベース コンテナ
スリムなベースコンテナには、インスタンスへのプロキシ接続を許可する最小限の構成セットが用意されています。標準の Agent Platform Workbench の機能とパッケージは、次のものを除き、含まれていません。
- JupyterLab
- メタデータ ベースの JupyterLab 構成
- Micromamba ベースのカーネル管理
追加のパッケージまたは JupyterLab 拡張機能は、個別にインストールして管理する必要があります。
仕様
スリム ベース コンテナの仕様は次のとおりです。
- ベースイメージ:
marketplace.gcr.io/google/ubuntu24.04 - 画像サイズ: 約 2 GB
- URI:
us-docker.pkg.dev/deeplearning-platform-release/gcr.io/workbench-container-slim:latest
始める前に
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Notebooks API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Notebooks API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
必要なロール
カスタム コンテナを使用して Agent Platform Workbench インスタンスを作成するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
- ユーザー アカウントに対するノートブック実行者(
roles/notebooks.runner) -
Artifact Registry リポジトリからイメージを pull するには、サービス アカウントに対する Artifact Registry 読み取り (
roles/artifactregistry.reader)が必要です。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
カスタム コンテナの作成
Agent Platform Workbench インスタンスで使用するカスタム コンテナを作成するには:
Google 提供のベースコンテナ イメージから派生した派生コンテナを作成します。
コンテナをビルドして Artifact Registry に push します。Agent Platform Workbench インスタンスを作成するときに、コンテナの URI を使用します。たとえば、URI は
gcr.io/PROJECT_ID/IMAGE_NAMEのようになります。
インスタンスを作成する
カスタム コンテナに基づいて Agent Platform Workbench インスタンスを作成するには、 Google Cloud コンソールまたは Google Cloud CLI を使用します。
コンソール
カスタム コンテナに基づいて Agent Platform Workbench インスタンスを作成するには、次の操作を行います。
Google Cloud コンソールで [インスタンス] ページに移動します。
[新規作成] をクリックします。
[新しいインスタンス] ダイアログで、[詳細オプション] をクリックします。
[インスタンスの作成] ダイアログの [環境] セクションで、[カスタム コンテナを使用する] を選択します。
[Docker コンテナ イメージ] で [選択] をクリックします。
[コンテナ イメージの選択] ダイアログで、使用するコンテナ イメージに移動し、[選択] をクリックします。
省略可。[起動後のスクリプト] に、使用する起動後のスクリプトへのパスを入力します。
省略可。インスタンスのメタデータを追加します。詳細については、カスタム コンテナ メタデータをご覧ください。
省略可。[ネットワーキング] セクションで、ネットワーク設定をカスタマイズします。詳細については、ネットワーク構成オプションをご覧ください。
インスタンス作成ダイアログの残りの部分に入力して、[作成] をクリックします。
Agent Platform Workbench がインスタンスを作成し、自動的に起動します。インスタンスを使用する準備が整うと、Agent Platform Workbench で [JupyterLab を開く] リンクが有効になります。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
-
INSTANCE_NAME: Agent Platform Workbench インスタンスの名前。先頭は英字で、それに続く最大 62 文字の英小文字、数字、ハイフン(-)で構成します。末尾にハイフンは使用できません。 PROJECT_ID: プロジェクト IDLOCATION: インスタンスを配置するゾーン-
CUSTOM_CONTAINER_PATH: コンテナ イメージ リポジトリのパス(例:gcr.io/PROJECT_ID/IMAGE_NAME) -
METADATA: このインスタンスに適用するカスタム メタデータ。たとえば、起動後スクリプトを指定するには、post-startup-scriptメタデータタグを"--metadata=post-startup-script=gs://BUCKET_NAME/hello.sh"の形式で使用してください。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud workbench instances create INSTANCE_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --container-repository=CUSTOM_CONTAINER_URL \ --container-tag=latest \ --metadata=METADATA
Windows(PowerShell)
gcloud workbench instances create INSTANCE_NAME ` --project=PROJECT_ID ` --location=LOCATION ` --container-repository=CUSTOM_CONTAINER_URL ` --container-tag=latest ` --metadata=METADATA
Windows(cmd.exe)
gcloud workbench instances create INSTANCE_NAME ^ --project=PROJECT_ID ^ --location=LOCATION ^ --container-repository=CUSTOM_CONTAINER_URL ^ --container-tag=latest ^ --metadata=METADATA
コマンドラインからインスタンスを作成するコマンドの詳細については、gcloud CLI のドキュメントをご覧ください。
Agent Platform Workbench がインスタンスを作成し、自動的に起動します。インスタンスを使用する準備が整うと、Agent Platform Workbench により Google Cloud コンソールの [JupyterLab を開く] リンクが有効化されます。
ネットワーク構成オプション
カスタム コンテナを使用する Agent Platform Workbench インスタンスには、一般的なネットワーク オプションに加えて、Artifact Registry サービスへのアクセス権が必要です。
VPC のパブリック IP アクセスを無効にしている場合は、プライベート Google アクセスが有効になっていることを確認します。
イメージ ストリーミングを有効にする
カスタム コンテナホストは、Google Kubernetes Engine(GKE)でイメージ ストリーミングとやり取りするようにプロビジョニングされます。これにより、コンテナの pull が高速化され、GKE リモート ファイル システムにキャッシュに保存された大規模なコンテナの初期化時間が短縮されます。
イメージ ストリーミングを有効にするための要件の表示については、要件をご覧ください。多くの場合、Container File System API を有効にすることで、Agent Platform Workbench インスタンスでイメージ ストリーミングを使用できます。
Container File System API を有効にする
ホスト VM がカスタム コンテナを実行する方法
ホスト VM は、Docker を使用してカスタム コンテナを実行するのではなく、Kubernetes Namespace の nerdctl を使用してコンテナを読み込んで実行します。これにより、Agent Platform Workbench はカスタム コンテナに Image ストリーミングを使用できます。
# Runs the custom container. sudo /var/lib/google/nerdctl/nerdctl --snapshotter=gcfs -n k8s.io run --name payload-container
インストールの例: カスタム デフォルト カーネルを使用するカスタム コンテナ
次の例は、pip パッケージがプリインストールされた新しいカーネルを作成する方法を示しています。
新しいカスタム コンテナを作成します。
FROM us-docker.pkg.dev/deeplearning-platform-release/gcr.io/workbench-container:latest ENV MAMBA_ROOT_PREFIX=/opt/micromamba RUN micromamba create -n ENVIRONMENT_NAME -c conda-forge python=PYTHON_VERSION -y SHELL ["micromamba", "run", "-n", "ENVIRONMENT_NAME", "/bin/bash", "-c"] RUN micromamba install -c conda-forge pip -y RUN pip install PACKAGE RUN pip install ipykernel RUN python -m ipykernel install --prefix /opt/micromamba/envs/ENVIRONMENT_NAME --name ENVIRONMENT_NAME --display-name KERNEL_NAME # Creation of a micromamba kernel automatically creates a python3 kernel # that must be removed if it's in conflict with the new kernel. RUN rm -rf "/opt/micromamba/envs/ENVIRONMENT_NAME/share/jupyter/kernels/python3"
新しいコンテナを Artifact Registry に追加します。
gcloud auth configure-docker REGION-docker.pkg.dev docker build -t REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME . docker push REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest
インスタンスの作成
gcloud workbench instances create INSTANCE_NAME \ --project=PROJECT_ID \ --location=ZONE \ --container-repository=REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME \ --container-tag=latest
カスタム コンテナの永続カーネル
Agent Platform Workbench カスタム コンテナは、各コンテナ内の /home/USER ディレクトリにのみデータディスクをマウントします。ここで、jupyter はデフォルト ユーザーです。つまり、/home/USER 以外の変更はエフェメラルで、再起動後に保持されません。インストール済みのパッケージを特定のカーネルに保持する必要がある場合は、/home/USER ディレクトリにカーネルを作成できます。
/home/USER ディレクトリにカーネルを作成するには:
micromamba 環境を作成します。
micromamba create -p /home/USER/ENVIRONMENT_NAME -c conda-forge python=3.11 -y micromamba activate /home/USER/ENVIRONMENT_NAME pip install ipykernel pip install -r ~/requirement.txt python -m ipykernel install --prefix "/home/USER/ENVIRONMENT_NAME" --display-name "Example Kernel"
次のように置き換えます。
- USER: ユーザー ディレクトリ名(デフォルトは
jupyter) - ENVIRONMENT_NAME: 環境の名前。
- PYTHON_VERSION: Python のバージョン(
3.11など)
- USER: ユーザー ディレクトリ名(デフォルトは
カーネルが更新されるまで 30 秒から 1 分ほど待ちます。
ベースコンテナの起動の更新
Agent Platform Workbench インスタンスのベースコンテナ(us-docker.pkg.dev/deeplearning-platform-release/gcr.io/workbench-container:latest)は、/run_jupyter.sh を実行して JupyterLab を起動します。
派生コンテナでコンテナの起動を変更する場合は、/run_jupyter.sh を追加して JupyterLab のデフォルト構成を実行する必要があります。
Dockerfile を変更する方法の例を次に示します。
# DockerFile FROM us-docker.pkg.dev/deeplearning-platform-release/gcr.io/workbench-container:latest CP startup_file.sh / # Ensure that you have the correct permissions and startup is executable. RUN chmod 755 /startup_file.sh && \ chown jupyter:jupyter /startup_file.sh # Override the existing CMD directive from the base container. CMD ["/startup_file.sh"]
# /startup_file.sh
echo "Running startup scripts"
...
/run_jupyter.shベースコンテナ内の JupyterLab 構成の更新
ベースコンテナの JupyterLab 構成を変更する必要がある場合は、次の操作を行う必要があります。
JupyterLab がポート 8080 に構成されていることを確認します。プロキシ エージェントは、すべてのリクエストをポート 8080 に転送するように構成されています。Jupyter サーバーが正しいポートをリッスンしていない場合、インスタンスでプロビジョニングの問題が発生します。
jupyterlabmicromamba 環境で JupyterLab パッケージを変更します。JupyterLab とそのプラグインを実行するための個別のパッケージ環境が用意されており、カーネル環境との依存関係の競合がないようにしています。追加の JupyterLab 拡張機能をインストールする場合は、jupyterlab環境内にインストールする必要があります。例:# DockerFile FROM us-docker.pkg.dev/deeplearning-platform-release/gcr.io/workbench-container:latest RUN micromamba activate jupyterlab && \ jupyter nbextension install nbdime
カスタム コンテナ メタデータ
Gemini Enterprise Agent Platform Workbench インスタンスに適用できるメタデータの標準リストに加えて、カスタム コンテナを使用するインスタンスには、ペイロード コンテナのインスタンス化を管理するための次のメタデータが含まれます。
| 機能 | 説明 | メタデータキー | 使用可能な値とデフォルトの値 |
|---|---|---|---|
| コンテナ イメージで Cloud Storage FUSE を有効にする |
|
container-allow-fuse |
|
| 追加のコンテナ実行パラメータ |
追加のコンテナ パラメータを |
container-custom-params |
コンテナ実行パラメータの文字列。例:
|
| その他のコンテナ環境フラグ |
環境変数を |
container-env-file |
コンテナの環境変数の文字列。例:
|
カスタム コンテナをアップグレードする
インスタンスが初めて起動すると、custom-container-payload メタデータに保存されている URI からコンテナ イメージが pull されます。:latest タグを使用すると、コンテナは再起動ごとに更新されます。custom-container-payload メタデータ値は保護されたメタデータキーであるため、直接変更することはできません。
インスタンスのカスタム コンテナ イメージを更新するには、Google Cloud CLI、Terraform、または Notebooks API でサポートされている次の方法を使用します。
gcloud
Agent Platform Workbench インスタンスのカスタム コンテナ イメージ メタデータを更新するには、次のコマンドを使用します。
gcloud workbench instances update INSTANCE_NAME \ --container-repository=CONTAINER_URI \ --container-tag=CONTAINER_TAG
Terraform
Terraform 構成の container_image フィールドを変更して、コンテナ ペイロードを更新できます。
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
resource "google_workbench_instance" "default" { name = "workbench-instance-example" location = "us-central1-a" gce_setup { machine_type = "n1-standard-1" container_image { repository = "us-docker.pkg.dev/deeplearning-platform-release/gcr.io/workbench-container" family = "latest" } } }
Notebooks API
updateMask の gce_setup.container_image.repository と gce_setup.container_image.tag を変更して、instances.patch メソッドを使用します。
診断ツールを実行する
診断ツールは、さまざまな Agent Platform Workbench サービスのステータスを確認します。詳細については、診断ツールが実行するタスクをご覧ください。
カスタム コンテナを使用して Agent Platform Workbench インスタンスを作成する場合、診断ツールは、ユーザーが実行できるホスト環境のスクリプトとして使用できません。代わりに、バイナリにコンパイルされ、Container-Optimized OS 環境で診断サービスを実行するようにビルドされた Google ランタイム コンテナに読み込まれます。Container-Optimized OS の概要をご覧ください。
診断ツールの実行手順は次のとおりです。
SSH ターミナルで、次のコマンドを実行します。
sudo docker exec diagnostic-service ./diagnostic_tool
その他のコマンド オプションを表示するには、次のコマンドを実行します。
sudo docker exec diagnostic-service ./diagnostic_tool --help
診断ツールのオプションの詳細については、ヘルス ステータスのモニタリングのドキュメントをご覧ください。
REST API を使用して診断ツールを実行するには、REST API のドキュメントをご覧ください。
インスタンスにアクセスする
プロキシ URL を使用してインスタンスにアクセスできます。
インスタンスが作成されてアクティブになったら、gcloud CLI を使用してプロキシ URL を取得できます。
後述のコマンドデータを使用する前に、次のように置き換えます。
-
INSTANCE_NAME: Agent Platform Workbench インスタンスの名前 PROJECT_ID: プロジェクト IDLOCATION: インスタンスが配置されているゾーン
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud workbench instances describe INSTANCE_NAME \ --project=PROJECT_ID \ --location=LOCATION | grep proxy-url
Windows(PowerShell)
gcloud workbench instances describe INSTANCE_NAME ` --project=PROJECT_ID ` --location=LOCATION | grep proxy-url
Windows(cmd.exe)
gcloud workbench instances describe INSTANCE_NAME ^ --project=PROJECT_ID ^ --location=LOCATION | grep proxy-url
proxy-url: 7109d1b0d5f850f-dot-datalab-vm-staging.googleusercontent.com
describe コマンドによって、プロキシ URL が返されます。インスタンスにアクセスするには、ウェブブラウザでプロキシ URL を開きます。
コマンドラインでインスタンスを記述するコマンドの詳細については、gcloud CLI のドキュメントをご覧ください。