Diffuser des valeurs de caractéristiques

Vertex AI Feature Store vous permet de diffuser des valeurs de caractéristiques en ligne à partir d'une vue de caractéristiques au sein d'un magasin en ligne. Par exemple, vous pouvez diffuser des valeurs de caractéristiques à partir d'une vue de caractéristiques pour les prédictions en ligne. Une vue de caractéristiques doit être synchronisée au moins une fois pour que vous puissiez diffuser des caractéristiques en ligne à partir de cette vue de caractéristiques.

Si la vue de caractéristiques est définie en fonction de groupes de caractéristiques et de caractéristiques, Vertex AI Feature Store extrait les dernières valeurs des caractéristiques correspondant à un ID d'entité spécifique. Si la colonne "ID" contient plusieurs enregistrements avec la même valeur, Vertex AI Feature Store récupère les valeurs de caractéristiques non nulles les plus récentes, en se basant sur la colonne feature_timestamp.

Si la vue de caractéristiques est directement associée à une source de données BigQuery sans association avec des groupes de caractéristiques et des caractéristiques, Vertex AI Feature Store récupère toutes les valeurs des caractéristiques de la source de données. Dans ce cas, chaque ligne de la source de données doit contenir un ID unique.

Vous ne pouvez diffuser les valeurs de caractéristiques que d'un ID par requête.

Selon le type de diffusion en ligne configuré pour votre magasin en ligne, vous pouvez diffuser des valeurs de caractéristiques de l'une des manières suivantes :

Extraire les valeurs de caractéristiques à l'aide de la diffusion en ligne Bigtable

Utilisez l'exemple suivant pour récupérer des valeurs de caractéristiques sur la base d'un ID d'entité spécifique avec la diffusion en ligne Bigtable.

REST

Pour récupérer toutes les dernières valeurs de caractéristiques pour un ID d'entité spécifique à partir d'une instance FeatureView, envoyez une requête POST en utilisant la méthode featureViews.fetchFeatureValues.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • LOCATION_ID : région où se trouve la boutique en ligne, par exemple us-central1.
  • PROJECT_ID : ID de votre projet
  • FEATUREONLINESTORE_NAME : nom de la boutique en ligne contenant la vue de la caractéristiques.
  • FEATUREVIEW_NAME : nom de la vue de caractéristiques à partir de laquelle vous souhaitez diffuser les valeurs de caractéristiques.
  • ENTITY_ID : valeur de la colonne "ID" dans l'enregistrement de caractéristiques à partir duquel vous souhaitez diffuser les dernières valeurs de caractéristiques.
  • FORMAT (facultatif) : format dans lequel vous souhaitez récupérer les valeurs des caractéristiques. Les formats acceptés incluent les paires clé-valeur JSON et les formats proto Struct.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Vous devriez recevoir une réponse JSON de ce type :

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

Utilisez l'exemple suivant pour extraire des valeurs de caractéristiques sur la base d'un ID d'entité spécifique avec l'inférence en ligne Bigtable.

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"LOCATION_ID-aiplatform.googleapis.com"}
)
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="ENTITY_ID"),
    data_format=feature_online_store_service_pb2.FeatureViewDataFormat.FORMAT,
  )
)

Remplacez les éléments suivants :

  • LOCATION_ID : région où se trouve la boutique en ligne, par exemple us-central1.

  • PROJECT_ID : ID de votre projet

  • FEATUREONLINESTORE_NAME : nom de la boutique en ligne contenant la vue de la caractéristiques.

  • FEATUREVIEW_NAME : nom de la vue de caractéristiques à partir de laquelle vous souhaitez diffuser les valeurs de caractéristiques.

  • ENTITY_ID : valeur de la colonne "ID" dans l'enregistrement de caractéristiques à partir duquel vous souhaitez diffuser les dernières valeurs de caractéristiques.

  • FORMAT (facultatif) : format dans lequel vous souhaitez récupérer les valeurs des caractéristiques. Les formats acceptés incluent les paires KEY_VALUE JSON et les formats proto PROTO_STRUCT.

Extraire les valeurs de caractéristiques à l'aide de la diffusion en ligne optimisée à partir d'un point de terminaison public

Si vous avez configuré votre instance de magasin en ligne pour diffuser des valeurs de caractéristiques à l'aide de la diffusion en ligne optimisée à partir d'un point de terminaison public, vous devez effectuer les étapes suivantes pour extraire les valeurs de caractéristiques à partir d'une vue de caractéristiques au sein du magasin en ligne :

  1. Récupérez le nom de domaine du point de terminaison public pour l'instance FeatureOnlineStore.

  2. Extrayez les valeurs de caractéristiques à partir d'un ID d'entité à l'aide du nom de domaine du point de terminaison public.

