Servir funciones de la tienda online

Vertex AI Feature Store te permite ofrecer online valores de características en tiempo real desde una vista de características de un almacén online. Por ejemplo, puede servir valores de características de una vista de características para predicciones online. Una vista de características debe sincronizarse al menos una vez para poder servir online las características de esa vista.

Si la vista de características se define en función de los grupos de características y las características, Vertex AI Feature Store obtiene los valores de características más recientes correspondientes a un ID de entidad específico. Si hay varios registros con el mismo valor en la columna ID, Vertex AI Feature Store obtiene los valores de las funciones no nulos más recientes, en función de la columna feature_timestamp.

Si la vista de características está asociada directamente a una fuente de datos de BigQuery sin asociar grupos de características ni características, Vertex AI Feature Store obtiene todos los valores de las características de la fuente de datos. En este caso, cada fila de la fuente de datos debe contener un ID único.

En función del tipo de publicación online configurado para tu tienda online, puedes publicar los valores de las funciones de una de las siguientes formas:

Antes de empezar

Autentícate en Vertex AI, a menos que ya lo hayas hecho.

Select the tab for how you plan to use the samples on this page:

Python

Para usar las Python muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

    Instala Google Cloud CLI.

    Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

Para obtener más información, consulta Set up authentication for a local development environment.

REST

Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

    Instala Google Cloud CLI.

    Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Obtener valores de características mediante el servicio online de Bigtable

Puedes usar el servicio online de Bigtable para hacer lo siguiente:

Obtener los valores de las funciones de una sola entidad

Si su vista de características solo tiene una columna de ID de entidad, puede ofrecer características especificando el valor contenido en esa columna. Sin embargo, si la vista de la función tiene varias columnas de ID de entidad, puede localizar un registro de función especificando los valores de esas columnas para constituir el ID de entidad que es único para el registro de función.

Obtener valores de características de una vista de características con una sola columna de ID de entidad

Usa los siguientes ejemplos para obtener los valores de las características de un ID de entidad específico, donde la vista de características solo tiene una columna de ID de entidad.

REST

Para obtener todos los valores de las funciones más recientes de un ID de entidad específico de una instancia de FeatureView, envía una solicitud POST mediante el método featureViews.fetchFeatureValues.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION_ID: región en la que se encuentra la tienda online, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATUREONLINESTORE_NAME: nombre de la tienda online que contiene la vista de la función.
  • FEATUREVIEW_NAME: nombre de la vista de características de la que quiere obtener valores de características.
  • ENTITY_ID: valor de la columna ID del registro de la función del que quiere obtener los valores más recientes.
  • FORMAT: opcional. El formato en el que quieres obtener los valores de la función. Se admiten los siguientes formatos:
    • KEY_VALUE
    • PROTO_STRUCT

Método HTTP y URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues

Cuerpo JSON de la solicitud:

