このページでは、Vertex AI Workbench の使用中に問題が発生した場合に役立つトラブルシューティング手順について説明します。
Vertex AI のその他のコンポーネントの使用方法については、Vertex AI のトラブルシューティングをご覧ください。
このページのコンテンツをフィルタするには、トピックをクリックします。
役に立つ手順
このセクションでは、役に立ちそうな手順について説明します。
SSH を使用してユーザー管理ノートブック インスタンスに接続する
SSH を使用してインスタンスに接続するには、Cloud Shell または Google Cloud CLI がインストールされている環境で次のコマンドを入力します。
gcloud compute ssh --project PROJECT_ID \
--zone ZONE \
INSTANCE_NAME -- -L 8080:localhost:8080
次のように置き換えます。
PROJECT_ID
: プロジェクト IDZONE
: インスタンスが配置されている Google Cloud ゾーンINSTANCE_NAME
: インスタンスの名前
インスタンスの Compute Engine の詳細ページを開き、[SSH] ボタンをクリックしてインスタンスに接続することもできます。
Inverting Proxy サーバーに再登録する
ユーザー管理ノートブック インスタンスを内部 Inverting Proxy サーバーに再登録するには、ユーザー管理ノートブックのページから VM を停止して起動します。あるいは、SSH を使用してユーザー管理ノートブック インスタンスに接続して、次のように入力します。
cd /opt/deeplearning/bin sudo ./attempt-register-vm-on-proxy.sh
Docker サービスのステータスを確認する
Docker サービスのステータスを確認するには、SSH でユーザー管理のノートブック インスタンスに接続して、次のように入力します。
sudo service docker status
Inverting Proxy エージェントが実行されていることを確認する
ノートブックの Inverting Proxy エージェントが実行されているかどうかを確認するには、SSH でユーザー管理のノートブック インスタンスに接続して、次のように入力します。
# Confirm Inverting Proxy agent Docker container is running (proxy-agent) sudo docker ps # Verify State.Status is running and State.Running is true. sudo docker inspect proxy-agent # Grab logs sudo docker logs proxy-agent
Jupyter サービスのステータスを確認してログを収集する
Jupyter サービスのステータスを確認するには、SSH でユーザー管理のノートブック インスタンスに接続して、次のように入力します。
sudo service jupyter status
Jupyter サービスログを収集するには:
sudo journalctl -u jupyter.service --no-pager
Jupyter の内部 API がアクティブであることを確認する
Jupyter API は常にポート 8080 で実行する必要があります。これを確認するには、インスタンスの syslog で次のようなエントリを調べます。
Jupyter Server ... running at: http://localhost:8080
Jupyter の内部 API がアクティブであることを確認するには、SSH を使用してユーザー管理ノートブック インスタンスに接続して、次のように入力する方法もあります。
curl http://127.0.0.1:8080/api/kernelspecs
リクエストに時間がかかりすぎる場合は、API が応答するまでの時間を測定することもできます。
time curl -V http://127.0.0.1:8080/api/status
time curl -V http://127.0.0.1:8080/api/kernels
time curl -V http://127.0.0.1:8080/api/connections
Vertex AI Workbench インスタンスでこれらのコマンドを実行するには、JupyterLab を開いて新しいターミナルを作成します。
Docker サービスを再起動する
Docker サービスを再起動するには、ユーザー管理のノートブックのページから VM を停止して起動します。あるいは、SSH でユーザー管理ノートブック インスタンスに接続して、次のように入力します。
sudo service docker restart
Inverting Proxy エージェントを再起動する
Inverting Proxy エージェントを再起動するには、ユーザー管理のノートブックのページから VM を停止して起動します。あるいは、SSH でユーザー管理ノートブック インスタンスに接続して、次のように入力します。
sudo docker restart proxy-agent
Jupyter サービスを再起動する
Jupyter サービスを再起動するには、ユーザー管理のノートブックのページから VM を停止して起動します。あるいは、SSH でユーザー管理ノートブック インスタンスに接続して、次のように入力します。
sudo service jupyter restart
Notebooks Collection Agent を再起動する
Notebooks Collection Agent サービスは、Vertex AI Workbench インスタンスのコアサービスのステータスを確認する Python プロセスをバックグラウンドで実行します。
Notebooks Collection Agent サービスを再起動するには、Google Cloud コンソールから VM を停止して起動します。あるいは、SSH を使用して Vertex AI Workbench インスタンスに接続し、次のように入力します。
sudo systemctl stop notebooks-collection-agent.service
続けて次のように入力します。
sudo systemctl start notebooks-collection-agent.service
Vertex AI Workbench インスタンスでこれらのコマンドを実行するには、JupyterLab を開いて新しいターミナルを作成します。
Notebooks Collection Agent スクリプトを変更する
スクリプトにアクセスして編集するには、インスタンスでターミナルを開くか、SSH を使用して Vertex AI Workbench インスタンスに接続し、次のように入力します。
nano /opt/deeplearning/bin/notebooks_collection_agent.py
ファイルを編集したら、必ず保存してください。
次に、Notebooks Collection Agent サービスを再起動する必要があります。
インスタンスが必要な DNS ドメインを解決できることを確認する
インスタンスが必要な DNS ドメインを解決できることを確認するには、SSH を使用してユーザー管理ノートブック インスタンスに接続して、次のように入力します。
host notebooks.googleapis.com
host *.notebooks.cloud.google.com
host *.notebooks.googleusercontent.com
host *.kernels.googleusercontent.com
または
curl --silent --output /dev/null "https://notebooks.cloud.google.com"; echo $?
インスタンスで Dataproc が有効になっている場合は、次のコマンドを実行して、インスタンスが *.kernels.googleusercontent.com
を解決することを確認できます。
curl --verbose -H "Authorization: Bearer $(gcloud auth print-access-token)" https://${PROJECT_NUMBER}-dot-${REGION}.kernels.googleusercontent.com/api/kernelspecs | jq .
Vertex AI Workbench インスタンスでこれらのコマンドを実行するには、JupyterLab を開いて新しいターミナルを作成します。
インスタンスのユーザーデータのコピーを作成する
インスタンスのユーザーデータを Cloud Storage にコピーするには、次の手順を完了します。
Cloud Storage バケットを作成する(省略可)
インスタンスが配置されているプロジェクトと同じプロジェクトに、ユーザーデータを保存する Cloud Storage バケットを作成します。すでに Cloud Storage バケットがある場合は、この手順をスキップします。
-
Create a Cloud Storage bucket:
Replacegcloud storage buckets create gs://BUCKET_NAME
BUCKET_NAME
with a bucket name that meets the bucket naming requirements.ユーザーデータをコピーする
インスタンスの JupyterLab インターフェースで、[File] > [New] > [Terminal] を選択して、ターミナル ウィンドウを開きます。ユーザー管理ノートブック インスタンスの場合は、代わりに SSH を使用してインスタンスのターミナルに接続できます。
gcloud CLI を使用して、Cloud Storage バケットにユーザーデータをコピーします。次のコマンドの例では、インスタンスの
/home/jupyter/
ディレクトリから Cloud Storage バケット内のディレクトリにすべてのファイルをコピーします。gcloud storage cp /home/jupyter/* gs://BUCKET_NAMEPATH --recursive
次のように置き換えます。
BUCKET_NAME
: Cloud Storage バケットの名前。PATH
: ファイルをコピーするディレクトリのパス(例:/copy/jupyter/
)
gcpdiag を使用して、プロビジョニングから進まなくなっているインスタンスを調べる
gcpdiag
はオープンソース ツールです。正式にサポートされている Google Cloud プロダクトではありません。gcpdiag
ツールを使用すると、 Google Cloudプロジェクトの問題を特定して修正できます。詳細については、GitHub の gcpdiag プロジェクトをご覧ください。このgcpdiag
ランブックでは、Vertex AI Workbench インスタンスがプロビジョニングのステータスから先に進まなくなる原因を調査します。次の点を調べます。- ステータス: インスタンスの現在のステータスを確認し、プロビジョニングの状態で止まっていて、停止やアクティブの状態ではないことを確認します。
- インスタンスの Compute Engine VM ブートディスク イメージ: カスタム コンテナ、公式の
workbench-instances
イメージ、Deep Learning VM イメージ、プロビジョニング ステータスから進まなくなる原因となるサポート対象外のイメージのどれを使用してインスタンスが作成されたかを確認します。 - カスタム スクリプト: インスタンスで、デフォルトの Jupyter ポートを変更するか、依存関係を壊すカスタムの起動スクリプトまたは起動後のスクリプトが使用されているかどうか確認します。これらは、インスタンスがプロビジョニングのステータスから進まなくなる原因になり得ます。
- 環境バージョン: アップグレードの可否を確認して、インスタンスで最新の環境バージョンが使用されているかどうか確認します。バージョンが古いと、インスタンスがプロビジョニング ステータスから進まなくなる可能性があります。
- インスタンスの Compute Engine VM のパフォーマンス: VM の現在のパフォーマンスをチェックし、正常なオペレーションの妨げとなる高い CPU 使用率、メモリ不足、ディスク容量の問題によってパフォーマンスが低下していないことを確認します。
- インスタンスの Compute Engine シリアルポートまたはシステム ロギング: インスタンスにシリアルポートのログがあるかどうか確認します。このログを分析して、Jupyter がポート
127.0.0.1:8080
で実行されていることを確認します。 - インスタンスの Compute Engine SSH とターミナルへのアクセス: インスタンスの Compute Engine VM が実行されているかどうか確認します。実行されていれば、ユーザーは SSH を使用してターミナルを開き、「home/jupyter」の容量の使用率が 85% 未満であることを確認できます。空き容量が残っていないと、インスタンスがプロビジョニングのステータスから進まなくなる可能性があります。
- 外部 IP がオフになっている: 外部 IP アクセスがオフになっているかどうかを確認します。ネットワーク構成が正しくないと、インスタンスがプロビジョニング ステータスから進まなくなる可能性があります。
Docker
Docker コンテナで
gcpdiag
を起動するラッパーを使用してgcpdiag
を実行できます。Docker または Podman がインストールされている必要があります。- ローカル ワークステーションで次のコマンドをコピーして実行します。
curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
-
gcpdiag
コマンドを実行します。./gcpdiag runbook vertex/workbench-instance-stuck-in-provisioning \ --parameter project_id=PROJECT_ID \ --parameter instance_name=INSTANCE_NAME \ --parameter zone=ZONE
このランブックで使用可能なパラメータを表示します。
次のように置き換えます。
- PROJECT_ID: リソースを含むプロジェクトの ID。
- INSTANCE_NAME: プロジェクト内のターゲット Vertex AI Workbench インスタンスの名前。
- ZONE: ターゲット Vertex AI Workbench インスタンスが配置されているゾーン。
有用なフラグ:
--universe-domain
: 該当する場合、リソースをホストする信頼できるパートナーのソブリン クラウド ドメイン--parameter
または-p
: ランブック パラメータ
gcpdiag
ツールのフラグの一覧と説明については、gcpdiag
の使用手順をご覧ください。Vertex AI でサービス アカウントのロールを使用する際の権限エラー
問題
Vertex AI でサービス アカウント ロールを使用すると、一般的な権限エラーが発生します。
これらのエラーは、Cloud Logging のプロダクト コンポーネント ログまたは監査ログに表示されることがあります。影響を受けるプロジェクトの任意の組み合わせで表示されることもあります。
これらの問題は、次のいずれかまたは両方が原因で発生する可能性があります。
Service Account User
ロールを使用すべきときにService Account Token Creator
ロールを使用した場合、またはその逆の場合。これらのロールはサービス アカウントに異なる権限を付与するため、相互に置き換えることはできません。Service Account Token Creator
ロールとService Account User
ロールの違いについては、サービス アカウントのロールをご覧ください。複数のプロジェクトにまたがってサービス アカウントに権限が付与されています。これはデフォルトでは許可されていません。
ソリューション
この問題を解決するには、次の対処方法をいくつか試してください。
Service Account Token Creator
ロールまたはService Account User
ロールが必要かどうかを判断します。詳細については、使用している Vertex AI サービスの IAM ドキュメントと、使用している他のプロダクト インテグレーションをご覧ください。複数のプロジェクトにサービス アカウントの権限を付与している場合は、
iam.disableCrossProjectServiceAccountUsage
が強制適用されていないことを確認して、プロジェクトにまたがってサービス アカウントを関連付けられるようにします。iam.disableCrossProjectServiceAccountUsage
が強制適用されていないことを確認するには、次のコマンドを実行します。gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage \ --project=PROJECT_ID