Vertex AI Feature Store(旧版)的最佳实践

以下最佳实践将帮助您在各种场景中规划和使用 Vertex AI Feature Store(旧版)。本指南并非详尽无遗。

构建同时描述多个实体的特征

某些特征可能适用于多个实体类型。例如,您可能有一个计算值,记录用户对每件商品的点击数。此特征描述了商品 - 用户对。

在这种情况下,最佳实践是创建单独的实体类型以对共享特征进行分组。您可以创建实体类型(例如 product-user)以包含共享特征。

对于实体 ID,请串联各个实体的 ID,例如各个产品和用户的实体 ID。唯一的要求是 ID 必须是字符串。这些组合实体类型称为复合实体类型

如需了解详情,请参阅创建实体类型

使用 IAM 政策控制多个团队的访问权限

使用 IAM 角色和政策为不同用户群组设置不同级别的访问权限。例如,机器学习研究人员、数据科学家、DevOps 和站点可靠性工程师都需要访问相同的特征存储区,但其访问权限级别可能不同。例如,DevOps 用户可能需要管理特征存储区的权限,但不需要拥有对特征存储区内容的访问权限。

您还可以使用资源级 IAM 政策限制对特定特征存储区或实体类型的访问权限。

例如,假设您的组织包含以下角色。由于每个角色都需要不同的访问权限级别,因此每个角色分配了不同的预定义 IAM 角色。您还可以创建和使用自己的自定义角色。

角色 说明 预定义角色
机器学习研究人员或业务分析师 仅查看特定实体类型数据的用户 roles/aiplatform.featurestoreDataViewer(可以在项目或资源级层授予)
数据科学家或数据工程师 使用特定实体类型资源的用户。对于他们拥有的资源,他们可以将访问权限委托给其他主账号。 roles/aiplatform.entityTypeOwner(可以在项目或资源级层授予)
IT 或 DevOps 必须维护并调整特定特征存储区性能但不需要访问数据的用户。 roles/aiplatform.featurestoreInstanceCreator(可以在项目或资源级层授予)
自动数据导入流水线 将数据写入特定实体类型的应用。 roles/aiplatform.featurestoreDataWriter(可以在项目或资源级层授予)
站点可靠性工程师 管理项目中特定特征存储区或所有特征存储区的用户 roles/aiplatform.featurestoreAdmin(可以在项目或资源级层授予)
全局(任何 Vertex AI Feature Store [旧版]用户)

允许用户查看和搜索现有特征。如果他们找到要使用的特征,则可以向特征所有者请求访问权限。

对于 Google Cloud 控制台用户,查看 Vertex AI Feature Store(旧版)着陆页、导入作业页面和批量传送作业页面也需要此角色。

在项目级层授予 roles/aiplatform.featurestoreResourceViewer 角色。

相应地监控和调优资源以优化批量导入

批量导入作业需要工作器来处理和写入数据,这可以提高特征存储区的 CPU 利用率并影响在线传送的性能。如果优先考虑保持在线服务性能,请在一开始为每十个在线服务节点配备一个工作器。在导入期间,监控在线存储的 CPU 使用率。如果 CPU 使用率低于预期,则增加未来批量导入作业的工作器数量,以提高吞吐量。如果 CPU 使用率高于预期,则增加在线传送节点的数量以增加 CPU 容量或减少批量导入工作器的数量,这两种做法都可以降低 CPU 使用率。

如果增加在线服务节点的数量,请注意,在您更新后,Vertex AI Feature Store(旧版)大约需要 15 分钟才能达到最佳性能。

如需了解详情,请参阅更新特征存储区批量导入特征值

如需详细了解特征存储区监控,请参阅 Cloud Monitoring 指标

回填历史数据时使用 disableOnlineServing 字段

回填是导入历史特征值的过程,不会影响最新的特征值。在这种情况下,您可以停用在线服务,这会跳过对在线存储空间的所有更改。如需了解详情,请参阅回填历史数据

使用自动扩缩功能在负载波动期间降低费用

如果您广泛使用 Vertex AI Feature Store(旧版),并在流量模式中频繁遇到负载波动现象,请使用自动扩缩功能来优化费用。自动扩缩功能让 Vertex AI Feature Store(旧版)可以查看流量模式,并根据 CPU 利用率自动增加或减少节点数量,而不是保持较高的节点数。此选项非常适合逐步增长和下降的流量模式。

如需详细了解自动扩缩功能,请参阅扩缩选项

测试在线服务节点的性能以确保实时服务

您可以测试在线服务节点的性能,以确保特征存储区在实时在线服务期间的性能。您可以基于各种基准参数(例如 QPS、延迟时间和 API)执行这些测试。请按照以下准则测试在线服务节点的性能:

  • 从同一区域(最好在 Compute Engine 或 Google Kubernetes Engine 上)运行所有测试客户端:这可防止因区域之间的跃点导致的网络延迟而产生差异。

  • 在 SDK 中使用 gRPC API:gRPC API 的性能优于 REST API。如果您需要使用 REST API,请启用 HTTP keep-alive 选项以重复使用 HTTP 连接。否则,每个请求都会创建新的 HTTP 连接,这会增加延迟时间。

  • 运行持续时间更长的测试:运行持续时间更长(15 分钟或更长)以及至少 5 QPS 的测试,以计算更准确的指标。

  • 添加“预热”期:如果您在一段时间不活动后开始测试,则可能会在重新建立连接时观察到高延迟。为了合理解释这一高延迟的初始时间段,您可以将此时间段指定为“预热期”,在此期间内忽略初始数据读取。另一种方法是向特征存储区发送速率较低但一致的人工流量,以使连接保持活跃。

  • 如果需要,启用自动扩缩功能:如果您预计在线流量会逐渐增长和减少,请启用自动扩缩功能。如果您选择自动扩缩,Vertex AI 会根据 CPU 利用率自动更改在线服务节点的数量。

如需详细了解在线服务,请参阅在线服务。如需详细了解在线服务节点,请参阅在线服务节点

指定开始时间以优化批量传送和批量导出期间的离线存储费用

如需在批量传送和批量导出期间优化离线存储费用,您可以在 batchReadFeatureValuesexportFeatureValues 请求中指定 startTime。它根据指定的 startTime,对可用特征数据子集运行查询。否则,请求会查询所有可用的特征数据量,导致离线存储空间使用费用居高不下。

后续步骤

了解在 Vertex AI 上实现自定义训练的机器学习模型的 Vertex AI Feature Store(旧版)最佳实践