Récupérer le nom de domaine du point de terminaison public pour la boutique en ligne

Lorsque vous créez et configurez une instance de magasin en ligne pour une diffusion en ligne optimisée à partir d'un point de terminaison public, Vertex AI Feature Store génère le nom de domaine du point de terminaison public pour le magasin en ligne. Avant de pouvoir diffuser des valeurs de caractéristiques à partir d'une vue de caractéristiques du magasin en ligne, vous devez récupérer le nom de domaine du point de terminaison public à partir des détails du magasin en ligne.

Basez-vous sur l'exemple suivant pour récupérer les détails d'une instance de magasin en ligne.

REST

Pour récupérer les détails d'une ressource FeatureOnlineStore au sein de votre projet, envoyez une requête GET à l'aide de la méthode featureOnlineStores.get.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • LOCATION_ID : région où se trouve la boutique en ligne, par exemple us-central1.
  • PROJECT_ID : ID de votre projet
  • FEATUREONLINESTORE_NAME : nom de l'instance de magasin en ligne.

Méthode HTTP et URL :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Exécutez la commande suivante :

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

PowerShell

Exécutez la commande suivante :

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

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

Vous devriez recevoir une réponse JSON de ce type :

{
  "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": {}
}

Vous aurez besoin de la valeur PUBLIC_ENDPOINT_DOMAIN_NAME, fournie dans la réponse, pour extraire les valeurs de caractéristiques à l'étape suivante.

Extraire les valeurs de caractéristiques à partir d'un ID d'entité

Après avoir récupéré le nom de domaine du point de terminaison public pour l'instance de magasin en ligne, utilisez l'exemple suivant pour récupérer les valeurs de caractéristiques pour un ID d'entité spécifique à l'aide de la diffusion en ligne optimisée.

REST

Pour extraire toutes les dernières valeurs de caractéristiques pour un ID d'entité spécifique à partir d'une instance FeatureView, envoyez une requête POST en utilisant la méthode featureViews.fetchFeatureValues.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PUBLIC_ENDPOINT_DOMAIN_NAME : nom de domaine du point de terminaison public pour l'instance de magasin en ligne, que vous avez récupéré à l'aide de la méthode featureOnlineStores.get.
  • LOCATION_ID : région où se trouve la boutique en ligne, par exemple us-central1.
  • PROJECT_ID : ID de votre projet
  • FEATUREONLINESTORE_NAME : nom de la boutique en ligne contenant la vue de la caractéristiques.
  • FEATUREVIEW_NAME : nom de la vue de caractéristiques à partir de laquelle vous souhaitez diffuser les valeurs de caractéristiques.
  • ENTITY_ID : valeur de la colonne "ID" dans l'enregistrement de caractéristiques à partir duquel vous souhaitez diffuser les dernières valeurs de caractéristiques.
  • FORMAT (facultatif) : format dans lequel vous souhaitez récupérer les valeurs des caractéristiques. Les formats acceptés incluent les paires clé-valeur JSON et les formats proto Struct.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  id: "ENTITY_ID",
  data_format: "FORMAT"
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Vous devriez recevoir une réponse JSON de ce type :

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

Utilisez l'exemple suivant pour récupérer des valeurs de caractéristiques sur la base d'un ID d'entité spécifique avec la diffusion en ligne optimisée.

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",
    id=f"ENTITY_ID",
    format=feature_online_store_service_pb2.FetchFeatureValuesRequest.Format.FORMAT,
  )
)

Remplacez les éléments suivants :

  • PUBLIC_ENDPOINT_DOMAIN_NAME : nom de domaine du point de terminaison public pour l'instance de magasin en ligne, que vous avez récupéré à l'aide de la méthode featureOnlineStores.get.

  • LOCATION_ID : région où se trouve la boutique en ligne, par exemple us-central1.

  • PROJECT_ID : ID de votre projet

  • FEATUREONLINESTORE_NAME : nom de la boutique en ligne contenant la vue de la caractéristiques.

  • FEATUREVIEW_NAME : nom de la vue de caractéristiques à partir de laquelle vous souhaitez diffuser les valeurs de caractéristiques.

  • ENTITY_ID : valeur de la colonne "ID" dans l'enregistrement de caractéristiques à partir duquel vous souhaitez diffuser les dernières valeurs de caractéristiques.

  • FORMAT (facultatif) : format dans lequel vous souhaitez récupérer les valeurs des caractéristiques. Les formats acceptés incluent les paires KEY_VALUE JSON et les formats proto PROTO_STRUCT.

Extraire les valeurs de caractéristiques à l'aide de la diffusion en ligne optimisée à partir d'un point de terminaison Private Service Connect

