排查 Vertex AI Workbench 问题

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

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

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

Vertex AI Workbench 实例

本部分介绍 Vertex AI Workbench 实例的问题排查步骤。

连接到 JupyterLab 并将其打开

本部分介绍连接和打开 JupyterLab 的问题排查步骤。

点击“打开 JupyterLab”后没有任何反应

问题

点击打开 JupyterLab 时,没有任何反应。

解决方案

确认您的浏览器未阻止自动打开新标签页。 JupyterLab 会在新的浏览器标签页中打开。

无法在 Vertex AI Workbench 实例中访问终端

问题

如果您无法访问终端或在启动器中找不到终端窗口,则可能是因为 Vertex AI Workbench 实例未启用终端访问权限。

解决方案

您必须创建新的 Vertex AI Workbench 实例并启用终端访问权限选项。实例创建完成后,此选项便无法更改。

打开 JupyterLab 时出现 502 错误

问题

502 错误可能意味着您的 Vertex AI Workbench 实例尚未准备就绪。

解决方案

请等待几分钟,刷新 Google Cloud 控制台浏览器标签页,然后重试。

笔记本无响应

问题

您的 Vertex AI Workbench 实例未在运行单元或似乎被冻结。

解决方案

首先尝试重启内核,方法是点击顶部菜单中的内核,然后点击重启内核。如果这样不起作用,您可以尝试以下操作:

  • 刷新 JupyterLab 浏览器页面。系统不会保存未保存的单元输出,因此您必须再次运行这些单元才能重新生成输出。
  • 重置实例

无法使用 SSH 连接到 Vertex AI Workbench 实例

问题

您无法通过终端窗口使用 SSH 连接到您的实例。

Vertex AI Workbench 实例使用 OS Login 启用 SSH 访问权限。创建实例时,Vertex AI Workbench 在默认情况下通过将元数据键 enable-oslogin 设置为 TRUE 来启用 OS Login。如果您无法使用 SSH 连接到您的实例,则可能需要将此元数据键设置为 TRUE

解决方案

不支持使用 Google Cloud 控制台连接到 Vertex AI Workbench 实例。如果您无法通过终端窗口使用 SSH 连接到您的实例,请参阅以下内容:

要将元数据键 enable-oslogin 设置为 TRUE,请使用 Notebooks API 中的 projects.locations.instances.patch 方法或 Google Cloud SDK 中的 gcloud workbench instances update 命令。

超出 GPU 配额

问题

您无法使用 GPU 创建 Vertex AI Workbench 实例。

解决方案

如需确定您项目的可用 GPU 数量,请查看配额页面。如果配额页面上未列出 GPU,或者您需要额外的 GPU 配额,您可以申请增加配额。请参阅申请更高配额限制

创建 Vertex AI Workbench 实例

本部分介绍如何排查与创建 Vertex AI Workbench 实例相关的问题。

实例无限期处于待处理状态或卡在预配状态

问题

创建 Vertex AI Workbench 实例后,该实例会无限期地处于待处理状态。串行日志中可能会显示如下错误:

Could not resolve host: notebooks.googleapis.com

如果您的实例卡在预配状态,可能是因为您的实例具有无效的专用网络配置。

解决方案

请按照实例日志显示连接错误或超时错误部分中的步骤操作。

无法在共享 VPC 网络中创建实例

问题

尝试在共享 VPC 网络中创建实例会导致如下错误消息:

Required 'compute.subnetworks.use' permission for
'projects/network-administration/regions/us-central1/subnetworks/v'

解决方案

问题在于,Notebooks 服务账号在没有正确权限的情况下尝试创建实例。

为确保 Notebooks Service Account 拥有在共享 VPC 网络中创建 Vertex AI Workbench 实例所需的权限,请让您的管理员为 Notebooks Service Account 授予主机项目的 Compute Network User (roles/compute.networkUser) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含确保 Notebooks Service Account 可以在共享 VPC 网络中创建 Vertex AI Workbench 实例所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需确保 Notebooks Service Account 可以在共享 VPC 网络中创建 Vertex AI Workbench 实例,需要以下权限:

  • 使用子网的权限: compute.subnetworks.use

您的管理员也可以使用自定义角色或其他预定义角色为 Notebooks Service Account 授予这些权限。

无法使用自定义容器创建 Vertex AI Workbench 实例

问题

在 Google Cloud 控制台中创建 Vertex AI Workbench 实例时,无法选择使用自定义容器。

解决方案

不支持将自定义容器添加到 Vertex AI Workbench 实例,并且您无法使用 Google Cloud 控制台添加自定义容器。

建议添加 conda 环境,而不是使用自定义容器。

您可以使用 Notebooks API 将自定义容器添加到 Vertex AI Workbench 实例,但此功能不受支持。

未显示“装载共享存储空间”按钮

问题

装载共享存储空间按钮不在 JupyterLab 界面的文件浏览器标签页中。

解决方案

如需让装载共享存储空间按钮显示在 Vertex AI Workbench 实例的 JupyterLab 界面中,您必须拥有 storage.buckets.list 权限。请让您的管理员为 Vertex AI Workbench 实例的服务账号授予项目的 storage.buckets.list 权限。

使用 Dataproc 时出现 599 错误

问题

尝试创建启用了 Dataproc 的实例会导致如下错误消息:

HTTP 599: Unknown (Error from Gateway: [Timeout while connecting]
Exception while attempting to connect to Gateway server url.
Ensure gateway url is valid and the Gateway instance is running.)

解决方案

在 Cloud DNS 配置中,为 *.googleusercontent.com 网域添加 Cloud DNS 条目。

无法安装第三方 JupyterLab 扩展程序

问题

尝试安装第三方 JupyterLab 扩展程序会导致 Error: 500 消息。

解决方案

Vertex AI Workbench 实例不支持第三方 JupyterLab 扩展程序。

无法修改底层虚拟机

问题

