本页面介绍了在遇到 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
:您的项目 IDZONE
:实例所在的 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:
Replacegcloud storage buckets create gs://BUCKET_NAME
BUCKET_NAME
with a bucket name that meets the bucket naming requirements.复制用户数据
在实例的 JupyterLab 界面中,选择文件 > 新建 > 终端,以打开终端窗口。对于用户管理的笔记本实例,您可以使用 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 虚拟机启动磁盘映像:检查实例是否是使用自定义容器、官方
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 访问权限。网络配置不正确可能会导致实例卡在预配状态。
Docker
您可以使用封装容器运行
gcpdiag
,以在 Docker 容器中启动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
查看此 Runbook 的可用参数。
替换以下内容:
- PROJECT_ID:资源所在项目的 ID。
- INSTANCE_NAME:项目中目标 Vertex AI Workbench 实例的名称。
- ZONE:目标 Vertex AI Workbench 实例所在的可用区。
实用标志:
--universe-domain
:如果适用,则为托管资源的可信合作伙伴主权云网域--parameter
或-p
:Runbook 参数
如需查看所有
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