Si vous avez configuré votre instance de magasin en ligne pour diffuser des valeurs de caractéristiques à l'aide de la diffusion en ligne optimisée à partir d'un point de terminaison Private Service Connect, vous devez effectuer les étapes suivantes pour extraire les valeurs de caractéristiques à partir d'une vue de caractéristiques au sein du magasin en ligne :

  1. Récupérez la configuration Private Service Connect pour l'instance FeatureOnlineStore.

  2. Ajoutez un point de terminaison pour Private Service Connect à votre configuration réseau.

  3. Connectez-vous au point de terminaison Private Service Connect via gRPC.

  4. Extrayez les valeurs de caractéristiques à partir d'un ID d'entité.

Récupérer la chaîne de rattachement de service pour le magasin en ligne

Lorsque vous créez et configurez une instance de magasin en ligne pour une diffusion en ligne optimisée à partir d'un point de terminaison Private Service Connect, Vertex AI Feature Store génère une chaîne de rattachement de service que vous pouvez utiliser pour configurer le point de terminaison Private Service Connect. Vous pouvez récupérer la chaîne de rattachement de service à partir des détails du magasin en ligne.

Basez-vous sur l'exemple suivant pour récupérer les détails d'une instance de magasin en ligne.

REST

Pour récupérer les détails d'une ressource FeatureOnlineStore au sein de votre projet, envoyez une requête GET à l'aide de la méthode featureOnlineStores.get.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • LOCATION_ID : région où se trouve la boutique en ligne, par exemple us-central1.
  • PROJECT_ID : ID de votre projet
  • FEATUREONLINESTORE_NAME : nom de l'instance de magasin en ligne.

Méthode HTTP et URL :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Exécutez la commande suivante :

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

PowerShell

Exécutez la commande suivante :

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

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

Vous devriez recevoir une réponse JSON de ce type :

{
  "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": {}
}

Vous aurez besoin de la valeur SERVICE_ATTACHMENT_STRING, fournie dans la réponse, pour extraire les valeurs de caractéristiques à l'étape suivante.

Ajouter un point de terminaison pour Private Service Connect

Procédez comme suit pour ajouter à votre configuration réseau un point de terminaison Private Service Connect pour la diffusion en ligne optimisée :

  1. Dans la console Google Cloud, sélectionnez le projet contenant l'instance de magasin en ligne.

  2. Créez un point de terminaison pour Private Service Connect en spécifiant SERVICE_ATTACHMENT_STRING comme étant le service cible. Pour en savoir plus sur la création d'un point de terminaison pour Private Service Connect, consultez la page Créer un point de terminaison.

Une fois le point de terminaison créé, il apparaît dans l'onglet Points de terminaison connectés sur la page Private Service Connect. L'adresse IP du point de terminaison apparaît dans la colonne Adresses IP.

Accéder à l'onglet "Points de terminaison connectés"

Vous devrez utiliser cette adresse IP pour vous connecter au point de terminaison Private Service Connect créé pour votre instance de magasin en ligne via gRPC à l'étape suivante.

Se connecter au point de terminaison Private Service Connect via gRPC

Utilisez l'exemple de code suivant pour vous connecter au point de terminaison Private Service Connect créé pour votre magasin en ligne via gRPC.

Python

from google.cloud.aiplatform_v1beta1 import FeatureOnlineStoreServiceClient
from google.cloud.aiplatform_v1beta1.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")
  )
)

Remplacez les éléments suivants :

  • ENDPOINT_IP : adresse IP du point de terminaison dans la colonne Adresses IP de la page Private Service Connect.

Extraire les valeurs de caractéristiques à partir d'un ID d'entité

Une fois que vous êtes connecté au point de terminaison Private Service Connect via gRPC, utilisez l'exemple suivant pour extraire des valeurs de caractéristiques pour un ID d'entité spécifique à l'aide de la diffusion en ligne optimisée.

Python

data_client.fetch_feature_values(
  feature_view=f"projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME", id=ENTITY_ID)

Remplacez les éléments suivants :

  • LOCATION_ID : région où se trouve la boutique en ligne, par exemple us-central1.

  • PROJECT_ID : ID de votre projet

  • FEATUREONLINESTORE_NAME : nom de la boutique en ligne contenant la vue de la caractéristiques.

  • FEATUREVIEW_NAME : nom de la vue de caractéristiques à partir de laquelle vous souhaitez diffuser les valeurs de caractéristiques.

  • ENTITY_ID : valeur de la colonne "ID" dans l'enregistrement de caractéristiques à partir duquel vous souhaitez diffuser les dernières valeurs de caractéristiques.

  • FORMAT (facultatif) : format dans lequel vous souhaitez récupérer les valeurs des caractéristiques. Les formats acceptés incluent les paires clé-valeur JSON et les formats proto Struct.

Étapes suivantes