如果尝试修改 Vertex AI Workbench 实例的底层虚拟机,可能会收到如下所示的错误消息:

Current principal doesn't have permission to mutate this resource.

解决方案

发生此错误是因为您无法使用 Google Cloud 控制台或 Compute Engine API 修改实例的底层虚拟机。

如需修改 Vertex AI Workbench 实例的底层虚拟机,请使用 Notebooks API 中的 projects.locations.instances.patch 方法或 Google Cloud SDK 中的 gcloud workbench instances update命令

添加 conda 环境后,pip 软件包不可用

问题

添加基于 conda 的内核后,pip 软件包将不可用。

解决方案

如需解决此问题,请参阅添加 conda 环境并尝试以下操作:

  • 检查您使用的是否是 DL_ANACONDA_ENV_HOME 变量,且该变量包含您的环境名称。

  • 检查 pip 是否位于类似于 opt/conda/envs/ENVIRONMENT/bin/pip 的路径中。您可以运行 which pip 命令来获取路径。

无法访问或复制具有单个用户访问权限的实例的数据

问题

无法访问具有单个用户访问权限的实例上的数据。

对于设置了单个用户访问权限的 Vertex AI Workbench 实例,只有指定的单个用户(所有者)可以访问实例上的数据。

解决方案

如需访问或复制您不是所有者的实例上的数据,请创建支持请求。

意外关停

问题

您的 Vertex AI Workbench 实例意外关停。

解决方案

如果您的实例意外关停,这可能是因为空闲关停已启动。

如果您启用了空闲关停,那么您的实例在指定时间段内没有内核活动时将关停。例如,运行单元或将新输出显示到笔记本是重置空闲超时计时器的活动。CPU 使用率不会重置空闲超时计时器。

实例日志显示连接或超时错误

问题

您的 Vertex AI Workbench 实例的日志显示连接或超时错误。

解决方案

如果您在实例日志中发现连接或超时错误,请确保 Jupyter 服务器在端口 8080 上运行。按照验证 Jupyter Internal API 是否处于活跃状态部分中的步骤操作。

如果您已停用 External IP 且使用的是专用 VPC 网络,请确保您也遵循了网络配置选项文档。请考虑以下事项:

实例日志显示“无法联系 Jupyter API”“ReadTimeoutError”

问题

您的 Vertex AI Workbench 实例日志显示以下错误:

