排查 Vertex AI 问题

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

部分 Vertex AI 组件的问题排查步骤单独列出。请参阅以下内容:

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

AutoML 模型

本部分介绍了在您遇到 AutoML 问题时可能会有帮助的问题排查步骤。

测试集、验证集或训练集中缺失标签

问题

当您在训练 AutoML 分类模型时使用默认数据拆分时,Vertex AI 可能向某个特定集合(测试、验证或训练)分配的某个类别的实例过少,导致训练时发生错误。如果类别不平衡或只有少量训练数据,就会发生此问题。

解决方案

要解决此问题,请添加更多训练数据、手动拆分数据以向每个集合分配足够的类别,或从数据集中移除不常出现的标签。如需了解详情,请参阅 AutoML 模型的数据拆分简介

Vertex AI Studio

使用 Vertex AI Studio 时,您可能会收到以下错误:

尝试调整模型返回 Internal error encountered

问题

您在尝试对模型进行调优时遇到 Internal error encountered 错误。

解决方案

运行以下 curl 命令以创建空 Vertex AI 数据集。请确保在命令中配置您的项目 ID。

PROJECT_ID=PROJECT_ID

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://europe-west4-aiplatform.googleapis.com/ui/projects/$PROJECT_ID/locations/europe-west4/datasets \
-d '{
    "display_name": "test-name1",
    "metadata_schema_uri": "gs://google-cloud-aiplatform/schema/dataset/metadata/image_1.0.0.yaml",
    "saved_queries": [{"display_name": "saved_query_name", "problem_type": "IMAGE_CLASSIFICATION_MULTI_LABEL"}]
}'

命令完成后,等待五分钟,然后再次尝试调整模型。

错误代码:429

问题

您遇到以下错误:

429: The online prediction request quota is exceeded for
PUBLIC_BASE_MODEL_NAME.

解决方案

请稍后使用退避算法重试。如果您仍然遇到错误,请与 Vertex AI 支持人员联系。

错误代码:410

问题

您遇到以下错误:

410: The request is missing the required authentication credential. Expected
OAuth 2.0 access token, login cookie, or other valid authentication credential.

解决方案

如需了解详情,请参阅身份验证概览

错误代码:403

问题

您遇到以下错误:

403: Permission denied.

解决方案

确保访问 API 的账号拥有适当的权限。

Vertex AI Pipelines

本部分介绍了在您遇到 Vertex AI Pipelines 问题时可能会有帮助的问题排查步骤。

您无权充当服务账号

问题

运行 Vertex AI Pipelines 工作流时,您可能会遇到以下错误消息:

You do not have permission to act as service account: SERVICE_ACCOUNT. (or it may not exist).

解决方案

此错误意味着运行工作流的服务账号无权访问其需要使用的资源。

要解决此问题,请尝试以下方法之一:

  • 向该服务账号添加 Vertex AI Service Agent 角色。
  • 为用户授予该服务账号的 iam.serviceAccounts.actAs 权限。

错误 Internal error happened

问题

如果流水线失败并显示 Internal error happened 消息,请检查 Logs Explorer 并搜索流水线的名称。您可能会看到类似于以下内容的错误:

java.lang.IllegalStateException: Failed to validate vpc
network projects/PROJECT_ID/global/networks/VPC_NETWORK.

APPLICATION_ERROR;google.cloud.servicenetworking.v1/ServicePeeringManagerV1.GetConsumerConfig;Reserved
range: 'RANGE_NAME' not found for consumer project:
'PROJECT_ID' network: 'VPC_NETWORK'.
com.google.api.tenant.error.TenantManagerException: Reserved range:
'RANGE_NAME' not found for consumer project

这意味着 Vertex AI 的 VPC 对等互连包含已删除的 IP 范围。

解决方案

要解决此问题,请使用更新命令更新 VPC 对等互连,并添加有效的 IP 范围。

提供的 OAuth 范围或 ID 令牌目标设备无效

问题

运行 Vertex AI Pipelines 工作流时,您遇到以下错误消息:

google.auth.exceptions.RefreshError: ('invalid_scope: Invalid OAuth scope
or ID token audience provided.', {'error': 'invalid_scope',
'error_description': 'Invalid OAuth scope or ID token audience provided.'})

解决方案

这意味着您未在流水线的其中一个组件中提供凭据,或者未使用 ai_platform.init() 设置凭据。

要解决此问题,请为相关流水线组件设置凭据,或设置环境凭据并在代码开头使用 ai_platform.init()

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = PATH_TO_JSON_KEY