{
  data_key: { key: "ENTITY_ID" },
  data_format: "FORMAT"
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues"

PowerShell

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente:

key_values {
  features {
    value {
      int64_value: 258348
    }
    name: "feature_0"
  }
  features {
    value {
      double_value: 0.96300036744534068
    }
    name: "feature_1"
  }
  features {
    value {
      double_value: 0.42787383695351083
    }
    name: "feature_2"
  }
  features {
    value {
      double_value: 0.12219888824743128
    }
    name: "feature_3"
  }
  features {
    value {
      double_value: 0.037523154697944622
    }
    name: "feature_4"
  }
  features {
    value {
      double_value: 0.1766952509448767
    }
    name: "feature_5"
  }
}

Python

.

Utilice el siguiente ejemplo para obtener valores de características basados en un ID de entidad específico mediante el servicio online de Bigtable.

from google.cloud import aiplatform
from vertexai.resources.preview.feature_store import FeatureOnlineStore, FeatureView

aiplatform.init(project="PROJECT_ID", location="LOCATION_ID")
fos = FeatureOnlineStore("FEATUREONLINESTORE_NAME")
fv = FeatureView("FEATUREVIEW_NAME", feature_online_store_id=fos.name)
fv.read("ENTITY_ID")

Haz los cambios siguientes:

  • LOCATION_ID: región en la que se encuentra la tienda online, como us-central1.

  • PROJECT_ID: tu ID de proyecto.

  • FEATUREONLINESTORE_NAME: nombre de la tienda online que contiene la vista de la función.

  • FEATUREVIEW_NAME: nombre de la vista de características de la que quiere obtener valores de características.

  • ENTITY_ID: valor de la columna de ID para la que quiere publicar los valores de función más recientes.

  • FORMAT: opcional. El formato en el que quieres obtener los valores de la función. Entre los formatos admitidos se incluyen los formatos de pares JSON KEY_VALUE y proto PROTO_STRUCT.

Obtener valores de características de una vista de características con varias columnas de ID de entidad

Usa los siguientes ejemplos para obtener los valores de las características de un ID de entidad específico, donde la vista de características tiene varias columnas de ID de entidad.

REST

Para obtener todos los valores de las funciones más recientes de un ID de entidad específico de una instancia de FeatureView, envía una solicitud POST mediante el método featureViews.fetchFeatureValues.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION_ID: región en la que se encuentra la tienda online, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATUREONLINESTORE_NAME: nombre de la tienda online que contiene la vista de la función.
  • FEATUREVIEW_NAME: nombre de la vista de características de la que quiere obtener valores de características.
  • ENTITY_ID_PART_1, ENTITY_ID_PART_2 y ENTITY_ID_PART_3: las partes del ID de entidad de las columnas de ID de entidad configuradas para la vista de la función. Estas partes constituyen el ID de entidad único del registro de la función.
  • FORMAT: opcional. El formato en el que quieres obtener los valores de la función. Se admiten los siguientes formatos:
    • KEY_VALUE
    • PROTO_STRUCT

Método HTTP y URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues

Cuerpo JSON de la solicitud:

{
  data_key: { composite_key: { parts: ["ENTITY_ID_PART_1", "ENTITY_ID_PART_2", "ENTITY_ID_PART_3"] } },
  data_format: "FORMAT"
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues"

PowerShell

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente:

key_values {
  features {
    value {
      int64_value: 258348
    }
    name: "feature_0"
  }
  features {
    value {
      double_value: 0.96300036744534068
    }
    name: "feature_1"
  }
  features {
    value {
      double_value: 0.42787383695351083
    }
    name: "feature_2"
  }
  features {
    value {
      double_value: 0.12219888824743128
    }
    name: "feature_3"
  }
  features {
    value {
      double_value: 0.037523154697944622
    }
    name: "feature_4"
  }
  features {
    value {
      double_value: 0.1766952509448767
    }
    name: "feature_5"
  }
}

Python

.

Utilice el siguiente ejemplo para obtener valores de características basados en un ID de entidad específico mediante el servicio online de Bigtable.

from google.cloud import aiplatform
from vertexai.resources.preview.feature_store import FeatureOnlineStore, FeatureView

aiplatform.init(project="PROJECT_ID", location="LOCATION_ID")
fos = FeatureOnlineStore("FEATUREONLINESTORE_NAME")
fv = FeatureView("FEATUREVIEW_NAME", feature_online_store_id=fos.name)
fv.read(["ENTITY_ID_PART_1", "ENTITY_ID_PART_2", "ENTITY_ID_PART_3"])

Haz los cambios siguientes:

  • LOCATION_ID: región en la que se encuentra la tienda online, como us-central1.

  • PROJECT_ID: tu ID de proyecto.

  • FEATUREONLINESTORE_NAME: nombre de la tienda online que contiene la vista de la función.

  • FEATUREVIEW_NAME: nombre de la vista de características de la que quiere obtener valores de características.

  • ENTITY_ID_PART_1, ENTITY_ID_PART_2 y ENTITY_ID_PART_3: las partes del ID de entidad de las columnas de ID de entidad configuradas para la vista de la función. Estas partes constituyen el ID de entidad único del registro de la función.

  • FORMAT: opcional. El formato en el que quieres obtener los valores de la función. Entre los formatos admitidos se incluyen los formatos de pares JSON KEY_VALUE y proto PROTO_STRUCT.

Obtener valores de características de un conjunto de entidades

Utilice el siguiente ejemplo para obtener valores de características especificando un conjunto de IDs de varias columnas de ID de entidad mediante el servicio online de Bigtable.

REST

Para obtener todos los valores de las funciones más recientes de un ID de entidad específico de una instancia de FeatureView, envía una solicitud POST mediante el método featureViews.streamingFetchFeatureValues.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION_ID: región en la que se encuentra la tienda online, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATUREONLINESTORE_NAME: nombre de la tienda online que contiene la vista de la función.
  • FEATUREVIEW_NAME: nombre de la vista de características de la que quiere obtener valores de características.
  • ENTITY_ID_1, ENTITY_ID_2, ENTITY_ID_3 y ENTITY_ID_4: Conjunto de valores de las columnas de ID de los registros de características de los que quieras proporcionar los valores de características más recientes. Ten en cuenta que agrupar los IDs de entidad como varias listas anidadas en una solicitud puede ayudar a reducir la latencia, ya que Vertex AI Feature Store realiza una operación de lectura independiente para cada lista anidada de IDs.

Método HTTP y URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:streamingFetchFeatureValues

Cuerpo JSON de la solicitud:

[
  {
    data_keys: [{key: "ENTITY_ID_1"}, {key: "ENTITY_ID_2"}],
    feature_view: "projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME"
  },
  {
    data_keys: [{key: "ENTITY_ID_3"}, {key: "ENTITY_ID_4"}],
    feature_view: "projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME"
  }
]

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:streamingFetchFeatureValues"

PowerShell

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:streamingFetchFeatureValues" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente:

[data {
  key_values {
    features {
      name: "movies"
      value {
        string_value: "movie_04"
      }
    }
    features {
      name: "feature_timestamp"
      value {
        int64_value: 1631694494000000
      }
    }
  }
  data_key {
    key: "eve"
  }
}
, data {
  key_values {
    features {
      name: "movies"
      value {
        string_value: "movie_03"
      }
    }
    features {
      name: "feature_timestamp"
      value {
        int64_value: 1631612115000000
      }
    }
  }
  data_key {
    key: "alice"
  }
}
data {
  key_values {
    features {
      name: "movies"
      value {
        string_value: "movie_02"
      }
    }
    features {
      name: "feature_timestamp"
      value {
        int64_value: 1631694494000000
      }
    }
  }
  data_key {
    key: "bob"
  }
}
]

Python

.

Utilice el siguiente ejemplo para obtener valores de características de varias columnas de ID de entidad mediante el servicio online de Bigtable.

from google.cloud.aiplatform_v1beta1 import FeatureOnlineStoreServiceClient
from google.cloud.aiplatform_v1beta1.types import feature_online_store_service as feature_online_store_service_pb2

data_client = FeatureOnlineStoreServiceClient(
  client_options={"api_endpoint": f"LOCATION_ID-aiplatform.googleapis.com"}
)

feature_view = "projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME"

keys_list=[
    ["ENTITY_ID_1","ENTITY_ID_2"],
    ["ENTITY_ID_3","ENTITY_ID_4"]
  ]

requests = []

for keys in keys_list:
  requests.append(
    feature_online_store_service_pb2.StreamingFetchFeatureValuesRequest(
      feature_view=feature_view,
      data_keys=[
          feature_online_store_service_pb2.FeatureViewDataKey(key=key)
          for key in keys
      ]
    )
  )

responses = data_client.streaming_fetch_feature_values(
    requests=iter(requests)
)
responses = [response for response in responses]

Haz los cambios siguientes:

  • LOCATION_ID: región en la que se encuentra la tienda online, como us-central1.

  • PROJECT_ID: tu ID de proyecto.

  • FEATUREONLINESTORE_NAME: nombre de la tienda online que contiene la vista de la función.

  • FEATUREVIEW_NAME: nombre de la vista de características de la que quiere obtener valores de características.

  • ENTITY_ID_1, ENTITY_ID_2, ENTITY_ID_3 y ENTITY_ID_4: los IDs de las entidades de las que quiere obtener los valores de las funciones más recientes. Ten en cuenta que agrupar los IDs de entidad en varias listas anidadas en una solicitud puede ayudar a reducir la latencia, ya que Vertex AI Feature Store realiza una operación de lectura independiente para cada lista anidada de IDs.

Obtener valores de características mediante la entrega online optimizada desde un endpoint público

Si ha configurado su instancia de tienda online para que proporcione valores de características mediante el servicio online optimizado desde un endpoint público, debe seguir estos pasos para obtener los valores de características de una vista de características de la tienda online:

  1. Recupera el nombre de dominio del endpoint público de la instancia de FeatureOnlineStore.

  2. Obtener valores de funciones de un ID de entidad mediante el nombre de dominio del endpoint público.

Recuperar el nombre de dominio del endpoint público de la tienda online

Cuando creas y configuras una instancia de tienda online para el servicio online optimizado con un endpoint público, Vertex AI Feature Store genera el nombre de dominio del endpoint público de la tienda online. Antes de poder empezar a publicar valores de características de una vista de características en la tienda online, debe obtener el nombre de dominio del endpoint público de los detalles de la tienda online.

Usa el siguiente ejemplo para obtener los detalles de una instancia de tienda online.

REST

Para obtener los detalles de un recurso FeatureOnlineStore de tu proyecto, envía una solicitud GET mediante el método featureOnlineStores.get.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION_ID: región en la que se encuentra la tienda online, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATUREONLINESTORE_NAME: nombre de la instancia de la tienda online.

Método HTTP y URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME"

PowerShell

Ejecuta el comando siguiente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME_1",
  "createTime": "2023-09-06T23:25:04.256314Z",
  "updateTime": "2023-09-06T23:25:04.256314Z",
  "etag": "AMEw9yMgoV0bAsYuKwVxz4Y7lOmxV7riNVHg217KaQAKORqvdqGCrQ1DIt8yHgoGXf8=",
  "state": "STABLE",
  "dedicatedServingEndpoint": {
    "publicEndpointDomainName": "PUBLIC_ENDPOINT_DOMAIN_NAME"
  },
  "optimized": {}
}

Necesitarás el PUBLIC_ENDPOINT_DOMAIN_NAME de la respuesta para obtener los valores de las funciones en el siguiente paso.

Obtener valores de funciones de un ID de entidad

Después de obtener el nombre de dominio del endpoint público de la instancia de la tienda online, usa el siguiente ejemplo para obtener los valores de las funciones de un ID de entidad específico mediante el servicio online optimizado.

REST

Para obtener todos los valores de las funciones más recientes de un ID de entidad específico de una instancia de FeatureView, envía una solicitud POST mediante el método featureViews.fetchFeatureValues.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PUBLIC_ENDPOINT_DOMAIN_NAME: nombre de dominio del endpoint público de la instancia de la tienda online que has obtenido con el método featureOnlineStores.get.
  • LOCATION_ID: región en la que se encuentra la tienda online, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATUREONLINESTORE_NAME: nombre de la tienda online que contiene la vista de la función.
  • FEATUREVIEW_NAME: nombre de la vista de características de la que quiere obtener valores de características.
  • ENTITY_ID: valor de la columna ID del registro de la función del que quiere obtener los valores más recientes.
  • FORMAT: opcional. Es el formato que se usa para obtener los valores de la función. Se admiten los siguientes formatos:
    • KEY_VALUE
    • PROTO_STRUCT

Método HTTP y URL:

POST https://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues

Cuerpo JSON de la solicitud:

{
  data_key: { key: "ENTITY_ID" },
  data_format: "FORMAT"
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues"

PowerShell

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente:

key_values {
  features {
    value {
      int64_value: 258348
    }
    name: "feature_0"
  }
  features {
    value {
      double_value: 0.96300036744534068
    }
    name: "feature_1"
  }
  features {
    value {
      double_value: 0.42787383695351083
    }
    name: "feature_2"
  }
  features {
    value {
      double_value: 0.12219888824743128
    }
    name: "feature_3"
  }
  features {
    value {
      double_value: 0.037523154697944622
    }
    name: "feature_4"
  }
  features {
    value {
      double_value: 0.1766952509448767
    }
    name: "feature_5"
  }
}

Python

Usa el siguiente ejemplo para obtener valores de características basados en un ID de entidad específico mediante el servicio online optimizado.

from google.cloud.aiplatform_v1 import FeatureOnlineStoreServiceClient
from google.cloud.aiplatform_v1.types import feature_online_store_service as feature_online_store_service_pb2

data_client = FeatureOnlineStoreServiceClient(
  client_options={"api_endpoint": f"PUBLIC_ENDPOINT_DOMAIN_NAME"}
)
data_client.fetch_feature_values(
  request=feature_online_store_service_pb2.FetchFeatureValuesRequest(
    feature_view=f"projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME",
    data_key=feature_online_store_service_pb2.FeatureViewDataKey(key=f"ENTITY_ID"),
    data_format=feature_online_store_service_pb2.FeatureViewDataFormat.FORMAT,
  )
)

Haz los cambios siguientes:

  • PUBLIC_ENDPOINT_DOMAIN_NAME: nombre de dominio del endpoint público de la instancia de la tienda online que has obtenido con el método featureOnlineStores.get.

  • LOCATION_ID: región en la que se encuentra la tienda online, como us-central1.

  • PROJECT_ID: tu ID de proyecto.

  • FEATUREONLINESTORE_NAME: nombre de la tienda online que contiene la vista de la función.

  • FEATUREVIEW_NAME: nombre de la vista de características de la que quiere obtener valores de características.

  • ENTITY_ID: valor de la columna ID del registro de la función del que quiere obtener los valores más recientes.

  • FORMAT: opcional. El formato en el que quieres obtener los valores de la función. Entre los formatos admitidos se incluyen los formatos de pares JSON KEY_VALUE y proto PROTO_STRUCT.

Obtener valores de características mediante el servicio online optimizado desde un endpoint de Private Service Connect

Si ha configurado su instancia de tienda online para que proporcione valores de características mediante la opción de servicio online optimizado desde un punto final de Private Service Connect, debe seguir estos pasos para obtener valores de características de una vista de características de la tienda online:

  1. Recupera la configuración de Private Service Connect de la instancia FeatureOnlineStore.

  2. Añade un endpoint de Private Service Connect a tu configuración de red.

  3. Conéctate al endpoint de Private Service Connect a través de gRPC.

  4. Obtener los valores de las funciones de un ID de entidad.

Recuperar la cadena de adjunto de servicio de la tienda online

Cuando creas y configuras una instancia de tienda online para el servicio online optimizado con un endpoint de Private Service Connect, Vertex AI Feature Store genera una cadena de vinculación de servicio que puedes usar para configurar el endpoint de Private Service Connect. Puedes obtener la cadena de adjunto de servicio de los detalles de la tienda online.

Usa el siguiente ejemplo para obtener los detalles de una instancia de tienda online.

REST

Para obtener los detalles de un recurso FeatureOnlineStore de tu proyecto, envía una solicitud GET mediante el método featureOnlineStores.get.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION_ID: región en la que se encuentra la tienda online, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATUREONLINESTORE_NAME: nombre de la instancia de la tienda online.

Método HTTP y URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME"

PowerShell

Ejecuta el comando siguiente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME_1",
  "createTime": "2023-09-06T23:25:04.256314Z",
  "updateTime": "2023-09-06T23:25:04.256314Z",
  "etag": "AMEw9yMgoV0bAsYuKwVxz4Y7lOmxV7riNVHg217KaQAKORqvdqGCrQ1DIt8yHgoGXf8=",
  "state": "STABLE",
  "dedicatedServingEndpoint": {
    "privateServiceConnectConfig": {
      "enablePrivateServiceConnect": "true",
      "projectAllowlist": [
        "PROJECT_NAME"
      ]
    },
    serviceAttachment: "SERVICE_ATTACHMENT_STRING"
  },
  "optimized": {}
}

Necesitarás el SERVICE_ATTACHMENT_STRING de la respuesta para obtener los valores de las características en el siguiente paso.

Añadir un endpoint para Private Service Connect

Para añadir un endpoint de Private Service Connect para el servicio online optimizado a la configuración de tu red, sigue estos pasos:

  1. En la Google Cloud consola, selecciona el proyecto que contiene la instancia de la tienda online.

  2. Crea un punto final para Private Service Connect especificando el SERVICE_ATTACHMENT_STRING como Servicio de destino. Para obtener información sobre cómo crear un endpoint para Private Service Connect, consulta Crear un endpoint.

Una vez que hayas creado el punto final, aparecerá en la pestaña Puntos finales conectados de la página Private Service Connect. La dirección IP del endpoint aparece en la columna Direcciones IP.

Ir a la pestaña Puntos finales conectados

Deberás usar esta dirección IP para conectarte al endpoint de tu instancia de tienda online al endpoint de Private Service Connect a través de gRPC en el siguiente paso.

Conectarse al endpoint de Private Service Connect a través de gRPC

Usa el siguiente fragmento de código para conectarte al endpoint de Private Service Connect creado para tu tienda online a través de gRPC.

Python

from google.cloud.aiplatform_v1 import FeatureOnlineStoreServiceClient
from google.cloud.aiplatform_v1.services.feature_online_store_service.transports.grpc import FeatureOnlineStoreServiceGrpcTransport
import grpc

data_client = FeatureOnlineStoreServiceClient(
  transport = FeatureOnlineStoreServiceGrpcTransport(
    # Add the IP address of the Endpoint you just created.
    channel = grpc.insecure_channel("ENDPOINT_IP:10002")
  )
)

Haz los cambios siguientes:

  • ENDPOINT_IP: la dirección IP del endpoint de la columna Direcciones IP de la página Private Service Connect.

Obtener valores de funciones de un ID de entidad

Una vez que te hayas conectado al endpoint de Private Service Connect a través de gRPC, usa el siguiente ejemplo para obtener los valores de las funciones de un ID de entidad específico mediante el servicio online optimizado.

Python

data_client.fetch_feature_values(
  request=feature_online_store_service_pb2.FetchFeatureValuesRequest(
  feature_view=f"projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME",
  data_key=feature_online_store_service_pb2.FeatureViewDataKey(ENTITY_ID),
  data_format=feature_online_store_service_pb2.FeatureViewDataFormat.PROTO_STRUCT,
  )
)

Haz los cambios siguientes:

  • LOCATION_ID: región en la que se encuentra la tienda online, como us-central1.

  • PROJECT_ID: tu ID de proyecto.

  • FEATUREONLINESTORE_NAME: nombre de la tienda online que contiene la vista de la función.

  • FEATUREVIEW_NAME: nombre de la vista de características de la que quiere obtener valores de características.

  • ENTITY_ID: valor de la columna ID del registro de la función del que quiere obtener los valores más recientes.

  • FORMAT: opcional. El formato en el que quieres obtener los valores de la función. Se admiten formatos como el par clave-valor JSON y el formato proto Struct. Ten en cuenta que el formato proto Struct no admite el tipo de valor de función de bytes. Si quieres obtener valores de características con formato de bytes, usa JSON como formato de respuesta.

Siguientes pasos