notebooks_collection_agent. Unable to contact Jupyter API:
HTTPConnectionPool(host=\'127.0.0.1\', port=8080):
Max retries exceeded ReadTimeoutError(\"HTTPConnectionPool(host=\'127.0.0.1\', port=8080

解决方案

请按照实例日志显示连接错误或超时错误部分中的步骤操作。您还可以尝试修改 Notebooks Collection Agent 脚本,将 HTTP_TIMEOUT_SESSION 更改为更大的值(例如 60),以帮助验证请求是否因调用响应时间过长或无法访问请求的网址而失败。

代管式笔记本

本部分介绍代管式笔记本的问题排查步骤。

连接到 JupyterLab 并将其打开

本部分介绍如何排查 JupyterLab 的连接和打开问题。

点击“打开 JupyterLab”后没有任何反应

问题

点击打开 JupyterLab 时,没有任何反应。

解决方案

确认您的浏览器未阻止自动打开新标签页。 JupyterLab 会在新的浏览器标签页中打开。

无法使用 SSH 连接到代管式笔记本实例

问题

您无法选择使用 SSH 与代管式笔记本实例进行连接。

解决方案

不支持通过 SSH 访问代管式笔记本实例。

无法访问代管式笔记本实例中的终端

问题

如果您无法访问终端或在启动器中找不到终端窗口,则可能是因为代管式笔记本实例未启用终端访问权限。

解决方案

您必须创建新的代管式笔记本实例,并启用终端访问权限选项。实例创建完成后,此选项便无法更改。

打开 JupyterLab 时出现 502 错误

问题

502 错误可能意味着代管式笔记本实例尚未准备就绪。

解决方案

请等待几分钟,刷新 Google Cloud 控制台浏览器标签页,然后重试。

打开笔记本会发生 524 (A Timeout Occurred) 错误

问题

524 错误通常表示“反向代理”代理未连接到反向代理服务器,或后端服务器端 (Jupyter) 上处理请求耗时过长。此错误的常见原因包括网络问题、“反向代理”代理未运行或 Jupyter 服务未运行。

解决方案

验证代管式笔记本实例是否已启动。

笔记本无响应

问题

代管式笔记本实例未在运行单元或似乎被冻结。

解决方案

首先尝试重启内核,方法是点击顶部菜单中的内核,然后点击重启内核。如果这样不起作用,您可以尝试以下操作:

  • 刷新 JupyterLab 浏览器页面。系统不会保存未保存的单元输出,因此您必须再次运行这些单元才能重新生成输出。
  • 重置实例

迁移到 Vertex AI Workbench 实例

本部分介绍从代管式笔记本实例迁移到 Vertex AI Workbench 实例时遇到的问题的诊断和解决方法。

找不到代管式笔记本实例中的内核

问题

代管式笔记本实例中的内核未出现在您迁移到的 Vertex AI Workbench 实例中。

自定义容器在代管式笔记本中显示为内核。Vertex AI Workbench 迁移工具不支持自定义容器迁移。

解决方案

如需解决此问题,请向 Vertex AI Workbench 实例添加 conda 环境

迁移的实例中的框架版本不同

问题

代管式笔记本实例中的框架的版本与您迁移到的 Vertex AI Workbench 实例中的框架不同。

Vertex AI Workbench 实例提供一组默认的框架版本。迁移工具不会添加原始托管式笔记本实例中的框架版本。请参阅默认迁移工具行为

解决方案

如需添加特定版本的框架,请向 Vertex AI Workbench 实例添加 conda 环境

GPU 未迁移到新的 Vertex AI Workbench 实例

问题

代管式笔记本实例中的 GPU 不在您迁移到的 Vertex AI Workbench 实例中。

Vertex AI Workbench 实例支持一组默认的 GPU。如果原始代管式笔记本实例中的 GPU 不可用,则系统会在没有任何 GPU 的情况下迁移实例。

解决方案

迁移后,您可以使用 Notebooks API 中的 projects.locations.instances.patch 方法或 Google Cloud SDK 中的 gcloud workbench instances update 命令将 GPU 添加到 Vertex AI Workbench 实例。

迁移的实例的机器类型不同

问题

代管式笔记本实例的机器类型与您迁移到的 Vertex AI Workbench 实例不同。

Vertex AI Workbench 实例并不支持所有机器类型。如果原始代管式笔记本实例中的机器类型不可用,则实例会迁移到 e2-standard-4 机器类型。

解决方案

迁移后,您可以使用 Notebooks API 中的 projects.locations.instances.patch 方法或 Google Cloud SDK 中的 gcloud workbench instances update 命令更改 Vertex AI Workbench 实例的机器类型。

超出 GPU 配额

问题

您无法创建具有 GPU 的代管式笔记本实例。

解决方案

如需确定您项目的可用 GPU 数量,请查看配额页面。如果配额页面上未列出 GPU,或者您需要额外的 GPU 配额,您可以申请增加配额。请参阅申请更高配额限制

使用容器映像

本部分介绍了如何排查使用容器映像时遇到的问题。

容器映像在 JupyterLab 中未显示为内核

问题

没有有效内核规范的容器映像无法成功在 JupyterLab 中加载为内核。

解决方案

确保您的容器符合我们的要求。如需了解详情,请参阅自定义容器要求

笔记本在长时间运行的作业上断开连接

问题

如果您在笔记本中运行作业时看到以下错误消息,则可能是因为请求加载时间过长,或者 CPU 或内存利用率过高,这可能会导致 Jupyter 服务无响应。

{"log":"2021/06/29 18:10:33 failure fetching a VM ID: compute: Received 500
`internal error`\n","stream":"stderr","time":"2021-06-29T18:10:33.383650241Z"}
{"log":"2021/06/29 18:38:26 Websocket failure: failed to read a websocket
message from the server: read tcp [::1]:40168-\u003e[::1]:8080: use of closed
network connection\n","stream":"stderr","time":"2021-06-29T18:38:26.057622824Z"}

解决方案

此问题是由在笔记本中运行长时间运行的作业引起的。如需运行可能需要很长时间才能完成的作业,建议使用执行程序

使用执行程序

本部分介绍了使用执行器时的问题排查方法。

执行程序无法使用软件包安装

问题

执行程序在与运行笔记本文件代码的内核不同的环境中运行笔记本代码。因此,安装的某些软件包可能无法在执行程序的环境中使用。

解决方案

如需解决此问题,请参阅确保软件包安装可供执行程序使用

使用执行程序运行笔记本代码时出现 401 或 403 错误

问题

如果运行执行程序时出现 401 或 403 错误,可能意味着执行程序无法访问资源。

解决方案

请参阅以下可能原因:

  • 执行程序在与代管式笔记本实例的项目不同的租户项目中运行笔记本代码。因此,当您通过执行程序运行的代码访问资源时,默认情况下,执行程序可能无法连接到正确的 Google Cloud 项目。如需解决此问题,请明确选择项目

  • 默认情况下,代管式笔记本实例可以访问同一项目中存在的资源,因此当您手动运行笔记本文件的代码时,这些资源不需要额外的身份验证。但是,由于执行程序在单独的租户项目中运行,因此它不会具有相同的默认访问权限。如需解决此问题,请使用服务账号对访问权限进行身份验证

  • 执行程序无法使用最终用户凭据对资源的访问权限进行身份验证,例如 gcloud auth login 命令。如需解决此问题,请使用服务账号对访问权限进行身份验证

使用执行程序时发生 exited with a non-zero status of 127 错误

问题

如果您使用执行程序在未安装 nbexecutor 扩展程序的自定义容器上运行代码,则可能会发生 exited with a non-zero status of 127 错误或“找不到命令”错误。

解决方案

如需确保自定义容器具有 nbexecutor 扩展程序,您可以通过 Deep Learning Containers 映像创建派生容器映像。Deep Learning Containers 映像包含 nbexecutor 扩展程序。

服务网络配置无效错误消息

问题

此错误可能如下所示:

Invalid Service Networking configuration. Couldn't find free blocks in allocated IP ranges.
Please use a valid range using: /24 mask or below (/23,/22, etc).

这意味着在网络的分配 IP 地址范围内找不到任何可用块。

解决方案

使用 /24 或更小的子网掩码。创建更大的分配 IP 地址范围,并通过修改 servicenetworking-googleapis-com 的专用服务连接来附加此范围。

如需了解详情,请参阅设置网络

无法安装第三方 JupyterLab 扩展程序

问题

尝试安装第三方 JupyterLab 扩展程序会导致 Error: 500 消息。

解决方案

托管式笔记本实例不支持第三方 JupyterLab 扩展程序。

无法访问或复制具有单个用户访问权限的实例的数据

问题

无法访问具有单个用户访问权限的实例上的数据。

解决方案

对于设置了单个用户访问权限的代管式笔记本实例,只有指定的单个用户(所有者)可以访问实例上的数据。

如需访问或复制您不是所有者的实例上的数据,请创建支持请求。

意外关停

问题

您的 Vertex AI Workbench 实例意外关停。

解决方案

如果您的实例意外关停,这可能是因为空闲关停已启动。

如果您启用了空闲关停,那么您的实例在指定时间段内没有内核活动时将关停。例如,运行单元或将新输出显示到笔记本是重置空闲超时计时器的活动。CPU 使用率不会重置空闲超时计时器。

恢复实例

问题

不支持在删除托管式笔记本实例后恢复该实例。

解决方案

如需备份实例上的数据,您可以将笔记本保存到 GitHub

从实例恢复数据

问题

不支持在删除托管式笔记本实例后从该实例恢复数据。

解决方案

如需备份实例上的数据,您可以将笔记本保存到 GitHub

创建托管式笔记本实例

本部分介绍了如何排查创建代管式笔记本实例存在的问题。

错误:创建连接时出现问题

问题

您在创建实例时遇到以下错误:

We encountered a problem while creating a connection.

Service 'servicenetworking.googleapis.com' requires at least
one allocated range to have minimal size; please make sure
at least one allocated range will have prefix length at most '24'.

解决方案

创建大于 /24 的分配 IP 地址范围,并通过修改 servicenetworking-googleapis-com 连接的专用服务连接来附加此范围。

创建实例会导致资源可用性错误

问题

由于资源可用性错误,您无法创建实例。

此错误可能如下所示:

Creating notebook INSTANCE_NAME: ZONE does not have
enough resources available to fulfill the request.
Retry later or try another zone in your configurations.

由于 Compute Engine 资源(如 GPU 或 CPU)当前不可用,当您在无法满足您的请求的可用区中请求新资源时,就会发生资源错误。

资源错误仅适用于该可用区中的新资源请求,而不会影响现有资源。资源错误与 Compute Engine 配额无关。资源错误是暂时性的,可能会根据需求的转变而经常变化。

解决方案

如需继续,请尝试以下操作:

  • 创建具有其他机器类型的实例。
  • 在其他可用区中创建实例。
  • 稍后重试请求。
  • 减少您请求的资源量。例如,尝试创建 GPU、磁盘、vCPU 或内存较少的实例。

启动实例会导致资源可用性错误

问题

由于资源可用性错误,您无法启动实例。

此错误可能如下所示:

The zone ZONE_NAME doesn't have enough resources available to fulfill
the request. '(resource type:compute)'.

由于 Compute Engine 资源(如 GPU 或 CPU)当前不可用,当您尝试在无法满足您的请求的可用区中启动实例时,就会发生资源错误。

资源错误仅适用于您在发送请求时在请求中指定的资源,不适用于该可用区中的所有资源。资源错误与 Compute Engine 配额无关。资源错误是暂时性的,可能会根据需求的转变而经常变化。

解决方案

如需继续,请尝试以下操作:

  • 更改实例的机器类型。
  • 将您的文件和数据迁移到其他区域的实例。
  • 稍后重试请求。
  • 减少您请求的资源量。例如,启动具有较少 GPU、磁盘、vCPU 或内存的其他实例。

来自托管式笔记本的出站连接的 No route to host

问题

通常,您在 Google Cloud 控制台中只能看到自己的 VPC 已知路由以及在完成 VPC 网络对等互连配置时预留的范围。

托管式笔记本实例位于 Google 管理的网络中,并在实例内的 Docker 网络命名空间中运行经过修改的 Jupyter 版本。

此实例上的 Docker 网络接口和 Linux 网桥可能会选择与 VPC 通过对等互连导出的 IP 地址范围冲突的本地 IP。这些值通常分别在 172.16.0.0/161192.168.10.0/24 范围内。

在这些情况下,即使 VPC 路由已正确共享,从实例到这些范围的出站连接也会失败,并会收到 No route to host 的某种变体形式的投诉。

解决方案

在终端会话中调用 ifconfig,并确保实例中任何虚拟接口上的 IP 地址都不会与 VPC 向对等连接导出的 IP 地址范围冲突。

用户管理的笔记本

本部分介绍用户管理的笔记本的问题排查步骤。

连接到 JupyterLab 并将其打开

本部分介绍如何排查 JupyterLab 的连接和打开问题。

点击“打开 JupyterLab”后没有任何反应

问题

点击打开 JupyterLab 时,没有任何反应。

解决方案

确认您的浏览器未阻止自动打开新标签页。 JupyterLab 会在新的浏览器标签页中打开。

无法通过反向代理服务器来访问 JupyterLab

问题

您无法访问 JupyterLab。

Vertex AI Workbench 可使用 Google 内部反向代理服务器来提供对 JupyterLab 的访问权限。用户管理的笔记本实例设置、网络配置及其他因素可能会阻止对 JupyterLab 的访问。

解决方案

使用 SSH 连接到 JupyterLab 并详细了解您为何无法通过反向代理进行访问

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

问题

您无法通过终端窗口使用 SSH 连接到您的实例。

用户管理的笔记本实例使用 OS Login 启用 SSH 访问权限。创建实例时,Vertex AI Workbench 在默认情况下通过将元数据键 enable-oslogin 设置为 TRUE 来启用 OS Login。如果您无法使用 SSH 连接到您的实例,则可能需要将此元数据键设置为 TRUE

解决方案

如需为用户启用用户管理的笔记本的 SSH 访问权限,请完成为用户账号配置 OS Login 角色的步骤

打开用户管理的笔记本实例会导致 403 (Forbidden) 错误

问题

打开用户管理的笔记本实例时,403 (Forbidden) 错误通常意味着存在访问权限问题。

解决方案

如需排查访问权限问题,请考虑可以向用户管理的笔记本实例授予访问权限的三种方式:

  • 单个用户
  • 服务账号
  • 项目编辑者

访问模式是在用户管理的笔记本实例的创建期间配置的,并且是在笔记本元数据中定义的:

  • 单个用户:proxy-mode=mail, proxy-user-mail=user@domain.com
  • 服务账号:proxy-mode=service_account
  • 项目编辑者:proxy-mode=project_editors

如果您在点击打开 JupyterLab 时无法访问笔记本,请尝试以下操作:

以下示例展示了如何在创建实例时指定服务账号:

gcloud notebooks instances create nb-1 \
  --vm-image-family=tf-latest-cpu \
  --metadata=proxy-mode=mail,proxy-user-mail=user@domain.com \
  --service-account=your_service_account@project_id.iam.gserviceaccount.com \
  --location=us-west1-a

点击打开 JupyterLab 以打开笔记本时,笔记本将在浏览器的新标签页中打开。如果您已登录多个 Google 账号,系统会使用您的默认 Google 账号打开新标签页。如果您未使用默认 Google 账号创建用户管理的笔记本实例,则浏览器的新标签页会显示 403 (Forbidden) 错误。

无 JupyterLab 访问权限,已启用单个用户模式

问题

您无法访问 JupyterLab。

解决方案

如果用户无法访问 JupyterLab 且实例对 JupyterLab 的访问权限设置为 Single user only,请尝试以下操作:

  1. Google Cloud 控制台的用户管理笔记本页面上,点击您的实例名称以打开笔记本详情页面。

  2. 查看虚拟机详情旁边,点击在 Compute Engine 中查看

  3. 在“虚拟机详情”页面上,点击修改

  4. 元数据部分中,验证 proxy-mode 元数据条目是否设置为 mail

  5. 验证 proxy-user-mail 元数据条目是否设置为有效的用户电子邮件地址,而不是服务账号。

  6. 点击保存

  7. Google Cloud 控制台的用户管理笔记本页面上,通过停止实例并再次启动实例来初始化更新后的元数据。

打开笔记本会发生 504 (Gateway Timeout)错误

问题

这表示内部代理超时或后端服务器 (Jupyter) 超时。以下情况可能导致上述问题:

  • 请求从未到达内部反向代理服务器
  • 后端 (Jupyter) 返回 504 错误。

解决方案

创建一个 Google 邮件支持记录。

打开笔记本会发生 524 (A Timeout Occurred) 错误

问题

内部反向代理服务器尚未在超时时限内收到“反向代理”代理返回的请求响应。“反向代理”代理在用户管理的笔记本实例中作为 Docker 容器运行。524 错误通常表示“反向代理”代理未连接到反向代理服务器,或后端服务器端 (Jupyter) 上处理请求耗时过长。导致此错误的常见原因在于用户端(例如,网络问题或“反向代理”代理服务未运行)。

解决方案

如果您无法访问笔记本,请验证用户管理的笔记本实例是否已启动并尝试以下操作:

方法 1:运行诊断工具以自动检查和修复用户管理的笔记本核心服务,验证可用存储空间,以及生成有用的日志文件。如需在实例中运行该工具,请执行以下步骤:

  1. 确保您的实例采用 M58 或更高版本。

  2. 使用 SSH 连接到 Deep Learning VM Image 实例

  3. 运行以下命令:

    sudo /opt/deeplearning/bin/diagnostic_tool.sh [--repair] [--bucket=$BUCKET]

    请注意,--repair 标志和 --bucket 标志是可选的。--repair 标志会尝试修复常见的核心服务错误,而 --bucket 标志可让您指定 Cloud Storage 存储桶来存储所创建的日志文件。

    此命令的输出将显示用户管理的笔记本核心服务的有用状态消息,并将导出其发现结果的日志文件。

方法 2:请按照以下步骤逐个检查特定用户管理的笔记本的要求。

打开笔记本会发生 598 (Network read timeout) 错误

问题

反向代理服务器在超过 10 分钟的时间里完全未收到“反向代理”代理返回的响应。这通常表明“反向代理”代理存在问题的几率极高。

解决方案

如果您无法访问笔记本,请尝试以下操作:

笔记本无响应

问题

您的用户管理的笔记本实例未在运行单元或似乎被冻结。

解决方案

首先尝试重启内核,方法是点击顶部菜单中的内核,然后点击重启内核。如果这样不起作用,您可以尝试以下操作:

  • 刷新 JupyterLab 浏览器页面。系统不会保存任何未保存的单元输出,因此您必须再次运行这些单元才能重新生成输出。
  • 从笔记本中的终端会话运行 top 命令,看看是否有进程占用 CPU。
  • 从终端使用 df 命令检查可用磁盘可用空间大小,或使用 free 命令检查可用 RAM。
  • 通过从用户管理的笔记本页面中选择实例并点击停止来关停该实例。在该实例完全停止后,再选择它并点击启动

迁移到 Vertex AI Workbench 实例

本部分介绍从用户管理的笔记本实例迁移到 Vertex AI Workbench 实例时遇到的问题的诊断和解决方法。

找不到用户管理的笔记本实例中的 R、Beam 或其他内核

问题

用户管理的笔记本实例中的内核未出现在您迁移到的 Vertex AI Workbench 实例中。

默认情况下,某些内核(例如 R 和 Beam 内核)在 Vertex AI Workbench 实例中不可用。不支持迁移这些内核。

解决方案

如需解决此问题,请向 Vertex AI Workbench 实例添加 conda 环境

无法在 Vertex AI Workbench 实例中设置 Dataproc Hub 实例

问题

Vertex AI Workbench 实例不支持 Dataproc Hub。

解决方案

继续在用户管理的笔记本实例中使用 Dataproc Hub。

迁移的实例中的框架版本不同

问题

用户管理的笔记本实例中的框架的版本与您迁移到的 Vertex AI Workbench 实例中的框架不同。

Vertex AI Workbench 实例提供一组默认的框架版本。迁移工具不会添加原始用户管理的笔记本实例中的框架版本。请参阅默认迁移工具行为

解决方案

如需添加特定版本的框架,请向 Vertex AI Workbench 实例添加 conda 环境

GPU 未迁移到新的 Vertex AI Workbench 实例

问题

用户管理的笔记本实例中的 GPU 不在您迁移到的 Vertex AI Workbench 实例中。

Vertex AI Workbench 实例支持一组默认的 GPU。如果原始的用户管理的笔记本实例中的 GPU 不可用,则系统会在没有任何 GPU 的情况下迁移实例。

解决方案

迁移后,您可以使用 Notebooks API 中的 projects.locations.instances.patch 方法或 Google Cloud SDK 中的 gcloud workbench instances update 命令将 GPU 添加到 Vertex AI Workbench 实例。

迁移的实例的机器类型不同

问题

用户管理的笔记本实例的机器类型与您迁移到的 Vertex AI Workbench 实例不同。

Vertex AI Workbench 实例并不支持所有机器类型。 如果原始的用户管理的笔记本实例中的机器类型不可用,则实例会迁移到 e2-standard-4 机器类型。

解决方案

迁移后,您可以使用 Notebooks API 中的 projects.locations.instances.patch 方法或 Google Cloud SDK 中的 gcloud workbench instances update 命令更改 Vertex AI Workbench 实例的机器类型。

使用文件

本部分介绍了如何排查用户管理的笔记本实例的文件问题。

文件下载已停用,但用户仍然可以下载文件

问题

对于 Dataproc Hub 用户管理的笔记本实例,不支持停用从 JupyterLab 界面下载文件。即使您在创建实例时未选择启用从 JupyterLab 界面下载文件,使用 Dataproc Hub 框架的用户管理笔记本实例也会允许文件下载。

解决方案

Dataproc Hub 用户管理的笔记本实例不支持限制文件下载。

下载的文件被截断或无法完成下载

问题

从用户管理的笔记本实例下载文件时,代理转发代理程序上的超时设置会限制下载完成的连接时间。如果下载所用的时间太长,这会截断下载的文件或阻止下载文件。

解决方案

如需下载文件,请将文件复制到 Cloud Storage,然后从 Cloud Storage 下载文件。

请考虑将您的文件和数据迁移到新的用户管理的笔记本实例。

重启虚拟机后,无法从笔记本终端引用本地文件

问题

有时,重启用户管理的笔记本实例后,无法从笔记本终端引用本地文件。

解决方案

这是一个已知问题。如需从笔记本终端引用本地文件,请首先使用以下命令重新建立当前工作目录:

cd PWD

在此命令中,请将 PWD 替换为您当前的工作目录。例如,如果您当前的工作目录是 /home/jupyter/,则使用命令 cd /home/jupyter/

重新建立当前工作目录后,便可以从笔记本终端引用您的本地文件。

创建用户管理的笔记本实例

本部分介绍了如何排查创建用户管理的笔记本实例存在的问题。

超出 GPU 配额

问题

您无法创建具有 GPU 的用户管理的笔记本实例。

解决方案

如需确定您项目的可用 GPU 数量,请查看配额页面。如果配额页面上未列出 GPU,或者您需要额外的 GPU 配额,您可以申请增加配额。请参阅申请更高配额限制

实例无限期处于待处理状态

问题

创建用户管理的笔记本实例后,该实例会无限期地处于待处理状态。串行日志中可能会显示如下错误:

Could not resolve host: notebooks.googleapis.com

解决方案

由于 Cloud DNS 配置或其他网络问题,您的实例无法连接到 Notebooks API 服务器。如需解决此问题,请检查您的 Cloud DNS 和网络配置。如需了解详情,请参阅网络配置选项部分

未能成功创建新的用户管理的笔记本实例(权限不足)

问题

用户管理的笔记本实例通常需要大约一分钟时间才能完成创建。如果您新的用户管理的笔记本实例无限期处于 pending 状态,原因可能是用于启动用户管理的笔记本实例的服务账号没有所需的 Google Cloud 项目权限。

您可以使用自己创建的自定义服务账号启动用户管理的笔记本实例,也可以使用一个用户 ID 在单用户模式下启动实例。如果以单用户模式启动用户管理的笔记本实例,则该实例会首先使用 Compute Engine 默认服务账号开始启动流程,然后再将控制权转交给您的用户 ID。

解决方案

要验证服务账号是否具备适当的权限,请按照下列步骤操作:

控制台

  1. 在 Google Cloud 控制台中打开 IAM 页面。

    打开 IAM 页面

  2. 确定与用户管理的笔记本实例配合使用的服务账号,应为如下账号之一:

    • 您在创建用户管理的笔记本实例时指定的自定义服务账号。

    • Google Cloud 项目的 Compute Engine 默认服务账号,如果您在单用户模式下启动用户管理的笔记本实例,就要用到此账号。您的 Google Cloud 项目的 Compute Engine 默认服务账号名称为 PROJECT_NUMBER-compute@developer.gserviceaccount.com。例如:113377992299-compute@developer.gserviceaccount.com

  3. 验证您的服务账号是否具有 Notebooks Runner (roles/notebooks.runner) 角色。如果没有,请向服务账号授予 Notebooks Runner (roles/notebooks.runner) 角色。

如需了解详情,请参阅 IAM 文档中的授予、更改和撤消对资源的访问权限

gcloud

  1. 安装 Google Cloud CLI(如果您尚未安装)。

  2. 使用以下命令获取 Google Cloud 项目的名称和项目编号。将 PROJECT_ID 替换为 Google Cloud 项目的 ID。

    gcloud projects describe PROJECT_ID
    

    您应该会看到类似以下内容的输出,其中显示了您项目的名称 (name:) 和项目编号 (projectNumber:)。

    createTime: '2018-10-18T21:03:31.408Z'
    lifecycleState: ACTIVE
    name: my-project-name
    parent:
     id: '396521612403'
     type: folder
    projectId: my-project-id-1234
    projectNumber: '113377992299'
    
  3. 确定与用户管理的笔记本实例配合使用的服务账号,应为如下账号之一:

    • 您在创建用户管理的笔记本实例时指定的自定义服务账号。

    • Google Cloud 项目的 Compute Engine 默认服务账号,如果您在单用户模式下启动用户管理的笔记本实例,就要用到此账号。您的 Google Cloud 项目的 Compute Engine 默认服务账号名称为 PROJECT_NUMBER-compute@developer.gserviceaccount.com。例如:113377992299-compute@developer.gserviceaccount.com

  4. 使用以下命令为服务账号添加 roles/notebooks.runner 角色。将 project-name 替换为您的项目名称,将 service-account-id 替换为您的用户管理的笔记本实例的服务账号 ID。

    gcloud projects add-iam-policy-binding project-name \
     --member serviceAccount:service-account-id \
     --role roles/notebooks.runner
    

创建实例会导致 Permission denied 错误

问题

实例上的服务账号会提供对其他 Google Cloud 服务的访问权限。您可以使用同一项目中的任何服务账号,但您必须拥有 Service Account User 权限 (iam.serviceAccounts.actAs) 才能创建实例。如果未指定,系统会使用 Compute Engine 的默认服务账号。

解决方案

创建实例时,请验证创建实例的用户具有所定义服务账号的 iam.serviceAccounts.ActAs 权限。

以下示例展示了如何在创建实例时指定服务账号:

gcloud notebooks instances create nb-1 \
  --vm-image-family=tf-latest-cpu \
  --service-account=your_service_account@project_id.iam.gserviceaccount.com \
  --location=us-west1-a

如需授予 Service Account User 角色,请参阅管理对服务账号的访问权限

创建实例会导致 already exists 错误

问题

创建实例时,请验证 Compute Engine 先前未删除同名的用户管理的笔记本实例,并且该实例仍在 Notebooks API 数据库中。

解决方案

以下示例显示了如何使用 Notebooks API 列出实例并验证实例的状态。

gcloud notebooks instances list --location=LOCATION

如果实例的状态为 DELETED,请运行以下命令以将其永久删除。

gcloud notebooks instances delete INSTANCE_NAME --location=LOCATION

无法在共享 VPC 中创建实例

问题

您无法在共享 VPC 中创建实例。

解决方案

如果您是使用共享 VPC,则必须将主机和服务项目添加到服务边界。在宿主项目中,您还必须从服务项目将 Compute Network User 角色 (roles/compute.networkUser) 授予 Notebooks Service Agent。如需了解详情,请参阅管理服务边界

创建实例会导致资源可用性错误

问题

由于资源可用性错误,您无法创建实例。

此错误可能如下所示:

Creating notebook INSTANCE_NAME: ZONE does not have enough
resources available to fulfill the request. Retry later or try another zone in
your configurations.

由于 Compute Engine 资源(如 GPU 或 CPU)当前不可用,当您在无法满足您的请求的可用区中请求新资源时,就会发生资源错误。

资源错误仅适用于该可用区中的新资源请求,而不会影响现有资源。资源错误与 Compute Engine 配额无关。资源错误是暂时性的,可能会根据需求的转变而经常变化。

解决方案

如需继续操作,您可以尝试以下操作:

  • 创建具有其他机器类型的实例。
  • 在其他可用区中创建实例。
  • 稍后重试请求。
  • 减少您请求的资源量。例如,尝试创建 GPU、磁盘、vCPU 或内存较少的实例。

启动实例会导致资源可用性错误

问题

由于资源可用性错误,您无法启动实例。

此错误可能如下所示:

The zone ZONE_NAME doesn't have enough resources available to fulfill
the request. '(resource type:compute)'.

由于 Compute Engine 资源(如 GPU 或 CPU)当前不可用,当您尝试在无法满足您的请求的可用区中启动实例时,就会发生资源错误。

资源错误仅适用于您在发送请求时在请求中指定的资源,不适用于该可用区中的所有资源。资源错误与 Compute Engine 配额无关。资源错误是暂时性的,可能会根据需求的转变而经常变化。

解决方案

如需继续操作,您可以尝试以下操作:

  • 更改实例的机器类型。
  • 将您的文件和数据迁移到其他区域的实例。
  • 稍后重试请求。
  • 减少您请求的资源量。例如,启动具有较少 GPU、磁盘、vCPU 或内存的其他实例。

升级用户管理的笔记本实例

本部分介绍升级用户管理的笔记本实例的问题排查方法。

无法升级,因为无法获取实例磁盘信息

问题

单磁盘用户管理的笔记本实例不支持升级。

解决方案

您可能希望将您的用户数据迁移到新的用户管理的笔记本实例

无法升级,因为实例与 UEFI 不兼容

问题

Vertex AI Workbench 依赖于 UEFI 兼容性以完成升级。

通过某些旧映像创建的用户管理的笔记本实例与 UEFI 不兼容,因此无法升级。

解决方案

如需验证您的实例是否与 UEFI 兼容,请在 Cloud Shell 中或安装了 Google Cloud CLI 的任何环境中输入以下命令。

gcloud compute instances describe INSTANCE_NAME \
  --zone=ZONE | grep type

替换以下内容:

  • INSTANCE_NAME:实例的名称
  • ZONE:实例所在的可用区

如需验证您用于创建实例的映像是否兼容 UEFI,请使用以下命令:

gcloud compute images describe VM_IMAGE_FAMILY \
  --project deeplearning-platform-release | grep type

VM_IMAGE_FAMILY 替换为您用于创建实例的映像系列名称

如果您确定实例或映像与 UEFI 不兼容,可以尝试将您的用户数据迁移到新的用户管理的笔记本实例。为此,请完成以下步骤:

  1. 验证您要用于创建新实例的映像是否兼容 UEFI。如需执行此操作,请在 Cloud Shell 中或安装了 Google Cloud CLI 的任何环境中输入以下命令。

    gcloud compute images describe VM_IMAGE_FAMILY \
      --project deeplearning-platform-release --format=json | grep type

    VM_IMAGE_FAMILY 替换为要用于创建实例的映像系列名称。

  2. 将您的用户数据迁移到新的用户管理的笔记本实例

升级后无法访问用户管理的笔记本实例

问题

如果用户管理的笔记本实例在升级后无法访问,则可能是因为在替换启动磁盘的映像期间发生故障。

可升级的用户管理的笔记本实例为双磁盘实例,包含一个启动磁盘和一个数据磁盘。升级过程会将启动磁盘升级到新映像,同时将数据保留在数据磁盘上。

解决方案

如需将新的有效映像挂接到启动磁盘,请完成以下步骤。

  1. 如需存储将用于完成此过程的值,请在 Cloud ShellGoogle Cloud CLI 的任何环境中输入以下命令已安装。

    export INSTANCE_NAME=MY_INSTANCE_NAME
    export PROJECT_ID=MY_PROJECT_ID
    export ZONE=MY_ZONE

    替换以下内容:

    • MY_INSTANCE_NAME:实例的名称
    • MY_PROJECT_ID:您的项目 ID
    • MY_ZONE:实例所在的可用区
  2. 使用以下命令停止实例:

    gcloud compute instances stop $INSTANCE_NAME \
      --project=$PROJECT_ID --zone=$ZONE
  3. 从实例中分离启动磁盘。

    gcloud compute instances detach-disk $INSTANCE_NAME --device-name=data \
      --project=$PROJECT_ID --zone=$ZONE
  4. 删除实例的虚拟机。

    gcloud compute instances delete $INSTANCE_NAME --keep-disks=all --quiet \
      --project=$PROJECT_ID --zone=$ZONE
  5. 使用 Notebooks API 删除用户管理的笔记本实例。

    gcloud notebooks instances delete $INSTANCE_NAME \
      --project=$PROJECT_ID --location=$ZONE
  6. 创建与之前实例名称相同的用户管理的笔记本实例。

    gcloud notebooks instances create $INSTANCE_NAME \
      --vm-image-project="deeplearning-platform-release" \
      --vm-image-family=MY_VM_IMAGE_FAMILY \
      --instance-owners=MY_INSTANCE_OWNER \
      --machine-type=MY_MACHINE_TYPE \
      --service-account=MY_SERVICE_ACCOUNT \
      --accelerator-type=MY_ACCELERATOR_TYPE \
      --accelerator-core-count=MY_ACCELERATOR_CORE_COUNT \
      --install-gpu-driver \
      --project=$PROJECT_ID \
      --location=$ZONE

    替换以下内容:

    • MY_VM_IMAGE_FAMILY映像系列名称
    • MY_INSTANCE_OWNER:您的实例所有者
    • MY_MACHINE_TYPE:实例虚拟机的机器类型
    • MY_SERVICE_ACCOUNT:要用于此实例的服务账号,或使用 "default"
    • MY_ACCELERATOR_TYPE:加速器类型;例如 "NVIDIA_TESLA_T4"
    • MY_ACCELERATOR_CORE_COUNT:核心数;例如 1

监控用户管理的笔记本实例的健康状况

本部分介绍了如何排查监控健康状况错误的问题。

docker-proxy-agent 状态失败

docker-proxy-agent 状态失败后,请按以下步骤操作:

  1. 验证“反向代理”代理正在运行。 如果未运行,请转到第 3 步。

  2. 重启“反向代理”代理。

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

docker-service 状态失败

docker-service 状态失败后,请按以下步骤操作:

  1. 验证 Docker 服务正在运行。

  2. 重启 Docker 服务。

jupyter-service 状态失败

jupyter-service 状态失败后,请按以下步骤操作:

  1. 验证 Jupyter 服务正在运行。

  2. 重启 Jupyter 服务。

jupyter-api 状态失败

jupyter-api 状态失败后,请按以下步骤操作:

  1. 验证 Jupyter Internal API 是否处于活跃状态。

  2. 重启 Jupyter 服务。

启动磁盘利用率百分比

如果数据磁盘空间的占用率大于 85%,则该磁盘空间处于不健康状况。

如果您的启动磁盘空间状态不健康,请尝试以下操作:

  1. 通过用户管理的笔记本实例中的终端会话或使用 ssh 进行连接,运行命令 df -H 来检查可用磁盘空间大小。

  2. 使用命令 find . -type d -size +100M 帮助您查找可能可以删除的大型文件,但除非您确定此操作的安全性,否则请勿删除这些文件。如果您不确定,可以向支持团队寻求帮助

  3. 如果上述步骤无法解决您的问题,请获取支持

数据磁盘利用率百分比

如果数据磁盘空间的占用率大于 85%,则表示该磁盘空间处于不健康状况。

如果您的数据磁盘空间状态不健康,请尝试以下操作:

  1. 通过用户管理的笔记本实例中的终端会话或使用 ssh 进行连接,运行命令 df -h -T /home/jupyter 来检查可用磁盘空间大小。

  2. 删除较大的文件可增加可用磁盘空间。使用命令 find . -type d -size +100M 来帮助您查找大型文件。

  3. 如果上述步骤无法解决您的问题,请获取支持

无法安装第三方 JupyterLab 扩展程序

问题

尝试安装第三方 JupyterLab 扩展程序会导致 Error: 500 消息。

解决方案

用户管理的笔记本实例不支持第三方 JupyterLab 扩展程序。

恢复实例

问题

不支持在删除用户管理的笔记本实例后恢复该实例。

解决方案

如需备份实例上的数据,您可以将笔记本保存到 GitHub 或创建磁盘快照

从实例恢复数据

问题

不支持在删除用户管理的笔记本实例后从该实例恢复数据。

解决方案

如需备份实例上的数据,您可以将笔记本保存到 GitHub 或创建磁盘快照

无法增加共享内存

问题

您无法增加现有用户管理的笔记本实例上的共享内存。

解决方案

但是,您可以在创建用户管理的笔记本实例时使用 container-custom-params 元数据键指定共享内存大小,其值如下所示:

--shm-size=SHARED_MEMORY_SIZE gb

SHARED_MEMORY_SIZE 替换为所需的大小(以 GB 为单位)。

实用流程

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

使用 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 \
        --parameter project_id=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 \
        --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 实例所在的可用区。

实用标志:

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