特征组是一种与包含特征数据的 BigQuery 表或视图相关联的特征注册表资源。一个特征组可以包含多个特征,其中每个特征都与特征数据源中的一列相关联。如果您想在特征注册表中注册特征数据源,请创建一个特征组,然后向其中添加特征。
创建特征组并关联 BigQuery 数据源后,您可以创建与数据源中的列相关联的特征。请注意,虽然在创建特征组时关联数据源是可选操作,但您必须先关联 BigQuery 表或视图,然后才能在该特征组中创建特征。每个特征都对应于与特征组关联的数据源中的一列。
为什么要使用特征组和特征?
注册特征数据源是可选操作。不过,在以下情况下,您必须通过创建特征组和特征来注册特征数据:
使用时序格式的历史数据训练模型:如果特征数据源包含最新特征数据以及具有相同实体 ID 的多个特征记录的历史特征数据,请添加
feature_timestamp列,将此数据格式化为时序格式。在此场景中,您必须使用特征组和特征注册数据源。然后,您可以按如下方式传送特征:汇总来自多个来源的特征:在创建特征视图实例时,使用特征组汇总来自多个 BigQuery 数据源的特定列。
传送 null 特征值:在在线传送期间,如果您只想传送最新的特征值(包括 null 值),请通过创建将
dense参数设置为true的特征组来注册特征数据源。在特征视图中使用持续数据同步:注册特征是在特征视图中使用持续数据同步的前提条件。
监控特征是否存在异常:如果您想设置特征监控,以检索特征统计信息并检测特征漂移,则必须注册特征。
何时不应使用特征组和特征
如果您想从特征数据源传送嵌入,请不要通过创建特征组和特征来注册该数据源。在这种情况下,您必须通过将 BigQuery 表或视图直接与特征视图相关联来设置在线传送。
如需详细了解如何在不注册特征数据源的情况下设置在线传送,请参阅根据 BigQuery 来源创建特征视图。
控制访问权限
您可以在以下级别控制特征组的访问权限:
控制对
FeatureGroup资源的访问权限:如需控制特定个人、Google 群组、网域或服务账号对特征组的访问权限,请为该特征组设置 IAM 政策。控制对 BigQuery 数据源的访问权限:默认情况下,特征组使用为项目配置的默认服务账号。Vertex AI Feature Store 会为此服务账号分配 BigQuery Data Viewer Identity and Access Management (IAM) 角色。这样一来,任何具有在项目中创建特征组权限的用户都可以访问 BigQuery 中的特征数据源。如需限制对 BigQuery 数据源的访问权限或向其他用户授予访问权限,您可以设置特征组以使用其自己的专用服务账号。Vertex AI Feature Store 会为配置为具有专用服务账号的每个特征组生成唯一的服务账号邮箱。
准备工作
在创建特征组之前,请完成以下前提条件:
确保您的项目中至少已创建一个在线存储区实例,即使您想创建新的在线存储区实例也是如此。如果您使用的是新项目,请先创建在线存储区实例,然后再创建特征组。
设置 BigQuery 表或视图中的特征数据格式,使其符合数据源准备准则。
验证您的 BigQuery 数据源是否包含至少一个具有
string或int值的实体 ID 列。向 Gemini Enterprise Agent Platform 进行身份验证,除非您已完成此操作。
选择标签页以了解您打算如何使用本页面上的示例:
控制台
当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。
Python
如需在本地开发环境中使用本页面上的 Python 示例,请安装并 初始化 gcloud CLI,然后使用您的用户凭证设置应用默认凭据。
-
安装 Google Cloud CLI。
-
配置 gcloud CLI 以使用您的联合身份。
如需了解详情,请参阅使用联合身份登录 gcloud CLI。
-
为您的用户账号创建本地身份验证凭证:
gcloud auth application-default login
如果返回了身份验证错误,并且您使用的是外部身份提供方 (IdP),请确认您已 使用联合身份登录 gcloud CLI。
如需了解详情,请参阅 为本地开发环境设置身份验证。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的 凭证。
安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。
如需了解详情,请参阅 身份验证文档中的使用 REST 时进行身份验证 。 Google Cloud
-
创建特征组以注册特征数据源
使用以下示例可创建特征组并关联特征数据源(例如 BigQuery 表或视图)。
控制台
请按照以下说明使用 Google Cloud 控制台创建特征组:
在 Google Cloud 控制台的 Agent Platform 部分中,前往 Feature Store 页面。
在特征组部分中,点击创建以打开创建特征组页面上的基本信息窗格。
指定特征组名称。
可选:若要添加标签,请点击添加标签,然后指定标签名称和值。您可以为一个特征组添加多个标签。
在 BigQuery 路径字段中,点击浏览,以选择要与特征组关联的 BigQuery 源表或视图。
在实体 ID 列列表中,选择 BigQuery 源表或视图中的实体 ID 列。
请注意,如果 BigQuery 源表或视图具有名为
entity_id的列,则此参数为可选。在这种情况下,如果您未选择实体 ID 列,则特征组会使用entity_id列作为默认实体 ID 列。点击继续。
在注册窗格中,点击以下选项之一,以指示是否要向新特征组添加特征:
包括 BigQuery 表中的所有列 - 在特征组中为 BigQuery 源表或视图中的所有列创建特征。
手动输入特征 - 根据 BigQuery 来源中的特定列创建特征。对于每个特征,请输入特征名称,然后点击列表中相应的 BigQuery 源列名称。
如需添加更多特征,请点击添加其他特征。
创建空特征组 - 创建特征组而不向其添加特征。
点击创建。
Python
如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。 如需了解详情,请参阅 Python API 参考文档。
project:您的项目 ID。location:要在其中创建特征组的区域,例如us-central1。feature_group_id:您要创建的新特征组的名称。bq_table_uri:您要为特征组注册的 BigQuery 源表或视图的 URI。entity_id_columns:包含实体 ID 的列的名称。您可以指定一列或多列。- 如需仅指定一个实体 ID 列,请按以下格式指定列名称:
"entity_id_column_name"。 - 如需指定多个实体 ID 列,请按以下格式指定列名称:
["entity_id_column_1_name", "entity_id_column_2_name", ...]。
- 如需仅指定一个实体 ID 列,请按以下格式指定列名称:
REST
如需创建 FeatureGroup 资源,请使用 featureGroups.create 方法发送 POST 请求。
在使用任何请求数据之前, 请进行以下替换:
- LOCATION_ID:要在其中创建特征组的区域,例如
us-central1。 - SERVICE_AGENT_TYPE:可选。特征组的服务账号配置。如需为特征组使用专用服务账号,请输入
SERVICE_AGENT_TYPE_FEATURE_GROUP。 - PROJECT_ID:您的项目 ID。
- ENTITY_ID_COLUMNS:包含实体 ID 的列名称。您可以指定一列或多列。
- 如需仅指定一个实体 ID 列,请按以下格式指定列名称:
"entity_id_column_name"。 - 如需指定多个实体 ID 列,请按以下格式指定列名称:
["entity_id_column_1_name", "entity_id_column_2_name", ...]。
- 如需仅指定一个实体 ID 列,请按以下格式指定列名称:
- FEATUREGROUP_NAME:您要创建的新特征组的名称。
- BIGQUERY_SOURCE_URI:您要为特征组注册的 BigQuery 源表或视图的 URI。
- TIMESTAMP_COLUMN:可选。指定 BigQuery 源表或视图中包含特征时间戳的列的名称
。
只有当数据格式为时序格式且包含特征时间戳的列未命名为feature_timestamp时,您才需要指定时间戳列名称 。
- STATIC_DATA_SOURCE:可选。如果数据未格式化
为时序格式,请输入
true。默认设置为false。
- DENSE:可选。指明 Vertex AI Feature Store
在传送与特征组关联的特征视图中的数据时如何处理 null 值:
false- 这是默认设置。Vertex AI Feature Store 仅传送最新的非 null 特征值。如果特征的最新值为 null,则 Vertex AI Feature Store 会传送最新的非 null 历史 值。不过,如果该特征的当前值和历史值均为 null, 则 Vertex AI Feature Store 会将 null 作为特征值进行传送。true- 对于具有预定数据同步的特征视图,Vertex AI Feature Store 仅传送最新的特征值,包括 null 值。对于具有持续数据同步的特征视图,Vertex AI Feature Store 仅传送最新的非 null 特征值。不过,如果特征的当前值和历史值均为 null,则 Vertex AI Feature Store 会将 null 作为特征值进行传送。如需详细了解数据同步类型以及如何在特征视图中配置数据同步类型,请参阅同步特征视图中的数据。
HTTP 方法和网址:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups?feature_group_id=FEATUREGROUP_NAME
请求 JSON 正文:
{
"service_agent_type": "SERVICE_AGENT_TYPE",
"big_query": {
"entity_id_columns": "ENTITY_ID_COLUMNS",
"big_query_source": {
"input_uri": "BIGQUERY_SOURCE_URI",
}
"time_series": {
"timestamp_column": ""TIMESTAMP_COLUMN"",
},
"static_data_source": STATIC_DATA_SOURCE,
"dense": DENSE
}
}
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups?feature_group_id=FEATUREGROUP_NAME"
PowerShell
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups?feature_group_id=FEATUREGROUP_NAME" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.aiplatform.v1.UpdateFeatureGroupOperationMetadata",
"genericMetadata": {
"createTime": "2023-09-18T03:00:13.060636Z",
"updateTime": "2023-09-18T03:00:13.060636Z"
}
}
}