排查 Vertex AI Workbench 问题

本页面介绍了在遇到 Vertex AI Workbench 使用问题时可能有帮助的问题排查步骤。

如需使用 Vertex AI 其他组件的帮助,另请参阅排查 Vertex AI 问题

若要过滤此页面的内容,请点击一个主题:

实用流程

本部分介绍了一些可能对您有帮助的流程。

使用 SSH 连接到用户管理的笔记本实例

通过在 Cloud Shell 中或安装了 Google Cloud CLI 的任何环境中输入以下命令,使用 ssh 连接到您的实例。

gcloud compute ssh --project PROJECT_ID \
  --zone ZONE \
  INSTANCE_NAME -- -L 8080:localhost:8080

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • ZONE:实例所在的 Google Cloud 可用区。
  • INSTANCE_NAME:实例的名称。

您还可以打开实例的 Compute Engine 详情页面,然后点击 SSH 按钮,以连接到您的实例。

向“反向代理”服务器重新注册

如需向内部反向代理服务器重新注册用户管理的笔记本实例,您可以从用户管理的笔记本页面停止和启动虚拟机,或者通过 SSH 连接到用户管理的笔记本实例,然后输入:

cd /opt/deeplearning/bin
sudo ./attempt-register-vm-on-proxy.sh

验证 Docker 服务状态

如需验证 Docker 服务状态,您可以使用 ssh 连接到由用户管理的笔记本实例,然后输入:

sudo service docker status

验证“反向代理”代理正在运行

如需验证笔记本“反向代理”代理是否正在运行,请通过 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 Internal API 是否处于活跃状态

Jupyter API 应始终在端口 8080 上运行。您可以通过检查实例的 syslog 是否包含类似以下内容的条目来验证这一点:

Jupyter Server ... running at:
http://localhost:8080

如需验证 Jupyter Internal 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 服务,您可以从用户管理的笔记本页面停止并启动虚拟机,或者通过 SSH 连接到用户管理的笔记本实例,然后输入以下命令:

sudo service docker restart

重启“反向代理”代理

如需重启“反向代理”代理,您可以从用户管理的笔记本页面停止和启动虚拟机,或者通过 SSH 连接到用户管理的笔记本实例,然后输入:

sudo docker restart proxy-agent

重启 Jupyter 服务

如需重启 Jupyter 服务,您可以从用户管理的笔记本页面停止并启动虚拟机,或者通过 SSH 连接到用户管理的笔记本实例,然后输入以下命令:

sudo service jupyter restart

重启 Notebooks Collection Agent

Notebooks Collection Agent 服务在后台运行 Python 进程,以验证 Vertex AI Workbench 实例的核心服务的状态。

如需重启 Notebooks Collection Agent 服务,您可以从 Google Cloud 控制台停止和启动虚拟机,或者通过 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:
    gcloud storage buckets create gs://BUCKET_NAME
    Replace BUCKET_NAME with a bucket name that meets the bucket naming requirements.

复制用户数据

  1. 在实例的 JupyterLab 界面中,选择文件 > 新建 > 终端,以打开终端窗口。对于用户管理的笔记本实例,您可以使用 SSH 连接到实例的终端。

  2. 使用 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 虚拟机启动磁盘映像:检查实例是否是使用自定义容器、官方 workbench-instances 映像、Deep Learning VM Image 或可能导致实例卡在配置状态的不受支持的映像创建的。
  • 自定义脚本:检查实例是否正在使用自定义启动或启动后脚本,这些脚本会更改默认的 Jupyter 端口或破坏依赖关系,从而可能导致实例卡在配置状态。
  • 环境版本:通过检查实例的可升级性来检查其是否使用最新的环境版本。较低版本可能会导致实例卡在预配状态。
  • 实例的 Compute Engine 虚拟机性能:检查虚拟机的当前性能,确保其不会因 CPU 使用率过高、内存不足或可能中断正常操作的磁盘空间问题而受到影响。
  • 实例的 Compute Engine 串行端口或系统日志记录:检查实例是否有串行端口日志,并分析这些日志以确保 Jupyter 在端口 127.0.0.1:8080 上运行。
  • 实例的 Compute Engine SSH 和终端访问权限:检查实例的 Compute Engine 虚拟机是否正在运行,以便用户可以通过 SSH 并打开终端来验证“home/jupyter”中的空间使用率是否低于 85%。如果没有剩余空间,可能会导致实例卡在预配状态。
  • 外部 IP 已关闭:检查是否已关闭外部 IP 访问权限。网络配置不正确可能会导致实例卡在预配状态。

Google Cloud 控制台

  1. 完成然后复制以下命令。
  2. gcpdiag runbook vertex/workbench-instance-stuck-in-provisioning \
        --project=PROJECT_ID \
        --parameter instance_name=INSTANCE_NAME \
        --parameter zone=ZONE
  3. 打开 Google Cloud 控制台并激活 Cloud Shell。
  4. 打开 Cloud 控制台
  5. 粘贴复制的命令。
  6. 运行 gcpdiag 命令以下载 gcpdiag Docker 映像,然后执行诊断检查。如果适用,请按照输出说明修复失败的检查。

Docker

您可以使用封装容器运行 gcpdiag,以在 Docker 容器中启动 gcpdiag。必须安装 Docker 或 Podman

  1. 在本地工作站上复制并运行以下命令。
    curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
  2. 执行 gcpdiag 命令:
    ./gcpdiag runbook vertex/workbench-instance-stuck-in-provisioning \
        --project=PROJECT_ID \
        --parameter instance_name=INSTANCE_NAME \
        --parameter zone=ZONE

查看此 Runbook 的可用参数

替换以下内容:

  • PROJECT_ID:资源所在项目的 ID
  • INSTANCE_NAME:项目中目标 Vertex AI Workbench 实例的名称。
  • ZONE:目标 Vertex AI Workbench 实例所在的可用区。

实用标志:

  • --projectPROJECT_ID
  • --universe-domain:如果适用,则为托管资源的可信合作伙伴主权云网域
  • --parameter-p:Runbook 参数

如需查看所有 gcpdiag 工具标志的列表和说明,请参阅 gcpdiag 使用说明