Vertex AI Pipelines 组件需要的磁盘可用空间超过 100 GB

问题

分配给 Vertex AI Pipelines 组件的默认磁盘可用空间为 100 GB,不支持增加磁盘可用空间。请参阅公开问题跟踪器以了解此问题。

解决方案

要让组件使用超过 100 GB 的磁盘可用空间,请使用组件方法将组件转换为自定义作业。借助此运算符,您可以分配组件使用的机器类型和磁盘大小。

有关如何使用此运算符的示例,请参阅将组件转换为 Vertex AI 自定义作业部分中的Vertex AI Pipelines:使用预构建的 Google Cloud 流水线组件进行自定义训练

Vertex AI 网络问题

本部分介绍了在您遇到 Vertex AI 网络问题时可能会有帮助的问题排查步骤。

gcloud services vpc-peerings get-vpc-service-controls \
  --network YOUR_NETWORK

com.google.api.tenant.error.TenantManagerException: Reserved range: xxx not found for consumer project

问题

您在运行工作负载或部署端点时收到格式为 com.google.api.tenant.error.TenantManagerException: Reserved range: xxx not found for consumer project 的错误。

当您更改工作负载的专用服务访问权限预留时,就会发生这种情况。所有已删除的范围都可能未向 Vertex AI API 注册。

解决方案

更新专用服务访问权限分配后,针对 servicenetworking 运行 gcloud services vpc-peerings update

流水线或作业无法访问对等互连 VPC 网络中的端点

问题

您的 Vertex AI 流水线在尝试连接到 VPC 网络中的资源时超时。

解决方案

请尝试执行以下操作来解决此问题:

  • 确保您已完成设置 VPC 网络对等互连中的所有步骤。
  • 查看对等互连 VPC 网络的配置。确保您的网络在作业运行时从正确的服务网络范围导入路由。

    前往 VPC 网络对等互连

  • 确保有一条防火墙规则允许从此范围连接到网络中的目标。

  • 如果对等互连连接在作业运行时未导入任何路由,则表示未使用服务网络配置。这可能是因为您通过默认网络以外的网络完成对等互连配置。如果是这种情况,请确保在启动作业时指定您的网络。请使用以下格式的完全限定网络名称:projects/$PROJECT_ID/global/networks/$NETWORK_NAME

    如需了解详情,请参阅路由概览

流水线或作业无法访问您的网络外其他网络中的端点

问题

您的流水线或作业无法访问您的网络以外的网络中的端点。

解决方案

默认情况下,对等互连配置仅将路由导出到您的 VPC 中的本地子网。

此外,系统不支持传递性对等互连,只有直接对等互连的网络才能进行通信。

  • 如需允许 Vertex AI 通过您的网络进行连接并访问其他网络中的端点,您必须将网络路由导出到对等互连连接。修改对等互连 VPC 网络的配置并启用 Export custom routes

前往 VPC 网络对等互连

由于不支持传递性对等互连,因此即使启用了 Export Custom Routes,Vertex AI 也不会获知其他对等互连网络和服务的路由。如需了解解决方法,请参阅扩展 Vertex AI Pipelines 的网络可达性

No route to host,Google Cloud 控制台中没有路由冲突

问题

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

在极少数情况下,Vertex AI 作业可能会在尝试访问您的 VPC 要向 Vertex AI 网络导出的 IP 地址时抛出 no route to host 投诉。

这可能是因为 Vertex AI 作业在 IP 范围与目标 IP 冲突的受管 GKE 集群的网络命名空间中运行。如需了解详情,请参阅 GKE 网络基础知识

在这些情况下,工作负载会尝试连接到其自身网络命名空间中的 IP 地址,如果无法连接,则会抛出错误。

解决方案

构建工作负载以返回其本地命名空间 IP 地址,并确认这不会与您通过对等连接导出的任何路由冲突。如果存在冲突,请在作业参数中传递 reservedIpRanges[] 的列表,该列表不得与 VPC 网络中的任何范围重叠。作业会将这些范围用于工作负载的内部 IP 地址。

RANGES_EXHAUSTEDRANGES_NOT_RESERVED

问题

格式为 RANGES_EXHAUSTEDRANGES_NOT_RESERVEDRANGES_DELETED_LATER 的错误表示底层 VPC 网络对等互连配置存在问题。这些是网络错误,而不是 Vertex AI 服务本身的错误。

解决方案

遇到 RANGES_EXHAUSTED 错误时,您应先考虑此投诉是否有效。

  • 访问 Cloud 控制台中的网络分析器,然后在 VPC 网络中查找形式为“IP 地址分配摘要”的数据分析。如果这些值表明分配率达到或接近 100%,您可以向预订添加新的范围
  • 此外,请考虑可使用给定大小的预留运行的并行作业数量上限

如需了解详情,请参阅 Service Infrastructure 验证错误

如果此错误仍然存在,请与支持团队联系

Router status is temporarily unavailable

问题

启动 Vertex AI Pipelines 时,您会收到类似以下内容的错误消息:

Router status is temporarily unavailable. Please try again later

解决方案

错误消息表明这只是暂时性情况。尝试再次启动 Vertex AI Pipelines。

如果此错误仍然存在,请与支持团队联系

Vertex AI 预测

本部分介绍了在您遇到 Vertex AI 预测问题时可能会有帮助的问题排查步骤。

“已超出重试次数”错误

问题

您在运行批量预测作业时收到如下错误,表明运行自定义模型的机器可能无法在时间限制内完成预测。

('Post request fails. Cannot get predictions. Error: Exceeded retries: Non-OK
result 504 (upstream request timeout) from server, retry=3, elapsed=600.04s.', 16)

当 Vertex AI 预测服务向 Google Front End 服务注册时,可能会发生这种情况,该服务会代理从客户端到 Vertex AI Prediction API 的连接。

如果 Google Front End 服务在 10 分钟内未收到 API 的响应,则会超时并向客户端返回 500 HTTP 响应代码。

解决方案

如需解决此问题,请尝试以下任一操作:

  • 增加计算节点或更改机器类型。
  • 制作预测容器以发送周期性 102 HTTP 响应代码。这会重置 Google Front End 服务上的 10 分钟计时器。

项目已链接到 VPC

问题

部署端点时,您可能会看到如下错误消息,这表示 Vertex AI 端点之前使用过虚拟私有云网络,并且资源未正确清理。

Currently only one VPC network per user project is supported. Your project is
already linked to "projects/YOUR_SHARED_VPC_HOST_PROJECT/global/networks/YOUR_SHARED_VPC_NETWORK".
To change the VPC network, please undeploy all Vertex AI deployment resources,
delete all endpoint resources, and then retry creating resources in 30 mins.

解决方案

要解决此问题,请尝试在 Cloud Shell 中运行此命令。

gcloud services vpc-peerings delete \
    --service=servicenetworking.googleapis.com \
    --network=YOUR_SHARED_VPC_NETWORK \
    --project=YOUR_SHARED_VPC_HOST_PROJECT

这会手动将您的旧 VPC 网络与 Service Networking VPC 断开连接。

Vertex AI 自定义服务账号问题

本部分介绍了在您遇到服务账号问题时可能会有帮助的问题排查步骤。

模型部署因服务账号 serviceAccountAdmin 错误而失败

问题

模型部署失败,并显示如下错误:

Failed to deploy model MODEL_NAME to endpoint ENDPOINT_NAME due to the error: Failed to add IAM policy binding. Please grant SERVICE_ACC_NAME@gcp-sa-aiplatform.iam.gserviceaccount.com the iam.serviceAccountAdmin role on service account vertex-prediction-role@PROJECT_INFO.iam.gserviceaccount.com

解决方案

此错误意味着您的自定义服务账号可能未正确配置。如需创建具有正确 IAM 权限的自定义服务账号,请参阅使用自定义服务账号

使用自定义服务账号时无法提取身份令牌

问题

使用自定义服务账号时,在单个副本上运行的训练作业无法访问检索令牌所需的 Compute Engine 元数据服务。

您将看到类似于以下内容的错误:

Failed to refresh jwt, retry number 0: ("Failed to retrieve http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=...&format=full
from the Google Compute Engine Metadata service. Status: 404 Response:
\nb'Not Found\n'", <google.auth.transport.requests._Response object at
0x7fb19f058c50>)

解决方案

如需使用自定义服务账号提取身份令牌,您必须使用 iamcredentials.googleapis.com

自定义训练模型

本部分介绍了您在遇到自定义训练模型问题时可能会有帮助的问题排查步骤。

自定义训练问题

自定义训练期间可能会发生以下问题。这些问题适用于 CustomJobHyperparameterTuningJob 资源,包括 TrainingPipeline 资源创建的资源

错误代码:400

问题

您遇到以下错误:

400 Machine type MACHINE_TYPE is not supported.

如果所选机器类型不支持 Vertex AI 训练,或者所选区域没有特定资源,您可能会看到此错误消息。

解决方案

仅在适当的区域使用可用的机器类型

副本退出并显示非零状态代码

问题

分布式训练期间,任何工作器的错误都会导致训练失败。

解决方案

如需检查工作器的堆栈轨迹,请在 Google Cloud 控制台中查看自定义训练日志

查看其他问题排查主题以修复常见错误,然后创建新的 CustomJobHyperparameterTuningJobTrainingPipeline 资源。在许多情况下,错误代码是由训练代码(而不是 Vertex AI 服务)中的问题引发的。要确定是否是这种情况,您可以在本地机器或 Compute Engine 上运行训练代码。

副本内存不足

问题

训练虚拟机实例在训练期间内存不足时可能会发生错误。

解决方案

您可以在 Google Cloud 控制台中查看训练虚拟机的内存用量。

发生此错误时您可能会发现虚拟机上的内存用量不是 100%,这是因为除了训练应用以外,在虚拟机上运行的其他服务也会消耗资源。对于内存较少的机器类型,其他服务可能会占用相对较大比例的内存。例如,在 n1-standard-4 虚拟机上,服务最多可能占用 40% 的内存。

您可以优化训练应用的内存消耗量,也可以选择具有更多内存的更大机器类型。

某个区域的资源不足

问题

您在某个区域遇到资源短缺问题。

解决方案

Vertex AI 使用 Compute Engine 资源训练模型。如果 Compute Engine 在某个区域中的特定 CPU 或 GPU 已满负荷,Vertex AI 将无法调度工作负载。此问题与您的项目配额无关。

达到 Compute Engine 容量上限时,Vertex AI 会自动重试 CustomJobHyperparameterTuningJob 最多三次。如果所有重试均失败,则作业将失败。

缺货通常会在使用 GPU 时出现。如果您在使用 GPU 时遇到此错误,请尝试切换到其他 GPU 类型。如果您可以使用另一个区域,请尝试在其他区域进行训练。

访问其他 Google Cloud 服务时的权限错误

如果您在从训练代码访问其他 Google Cloud 服务时遇到权限错误(例如 google.api_core.exceptions.PermissionDenied: 403),则可能存在以下问题之一:

内部错误

问题

您的训练由于系统错误而失败。

解决方案

这个问题可能是暂时性的;尝试重新提交 CustomJobHyperparameterTuningJobTrainingPipeline。如果此错误仍然存在,请与支持团队联系

使用客户容器映像时返回错误代码 500

问题

您在日志中看到 500 错误。

解决方案

此类型错误可能是自定义容器映像的问题,而不是 Vertex AI 错误。

部署到端点时,服务账号无法访问 Cloud Storage 存储桶

问题

如果您尝试将模型部署到端点,并且您的服务账号对相关 Cloud Storage 存储桶没有 storage.objects.list 访问权限,则可能会看到以下错误:

custom-online-prediction@TENANT_PROJECT_ID.iam.gserviceaccount.com
does not have storage.objects.list access to the Cloud Storage bucket.

默认情况下,部署模型的自定义容器使用的服务账号是无权访问 Cloud Storage 存储桶的。

解决方案

要解决此问题,请尝试以下方法之一:

  • 上传模型时,将您尝试从容器访问的文件复制到模型工件中。Vertex AI 会将其复制到默认服务账号有权访问的位置,该位置类似于所有其他模型工件。

  • 在容器构建过程中,将文件复制到容器中。

  • 指定自定义服务账号

神经架构搜索

已知问题

  • 取消 NAS 作业后,主作业(父级)停止,但某些子级试验继续显示正在运行状态。在这种情况下,请忽略显示正在运行的子级试验状态。试验已停止,但界面继续显示正在运行状态。只要主作业停止,您将无需额外付费。
  • 在训练程序中报告奖励后,等待(休眠)10 分钟,试验作业才会退出。
  • 使用 Cloud Shell 运行 TensorBoard 时,生成的输出链接可能不起作用。在这种情况下,请记下端口号,使用网页预览工具,然后选择正确的端口号以显示图表。

    访问 Web Preview 工具:

    一次骑行的预测时长的特征归因图

  • 如果您在训练程序日志中看到如下所示的错误消息:

    gcsfuse errors: fuse: writeMessage: no such file or directory [16 0 0 0 218 255 255 255 242 25 111 1 0 0 0 0]
    

    由于一个 OOM 条件导致了此错误,因此,请使用一个可提供较大 RAM 的机器。

  • 如果您的自定义训练程序找不到作业目录 job-dir 标志,请导入带有下划线而不是连字符的 job_dir。本教程 1 中的备注说明了这一点。

  • 训练期间出现 NAN 错误。训练作业中可能存在 NaN 错误,例如 NaN : Tensor had NaN values。对于推荐的架构,学习速率可能过快。如需了解详情,请参阅内存不足 (OOM) 和学习速率相关错误

  • 训练期间出现 OOM 错误。训练作业中可能存在 OOM(内存不足)错误。 批次大小对于加速器内存而言可能过大。如需了解详情,请参阅内存不足 (OOM) 和学习速率相关错误

  • 代理任务模型选择控制器作业崩溃。在罕见情况下,代理任务模型选择控制器作业会崩溃,您可以按照这些步骤来恢复作业。

  • 代理任务搜索控制器作业崩溃。在罕见情况下,代理任务搜索控制器作业会崩溃,您可以按照这些步骤来恢复作业。

  • 服务账号无权访问 Artifact Registry 或存储桶。如果出现 Vertex AI Service Agent service-123456789@gcp-sa-aiplatform-cc.iam.gserviceaccount.com does not have permission to access Artifact Registry repository projects/my-project/locations/my-region/repositories/nas 之类的错误或类似的存储桶访问权限错误,请为此服务账号授予项目中的存储编辑者角色。

Vertex AI Feature Store

本部分介绍了您在遇到 Vertex AI Feature Store 问题时可能会有帮助的问题排查步骤。

发送流式注入或在线传送请求时发生 Resource not found 错误

问题

在设置特征存储区、实体类型或特征资源之后,这些资源要经过一段时间的延迟才能传播到 FeaturestoreOnlineServingService。有时,如果您在创建资源后立即提交流式注入或在线传送请求,这种传播延迟可能会导致 resource not found 错误。

解决方案

如果您收到此错误,请等待几分钟,然后再次尝试发出请求。

新建特征的批量注入成功,但在线传送请求返回空值

问题

仅有新创建的特征在传播到 FeaturestoreOnlineServingService 之前会有延迟。特征和值存在,但需要一段时间进行传播。这可能会导致您的在线传送请求返回空值。

解决方案

如果您注意到这样的不一致性,请等待几分钟,然后再次尝试发送在线传送请求。

在线服务节点的 CPU 利用率较高

问题

在线传送节点的 CPU 利用率较高。

解决方案

为了缓解此问题,您可以通过手动增加节点数或启用自动扩缩来增加在线服务节点的数量。请注意,即使启用了自动扩缩功能,在添加或移除节点时,Vertex AI Feature Store 也需要时间来重新均衡数据。如需了解如何查看一段时间内的特征值分布指标,请参阅查看特征值指标

最热的在线服务节点的 CPU 利用率较高

问题

如果最热节点的 CPU 利用率较高,您可以增加服务节点的数量,或将实体访问模式更改为伪随机模式。

解决方案

将实体访问模式设置为伪随机模式可以降低经常访问特征存储区中彼此靠近的实体导致的高 CPU 利用率。如果这两种解决方案都无效,请实现客户端缓存,以避免反复访问相同的实体。

当 QPS 较低时在线服务延迟时间较长

问题

QPS 较低的非活动或活动量较低的时间段可能会导致某些服务器端缓存过期。这可能导致在流向在线服务节点的流量以普通或较高 QPS 恢复时出现高延迟。

解决方案

为了缓解此问题,您需要向特征存储区发送至少 5 QPS 的人工流量,以使连接保持活跃。

批量注入作业在六小时后失败

问题

批量注入作业可能会因读取会话在六小时后过期而失败。

解决方案

为避免超时,请增加工作器数量以在六小时的时间限制内完成注入作业。

导出特征值时发生 Resource exceeded 错误

问题

如果导出作业超出内部配额,则导出大量数据可能会因超出资源错误而失败。

解决方案

为避免此错误,您可以配置时间范围参数 start_timeend_time,以便一次处理较少的数据。如需了解完整导出,请参阅完整导出

Vertex AI Vizier

使用 Vertex AI Vizier 时,您可能会遇到以下问题。

内部错误

问题

发生系统错误时,就会发生内部错误。

解决方案

这可能是暂时性的。 尝试重新发送请求;如果错误仍然存在,请联系支持