Gérer les magasins de caractéristiques

Découvrez comment créer, répertorier, décrire, mettre à jour et supprimer des featurestores. Un magasin de fonctionnalités (également appelé featurestore) est le conteneur de premier niveau pour les types d'entités, les caractéristiques et les valeurs de caractéristiques.

Stockage en ligne et hors connexion

Vertex AI Feature Store (ancien) utilise deux méthodes de stockage classées comme stockage en ligne et stockage hors connexion, qui sont facturées différemment. Tous les magasins de caractéristiques disposent d'un stockage hors connexion et, éventuellement, d'un stockage en ligne.

Le stockage en ligne conserve les dernières valeurs d'horodatage de vos fonctionnalités afin de gérer efficacement les requêtes de diffusion en ligne. Lorsque vous exécutez une tâche d'importation en utilisant l'API, vous pouvez choisir d'écrire ou non les données dans le magasin en ligne. Le fait d'omettre le magasin en ligne évite toute charge sur les nœuds de diffusion en ligne. Par exemple, lorsque vous exécutez des tâches de remplissage, vous pouvez désactiver les opérations d'écriture dans le magasin en ligne et écrire uniquement dans le magasin hors connexion. Pour plus d'informations, consultez la section sur l'option disableOnlineServing dans la documentation de référence de l'API.

Vertex AI Feature Store (ancien) utilise le stockage hors connexion pour stocker les données de manière permanente jusqu'à ce qu'elles atteignent leur limite de conservation ou jusqu'à ce que vous les supprimiez. Vous pouvez stocker des données en quantité illimitée dans le magasin hors connexion. Vous pouvez contrôler les coûts de stockage hors connexion en gérant la quantité de données que vous conservez. Vous pouvez également remplacer la limite par défaut de conservation des données du magasin en ligne pour votre magasin de caractéristiques et la limite de conservation des données hors connexion pour un type d'entité. En savoir plus sur les quotas et limites de Vertex AI Feature Store (ancien)

Utilisez la console Google Cloud pour afficher les quantités d'espace de stockage en ligne et hors connexion que vous utilisez actuellement. Affichez les métriques de surveillance Espace de stockage en ligne total et Espace de stockage hors connexion total de votre magasin de fonctionnalités afin de déterminer votre utilisation d'espace de stockage.

Nœuds de diffusion en ligne

Ces nœuds de diffusion en ligne fournissent les ressources de calcul permettant de stocker et de diffuser les valeurs de fonctionnalités pour une diffusion en ligne à faible latence. Ces nœuds sont toujours en cours d'exécution, même lorsqu'ils ne diffusent pas de données. Vous êtes facturé pour chaque heure de nœud.

La limite de stockage pour les nœuds de diffusion en ligne est de 5 To par nœud. En savoir plus sur les quotas et limites de Vertex AI Feature Store (ancien)

Le nombre de nœuds de diffusion en ligne dont vous avez besoin est directement proportionnel aux deux facteurs suivants :

  • Nombre de requêtes de diffusion en ligne (requêtes par seconde) reçues par le magasin de caractéristiques.
  • Nombre de jobs d'importation qui écrivent dans l'espace de stockage en ligne.

Ces deux facteurs contribuent à l'utilisation du processeur et aux performances des nœuds. Dans Google Cloud Console, affichez les métriques suivantes :

  • Requêtes par seconde : nombre de requêtes par seconde dans votre magasin de caractéristiques.
  • Nombre de nœuds : nombre de nœuds de diffusion en ligne.
  • Utilisation du processeur : utilisation de vos nœuds par le processeur.

Si l'utilisation du processeur est systématiquement élevée, envisagez d'augmenter le nombre de nœuds de diffusion en ligne de votre magasin de fonctionnalités.

Tester les performances des nœuds de diffusion en ligne

Vous pouvez tester les performances des nœuds de diffusion en ligne pour la publication de caractéristiques en temps réel. Cela vous permet de vous assurer que le magasin de caractéristiques dispose de suffisamment de ressources de machine pour fonctionner dans les limites de seuils de RPS ou de latence prédéterminés. Vous pouvez effectuer ces tests en fonction de divers paramètres d'analyse comparative, tels que le RPS, la latence et l'API. Pour obtenir des instructions et des bonnes pratiques pour tester les performances des nœuds de diffusion en ligne, consultez la section Tester les performances des nœuds de diffusion en ligne pour la diffusion en temps réel de la page Bonnes pratiques pour Vertex AI Feature Store (ancien).

Vous pouvez également utiliser l'outil Open Source Vertex AI Benchmarker pour effectuer un test de charge des performances de vos ressources de magasin de caractéristiques. L'outil Open Source Vertex AI Benchmarker comprend un outil de ligne de commande Python et un nœud de calcul Java.

Options de scaling

Vous pouvez basculer entre les options suivantes pour configurer le nombre de nœuds de diffusion en ligne :

  • Autoscaling

    Si vous choisissez l'autoscaling, le magasin de caractéristiques modifie automatiquement le nombre de nœuds en fonction de l'utilisation du processeur. L'autoscaling analyse les modèles de trafic afin de maintenir les performances et d'optimiser vos coûts en ajoutant ou en supprimant des nœuds lorsque le trafic augmente ou diminue, respectivement.

    L'autoscaling fonctionne bien avec les modèles de trafic caractérisés par une croissance et une diminution progressives de la quantité de trafic. Si vous utilisez fréquemment Vertex AI Feature Store (ancien) pour les modèles de trafic qui connaissent des fluctuations de charge fréquentes, utilisez l'autoscaling pour optimiser les coûts.

  • Attribuer un nombre fixe de nœuds

    Si vous allouez un nombre fixe de nœuds, Vertex AI Feature Store (ancien) conserve un nombre cohérent de nœuds, quels que soient les modèles de trafic. Utiliser un nombre de nœuds fixes permet de maintenir des coûts prévisibles et des performances correctes, tant que le nombre de nœuds est suffisant pour gérer le trafic. Vous pouvez modifier manuellement le nombre fixe de nœuds afin de gérer les variations des modèles de trafic.

Informations complémentaires sur l'autoscaling

Si vous choisissez l'autoscaling, vous devez tenir compte des quatre points supplémentaires suivants :

  • Après avoir ajouté des nœuds de diffusion en ligne, le magasin en ligne a besoin de temps pour rééquilibrer les données. Il peut s'écouler jusqu'à 20 minutes avant que vous ne constatiez une amélioration significative des performances. Par conséquent, le scaling du nombre de nœuds peut ne pas être efficace pour les pics de trafic soudains. Cette limitation s'applique à la fois au scaling manuel et à l'autoscaling.

  • Si vous envoyez des requêtes de diffusion en ligne au magasin de caractéristiques sans nœuds de diffusion en ligne, l'opération renvoie une erreur.

Désactiver la diffusion en ligne dans votre magasin de caractéristiques

Si vous n'avez pas besoin de la diffusion en ligne et que vous souhaitez éviter que des frais ne soient facturés pour les nœuds de diffusion en ligne, définissez le nombre de nœuds de diffusion en ligne sur zéro. Pour désactiver la diffusion en ligne dans votre magasin de caractéristiques, définissez la configuration suivante :

  1. Si vous utilisez l'autoscaling, supprimez le paramètre scaling.

  2. Définissez le nombre fixe de nœuds de diffusion en ligne sur 0.

Pour découvrir comment créer un magasin de caractéristiques, consultez la page Créer un magasin de caractéristiques. Pour découvrir comment modifier la configuration d'un magasin de caractéristiques existant, consultez la page Mettre à jour un magasin de caractéristiques.

Si vous définissez le nombre de nœuds de diffusion en ligne sur 0, l'intégralité du magasin en ligne, y compris ses données, est supprimé. Si vous souhaitez désactiver temporairement votre magasin en ligne, puis le restaurer, vous devez importer à nouveau les données supprimées.

Par exemple, si vous définissez le nombre de nœuds de diffusion en ligne sur 0 pour votre magasin de caractéristiques, puis que vous provisionnez des nœuds de diffusion en ligne en définissant le nombre de nœuds sur 1 ou plus, Vertex AI Feature Store (ancien) ne migre pas les données des caractéristiques supprimées vers le magasin en ligne. Pour recréer votre magasin en ligne, vous devez importer à nouveau vos données. Pour importer à nouveau vos données, exportez les données historiques avant de désactiver les nœuds de diffusion en ligne, puis importez les données exportées après avoir provisionné les nœuds.

Lorsque vous provisionnez des nœuds de diffusion en ligne, vous devez attendre la fin de l'opération avant d'importer de nouvelles données. Les jobs d'importation en cours ne reprennent qu'une fois le provisionnement des nœuds de diffusion en ligne terminé.

Si vous envoyez une requête de diffusion en ligne au magasin de caractéristiques sans nœuds de diffusion en ligne, la requête affiche une erreur.

Créer un magasin de caractéristiques

Créez une ressource featurestore pour contenir les types d'entités et les caractéristiques. L'emplacement de votre featurestore doit se trouver dans la même zone que vos données sources. Par exemple, si votre magasin de caractéristiques se trouve dans us-central,, vous pouvez importer des données à partir de fichiers se trouvant dans des buckets Cloud Storage situés dans us-central1 ou dans l'emplacement multirégional États-Unis, même si les données sources provenant de buckets birégionaux ne sont pas acceptées. De même, pour BigQuery, vous pouvez importer des données issues de tables situées dans us-central1 ou dans l'emplacement multirégional États-Unis. Pour en savoir plus, consultez la page Exigences liées aux données sources.

La disponibilité de Vertex AI Feature Store (ancien) peut varier selon l'emplacement. Pour en savoir plus, consultez la section Fonctionnalités disponibles.

UI Web

Vous pouvez créer un magasin de caractéristiques à l'aide de la console Google Cloud si aucun magasin de caractéristiques n'a été créé dans le projet Google Cloud pour la région sélectionnée. Si un magasin de caractéristiques existe déjà pour le projet et la région, utilisez une autre méthode.

Pour créer un magasin de caractéristiques à l'aide de la console Google Cloud, procédez comme suit :

  1. Dans la section "Vertex AI" de Google Cloud Console, accédez à la page Caractéristiques.

    Accéder à la page "Caractéristiques"

  2. Cliquez sur Créer un magasin de caractéristiques
  3. Spécifiez le nom du magasin de caractéristiques.
  4. Si vous souhaitez activer la diffusion en ligne pour le magasin de caractéristiques, cliquez sur le bouton Activer la diffusion en ligne et définissez les options de scaling.
    Pour en savoir plus sur les options de livraison de caractéristiques en ligne et de scaling, consultez Nœuds de livraison en ligne.
  5. Cliquez sur Créer.

Terraform

L'exemple suivant utilise la ressource Terraform google_vertex_ai_featurestore pour créer un magasin de caractéristiques avec un nombre de nœuds fixe. Le nom du featurestore est featurestore_xxxxxxxx, où xxxxxxxx est un identifiant alphanumérique généré de manière aléatoire.

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

# Featurestore name must be unique for the project
resource "random_id" "featurestore_name_suffix" {
  byte_length = 8
}

resource "google_vertex_ai_featurestore" "main" {
  name   = "featurestore_${random_id.featurestore_name_suffix.hex}"
  region = "us-central1"
  labels = {
    environment = "testing"
  }

  online_serving_config {
    fixed_node_count = 1
  }

  force_destroy = true
}

REST

Pour créer un featurestore, envoyez une requête POST à l'aide de la méthode featurestores.create.

L'exemple suivant crée un featurestore avec un nombre fixe de nœuds de 1. Le nombre de nœuds spécifie le nombre de nœuds de diffusion en ligne, ce qui affecte le nombre de requêtes de diffusion en ligne que le featurestore peut gérer. La latence peut augmenter si le nombre de nœuds ne peut pas accepter le nombre de requêtes entrantes.

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

  • LOCATION_ID : région dans laquelle le featurestore est créé. Exemple :us-central1
  • PROJECT_ID : l'ID de votre projet.
  • FEATURESTORE_ID : ID du featurestore.

Méthode HTTP et URL :

POST http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores?featurestoreId=FEATURESTORE_ID

Corps JSON de la requête :

{
  "online_serving_config": {
    "fixed_node_count": 1
  },
  "labels": {
    "environment": "testing"
  }
}

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 \
"http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores?featurestoreId=FEATURESTORE_ID"

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 "http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores?featurestoreId=FEATURESTORE_ID" | Select-Object -Expand Content

Des résultats semblables aux lignes suivantes devraient s'afficher : Vous pouvez utiliser OPERATION_ID dans la réponse pour obtenir l'état de l'opération.

{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateFeaturestoreOperationMetadata",
    "genericMetadata": {
      "createTime": "2021-02-26T00:44:40.722474Z",
      "updateTime": "2021-02-26T00:44:40.722474Z"
    }
  }
}

Python

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

from google.cloud import aiplatform

def create_featurestore_sample(
    project: str,
    location: str,
    featurestore_id: str,
    online_store_fixed_node_count: int = 1,
    sync: bool = True,
):

    aiplatform.init(project=project, location=location)

    fs = aiplatform.Featurestore.create(
        featurestore_id=featurestore_id,
        online_store_fixed_node_count=online_store_fixed_node_count,
        sync=sync,
    )

    fs.wait()

    return fs

Python

La bibliothèque cliente pour Vertex AI est incluse lorsque vous installez le SDK Vertex AI pour Python. Pour savoir comment installer le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API SDK Vertex AI pour Python.

from google.cloud import aiplatform

def create_featurestore_sample(
    project: str,
    featurestore_id: str,
    fixed_node_count: int = 1,
    location: str = "us-central1",
    api_endpoint: str = "us-central1-aiplatform.googleapis.com",
    timeout: int = 1200,
):
    # The AI Platform services require regional API endpoints, which need to be
    # in the same region or multi-region overlap with the Feature Store location.
    client_options = {"api_endpoint": api_endpoint}
    # Initialize client that will be used to create and send requests.
    # This client only needs to be created once, and can be reused for multiple requests.
    client = aiplatform.gapic.FeaturestoreServiceClient(client_options=client_options)
    parent = f"projects/{project}/locations/{location}"
    create_featurestore_request = aiplatform.gapic.CreateFeaturestoreRequest(
        parent=parent,
        featurestore_id=featurestore_id,
        featurestore=aiplatform.gapic.Featurestore(
            online_serving_config=aiplatform.gapic.Featurestore.OnlineServingConfig(
                fixed_node_count=fixed_node_count,
            ),
        ),
    )
    lro_response = client.create_featurestore(request=create_featurestore_request)
    print("Long running operation:", lro_response.operation.name)
    create_featurestore_response = lro_response.result(timeout=timeout)
    print("create_featurestore_response:", create_featurestore_response)

Java

Avant d'essayer cet exemple, suivez les instructions de configuration pour Java décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Java.

Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.aiplatform.v1.CreateFeaturestoreOperationMetadata;
import com.google.cloud.aiplatform.v1.CreateFeaturestoreRequest;
import com.google.cloud.aiplatform.v1.Featurestore;
import com.google.cloud.aiplatform.v1.Featurestore.OnlineServingConfig;
import com.google.cloud.aiplatform.v1.Featurestore.OnlineServingConfig.Scaling;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings;
import com.google.cloud.aiplatform.v1.LocationName;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class CreateFeaturestoreSample {

  public static void main(String[] args)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "YOUR_PROJECT_ID";
    String featurestoreId = "YOUR_FEATURESTORE_ID";
    int minNodeCount = 1;
    int maxNodeCount = 5;
    String location = "us-central1";
    String endpoint = "us-central1-aiplatform.googleapis.com:443";
    int timeout = 900;
    createFeaturestoreSample(
        project, featurestoreId, minNodeCount, maxNodeCount, location, endpoint, timeout);
  }

  static void createFeaturestoreSample(
      String project,
      String featurestoreId,
      int minNodeCount,
      int maxNodeCount,
      String location,
      String endpoint,
      int timeout)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {

    FeaturestoreServiceSettings featurestoreServiceSettings =
        FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (FeaturestoreServiceClient featurestoreServiceClient =
        FeaturestoreServiceClient.create(featurestoreServiceSettings)) {

      OnlineServingConfig.Builder builderValue =
          OnlineServingConfig.newBuilder()
              .setScaling(
                  Scaling.newBuilder().setMinNodeCount(minNodeCount).setMaxNodeCount(maxNodeCount));
      Featurestore featurestore =
          Featurestore.newBuilder().setOnlineServingConfig(builderValue).build();
      String parent = LocationName.of(project, location).toString();

      CreateFeaturestoreRequest createFeaturestoreRequest =
          CreateFeaturestoreRequest.newBuilder()
              .setParent(parent)
              .setFeaturestore(featurestore)
              .setFeaturestoreId(featurestoreId)
              .build();

      OperationFuture<Featurestore, CreateFeaturestoreOperationMetadata> featurestoreFuture =
          featurestoreServiceClient.createFeaturestoreAsync(createFeaturestoreRequest);
      System.out.format(
          "Operation name: %s%n", featurestoreFuture.getInitialFuture().get().getName());
      System.out.println("Waiting for operation to finish...");
      Featurestore featurestoreResponse = featurestoreFuture.get(timeout, TimeUnit.SECONDS);
      System.out.println("Create Featurestore Response");
      System.out.format("Name: %s%n", featurestoreResponse.getName());
    }
  }
}

Node.js

Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Node.js.

Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

/**
 * TODO(developer): Uncomment these variables before running the sample.\
 * (Not necessary if passing values as arguments)
 */

// const project = 'YOUR_PROJECT_ID';
// const featurestoreId = 'YOUR_FEATURESTORE_ID';
// const minNodeCount = <MINIMUM_NO_OF_NODES>;
// const maxNodeCount = <MAXIMUM_NO_OF_NODES>;
// const location = 'YOUR_PROJECT_LOCATION';
// const apiEndpoint = 'YOUR_API_ENDPOINT';
// const timeout = <TIMEOUT_IN_MILLI_SECONDS>;

// Imports the Google Cloud Featurestore Service Client library
const {FeaturestoreServiceClient} =
  require('@google-cloud/aiplatform').v1beta1;

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: apiEndpoint,
};

// Instantiates a client
const featurestoreServiceClient = new FeaturestoreServiceClient(
  clientOptions
);

async function createFeaturestore() {
  // Configure the parent resource
  const parent = `projects/${project}/locations/${location}`;

  const featurestore = {
    onlineServingConfig: {
      scaling: {
        minNodeCount: minNodeCount,
        maxNodeCount: maxNodeCount,
      },
    },
  };

  const request = {
    parent: parent,
    featurestore: featurestore,
    featurestoreId: featurestoreId,
  };

  // Create Featurestore request
  const [operation] = await featurestoreServiceClient.createFeaturestore(
    request,
    {timeout: Number(timeout)}
  );
  const [response] = await operation.promise();

  console.log('Create featurestore response');
  console.log(`Name : ${response.name}`);
  console.log('Raw response:');
  console.log(JSON.stringify(response, null, 2));
}
createFeaturestore();

Créer un magasin de fonctionnalités qui utilise une clé CMEK

Avant de commencer, si vous ne disposez pas d'une clé CMEK (clé de chiffrement gérée par le client), utilisez Cloud Key Management Service pour configurer une clé de chiffrement gérée par le client et configurer des autorisations. L'exemple suivant crée un magasin de caractéristiques qui utilise une clé CMEK.

Si Vertex AI perd l'autorisation d'utiliser la clé CMEK associée, toutes les ressources et valeurs des magasins de caractéristiques qui avaient été chiffrés par cette clé deviennent inaccessibles jusqu'à ce que Vertex AI puisse réutiliser cette clé.

Après 30 jours, si Vertex AI n'a toujours pas accès à la clé CMEK, tous les magasins de caractéristiques qui avaient été chiffrés avec cette clé sont supprimés par Vertex AI. Lorsque vous créez des magasins de caractéristiques, vous ne pouvez pas réutiliser ces noms de magasins de caractéristiques.

UI Web

Utilisez une autre méthode. Vous ne pouvez pas créer de magasin de caractéristiques à partir de Google Cloud Console.

REST

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

  • LOCATION_ID : région dans laquelle le featurestore est créé. Exemple :us-central1
  • PROJECT_ID : l'ID de votre projet.
  • FEATURESTORE_ID : ID du featurestore.
  • CMEK_PROJECT : ID ou numéro de projet contenant votre clé CMEK.
  • KEY_RING : nom du trousseau de clés Cloud Key Management Service sur lequel votre clé de chiffrement est activée.
  • KEY_NAME : nom de la clé de chiffrement à utiliser.

Méthode HTTP et URL :

POST http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores?featurestoreId=FEATURESTORE_ID

Corps JSON de la requête :

{
  "online_serving_config": {
    "fixed_node_count": 1
  },
  "encryption_spec":{
    "kms_key_name": "projects/CMEK_PROJECT/locations/LOCATION_ID/keyRings/KEY_RING/cryptoKeys/KEY_NAME"
  }
}

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 \
"http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores?featurestoreId=FEATURESTORE_ID"

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 "http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores?featurestoreId=FEATURESTORE_ID" | Select-Object -Expand Content

Des résultats semblables aux lignes suivantes devraient s'afficher : Vous pouvez utiliser OPERATION_ID dans la réponse pour obtenir l'état de l'opération.

{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateFeaturestoreOperationMetadata",
    "genericMetadata": {
      "createTime": "2021-02-26T00:44:40.722474Z",
      "updateTime": "2021-02-26T00:44:40.722474Z"
    }
  }
}

Répertorier les magasins de fonctionnalités

Répertoriez tous les featurestores d'un projet.

UI Web

  1. Dans la section "Vertex AI" de Google Cloud Console, accédez à la page Caractéristiques.

    Accéder à la page "Caractéristiques"

  2. Sélectionnez une région dans la liste déroulante Région.
  3. Dans la table des caractéristiques, consultez la colonne Featurestore pour connaître les featurestores de votre projet pour la région sélectionnée.

REST

Pour répertorier les featurestores d'une région spécifique de votre projet, envoyez une requête GET à l'aide de la méthode featurestores.list.

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

  • LOCATION_ID : région où se trouve le featurestore, par exemple us-central1.
  • PROJECT_ID : l'ID de votre projet.

Méthode HTTP et URL :

GET http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores

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)" \
"http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores"

PowerShell

Exécutez la commande suivante :

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

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

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

{
  "featurestores": [
    {
      "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/test",
      "createTime": "2021-02-26T00:44:44.216805Z",
      "updateTime": "2021-02-26T00:44:44.364916Z",
      "etag": "AMEw9yNL0s7qZh8lZVZ5T3BEuhoEgFR7JmjbbCSAkRZjeKDXkkIYnxxA4POe5BWT8cCn",
      "labels": {
        "environment": "testing"
      },
      "onlineServingConfig": {
        "fixedNodeCount": 2
      },
      "state": "STABLE"
    },
    {
      "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/featurestore_demo",
      "createTime": "2021-02-25T00:39:40.598781Z",
      "updateTime": "2021-02-25T00:39:40.744038Z",
      "etag": "AMEw9yO_e0vm-9W_yeCz4rJm-XnnEMYQ-vQesevxya_sz-FckuysnDwo3cEXHdWWSeda",
      "labels": {
        "environment": "testing"
      },
      "onlineServingConfig": {
        "fixedNodeCount": 3
      },
      "state": "STABLE"
    }
  ]
}

Java

Avant d'essayer cet exemple, suivez les instructions de configuration pour Java décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Java.

Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


import com.google.cloud.aiplatform.v1.Featurestore;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings;
import com.google.cloud.aiplatform.v1.ListFeaturestoresRequest;
import com.google.cloud.aiplatform.v1.LocationName;
import java.io.IOException;

public class ListFeaturestoresSample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "YOUR_PROJECT_ID";
    String location = "us-central1";
    String endpoint = "us-central1-aiplatform.googleapis.com:443";
    listFeaturestoresSample(project, location, endpoint);
  }

  static void listFeaturestoresSample(String project, String location, String endpoint)
      throws IOException {
    FeaturestoreServiceSettings featurestoreServiceSettings =
        FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (FeaturestoreServiceClient featurestoreServiceClient =
        FeaturestoreServiceClient.create(featurestoreServiceSettings)) {

      ListFeaturestoresRequest listFeaturestoresRequest =
          ListFeaturestoresRequest.newBuilder()
              .setParent(LocationName.of(project, location).toString())
              .build();

      System.out.println("List Featurestores Response");
      for (Featurestore element :
          featurestoreServiceClient.listFeaturestores(listFeaturestoresRequest).iterateAll()) {
        System.out.println(element);
      }
    }
  }
}

Node.js

Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Node.js.

Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

/**
 * TODO(developer): Uncomment these variables before running the sample.\
 * (Not necessary if passing values as arguments)
 */

// const project = 'YOUR_PROJECT_ID';
// const location = 'YOUR_PROJECT_LOCATION';
// const apiEndpoint = 'YOUR_API_ENDPOINT';
// const timeout = <TIMEOUT_IN_MILLI_SECONDS>;

// Imports the Google Cloud Featurestore Service Client library
const {FeaturestoreServiceClient} = require('@google-cloud/aiplatform').v1;

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: apiEndpoint,
};

// Instantiates a client
const featurestoreServiceClient = new FeaturestoreServiceClient(
  clientOptions
);

async function listFeaturestores() {
  // Configure the parent resource
  const parent = `projects/${project}/locations/${location}`;

  const request = {
    parent: parent,
  };

  // List featurestores request
  const [response] = await featurestoreServiceClient.listFeaturestores(
    request,
    {timeout: Number(timeout)}
  );

  console.log('List featurestores response');
  console.log('Raw response:');
  console.log(JSON.stringify(response, null, 2));
}
listFeaturestores();

Langages supplémentaires

Pour savoir comment installer et utiliser le SDK Vertex AI pour Python, consultez la page Utiliser le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API SDK Vertex AI pour Python.

Afficher les informations sur le magasin de caractéristiques

Obtenir des détails sur un featurestore tel que son nom et sa configuration de diffusion en ligne. Si vous utilisez Google Cloud Console, vous pouvez afficher les métriques Cloud Monitoring pour les magasins de caractéristiques.

UI Web

  1. Dans la section "Vertex AI" de Google Cloud Console, accédez à la page Caractéristiques.

    Accéder à la page "Caractéristiques"

  2. Sélectionnez une région dans la liste déroulante Région.
  3. Dans le tableau des caractéristiques, consultez la colonne Magasin de fonctionnalités et recherchez le magasin de fonctionnalités pour lequel vous souhaitez afficher les informations.
  4. Cliquez sur le nom du featurestore pour afficher ses métriques Monitoring.
  5. Cliquez sur l'onglet Propriétés pour afficher la configuration de diffusion en ligne du magasin de fonctionnalités.

REST

Pour obtenir des détails sur un seul featurestore, envoyez une requête GET à l'aide de la méthode featurestores.get.

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

  • LOCATION_ID : région où se trouve le featurestore, par exemple us-central1.
  • PROJECT_ID : l'ID de votre projet.
  • FEATURESTORE_ID : ID du featurestore.

Méthode HTTP et URL :

GET http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID

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)" \
"http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID"

PowerShell

Exécutez la commande suivante :

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

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

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

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/FEATURESTORE_ID",
  "createTime": "2021-02-25T00:39:40.598781Z",
  "updateTime": "2021-02-25T00:39:40.744038Z",
  "etag": "AMEw9yNy_b4IaMIvw1803ZT38cpUtjfwlyLkR709oBCY6pQrm6dHophLcqhrvsNqkQQZ",
  "onlineServingConfig": {
    "fixedNodeCount": 3
  },
  "state": "STABLE"
}

Java

Avant d'essayer cet exemple, suivez les instructions de configuration pour Java décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Java.

Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


import com.google.cloud.aiplatform.v1.Featurestore;
import com.google.cloud.aiplatform.v1.FeaturestoreName;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings;
import com.google.cloud.aiplatform.v1.GetFeaturestoreRequest;
import java.io.IOException;

public class GetFeaturestoreSample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "YOUR_PROJECT_ID";
    String featurestoreId = "YOUR_FEATURESTORE_ID";
    String location = "us-central1";
    String endpoint = "us-central1-aiplatform.googleapis.com:443";
    getFeaturestoreSample(project, featurestoreId, location, endpoint);
  }

  static void getFeaturestoreSample(
      String project, String featurestoreId, String location, String endpoint) throws IOException {

    FeaturestoreServiceSettings featurestoreServiceSettings =
        FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (FeaturestoreServiceClient featurestoreServiceClient =
        FeaturestoreServiceClient.create(featurestoreServiceSettings)) {

      GetFeaturestoreRequest getFeaturestoreRequest =
          GetFeaturestoreRequest.newBuilder()
              .setName(FeaturestoreName.of(project, location, featurestoreId).toString())
              .build();

      Featurestore featurestore = featurestoreServiceClient.getFeaturestore(getFeaturestoreRequest);
      System.out.println("Get Featurestore Response");
      System.out.println(featurestore);
    }
  }
}

Node.js

Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Node.js.

Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

/**
 * TODO(developer): Uncomment these variables before running the sample.\
 * (Not necessary if passing values as arguments)
 */

// const project = 'YOUR_PROJECT_ID';
// const featurestoreId = 'YOUR_FEATURESTORE_ID';
// const location = 'YOUR_PROJECT_LOCATION';
// const apiEndpoint = 'YOUR_API_ENDPOINT';
// const timeout = <TIMEOUT_IN_MILLI_SECONDS>;

// Imports the Google Cloud Featurestore Service Client library
const {FeaturestoreServiceClient} = require('@google-cloud/aiplatform').v1;

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: apiEndpoint,
};

// Instantiates a client
const featurestoreServiceClient = new FeaturestoreServiceClient(
  clientOptions
);

async function getFeaturestore() {
  // Configure the parent resource
  const name = `projects/${project}/locations/${location}/featurestores/${featurestoreId}`;

  const request = {
    name: name,
  };

  // Get Featurestore request
  const [response] = await featurestoreServiceClient.getFeaturestore(
    request,
    {timeout: Number(timeout)}
  );

  console.log('Get featurestore response');
  console.log(`Name : ${response.name}`);
  console.log('Raw response:');
  console.log(JSON.stringify(response, null, 2));
}
getFeaturestore();

Langages supplémentaires

Pour savoir comment installer et utiliser le SDK Vertex AI pour Python, consultez la page Utiliser le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API SDK Vertex AI pour Python.

Mettre à jour un magasin de caractéristiques

Mettez à jour un featurestore, par exemple pour modifier le nombre de nœuds de diffusion en ligne, ou mettez à jour les libellés d'un featurestore.

UI Web

Vous ne pouvez mettre à jour que le nombre de nœuds de diffusion en ligne. Pour mettre à jour les libellés, utilisez l'API.

  1. Dans la section "Vertex AI" de Google Cloud Console, accédez à la page Caractéristiques.

    Accéder à la page "Caractéristiques"

  2. Sélectionnez une région dans la liste déroulante Région.
  3. Dans le tableau des caractéristiques, affichez la colonne Magasin de fonctionnalités, puis cliquez sur le nom de l'élément à mettre à jour.
  4. Cliquez sur Modifier la configuration pour ouvrir le volet Modifier la configuration du magasin de fonctionnalités.
  5. Modifiez la configuration du magasin de fonctionnalités.
  6. Cliquez sur Mettre à jour pour appliquer vos modifications.

REST

Pour mettre à jour un featurestore, envoyez une requête PATCH à l'aide de la méthode featurestores.patch.

L'exemple suivant met à jour le nombre de nœuds de diffusion en ligne sur 2 pour le featurestore. Tous les autres paramètres restent inchangés.

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

  • LOCATION_ID : région où se trouve le featurestore, par exemple us-central1.
  • PROJECT_ID : l'ID de votre projet.
  • FEATURESTORE_ID : ID du featurestore.

Méthode HTTP et URL :

PATCH http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID

Corps JSON de la requête :

{
  "online_serving_config": {
    "fixed_node_count": 2
  }
}

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 PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID"

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID" | Select-Object -Expand Content

Des résultats semblables aux lignes suivantes devraient s'afficher : Vous pouvez utiliser OPERATION_ID dans la réponse pour obtenir l'état de l'opération.

{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.UpdateFeaturestoreOperationMetadata",
    "genericMetadata": {
      "createTime": "2021-03-18T21:12:08.373664Z",
      "updateTime": "2021-03-18T21:12:08.373664Z"
    }
  }
}

Java

Avant d'essayer cet exemple, suivez les instructions de configuration pour Java décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Java.

Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.aiplatform.v1.Featurestore;
import com.google.cloud.aiplatform.v1.Featurestore.OnlineServingConfig;
import com.google.cloud.aiplatform.v1.Featurestore.OnlineServingConfig.Scaling;
import com.google.cloud.aiplatform.v1.FeaturestoreName;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings;
import com.google.cloud.aiplatform.v1.UpdateFeaturestoreOperationMetadata;
import com.google.cloud.aiplatform.v1.UpdateFeaturestoreRequest;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class UpdateFeaturestoreSample {

  public static void main(String[] args)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "YOUR_PROJECT_ID";
    String featurestoreId = "YOUR_FEATURESTORE_ID";
    int minNodeCount = 2;
    int maxNodeCount = 4;
    String location = "us-central1";
    String endpoint = "us-central1-aiplatform.googleapis.com:443";
    int timeout = 300;
    updateFeaturestoreSample(
        project, featurestoreId, minNodeCount, maxNodeCount, location, endpoint, timeout);
  }

  static void updateFeaturestoreSample(
      String project,
      String featurestoreId,
      int minNodeCount,
      int maxNodeCount,
      String location,
      String endpoint,
      int timeout)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    FeaturestoreServiceSettings featurestoreServiceSettings =
        FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (FeaturestoreServiceClient featurestoreServiceClient =
        FeaturestoreServiceClient.create(featurestoreServiceSettings)) {

      OnlineServingConfig.Builder builderValue =
          OnlineServingConfig.newBuilder()
              .setScaling(
                  Scaling.newBuilder().setMinNodeCount(minNodeCount).setMaxNodeCount(maxNodeCount));
      Featurestore featurestore =
          Featurestore.newBuilder()
              .setName(FeaturestoreName.of(project, location, featurestoreId).toString())
              .setOnlineServingConfig(builderValue)
              .build();

      UpdateFeaturestoreRequest request =
          UpdateFeaturestoreRequest.newBuilder().setFeaturestore(featurestore).build();

      OperationFuture<Featurestore, UpdateFeaturestoreOperationMetadata> updateFeaturestoreFuture =
          featurestoreServiceClient.updateFeaturestoreAsync(request);
      System.out.format(
          "Operation name: %s%n", updateFeaturestoreFuture.getInitialFuture().get().getName());
      System.out.println("Waiting for operation to finish...");
      Featurestore featurestoreResponse = updateFeaturestoreFuture.get(timeout, TimeUnit.SECONDS);
      System.out.println("Update Featurestore Response");
      System.out.format("Name: %s%n", featurestoreResponse.getName());
    }
  }
}

Node.js

Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Node.js.

Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

/**
 * TODO(developer): Uncomment these variables before running the sample.\
 * (Not necessary if passing values as arguments)
 */

// const project = 'YOUR_PROJECT_ID';
// const featurestoreId = 'YOUR_FEATURESTORE_ID';
// const minNodeCount = <MINIMUM_NO_OF_NODES>;
// const maxNodeCount = <MAXIMUM_NO_OF_NODES>;
// const location = 'YOUR_PROJECT_LOCATION';
// const apiEndpoint = 'YOUR_API_ENDPOINT';
// const timeout = <TIMEOUT_IN_MILLI_SECONDS>;

// Imports the Google Cloud Featurestore Service Client library
const {FeaturestoreServiceClient} =
  require('@google-cloud/aiplatform').v1beta1;

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: apiEndpoint,
};

// Instantiates a client
const featurestoreServiceClient = new FeaturestoreServiceClient(
  clientOptions
);

async function updateFeaturestore() {
  // Configure the parent resource
  const parent = `projects/${project}/locations/${location}/featurestores/${featurestoreId}`;

  const featurestore = {
    name: parent,
    onlineServingConfig: {
      scaling: {
        minNodeCount: minNodeCount,
        maxNodeCount: maxNodeCount,
      },
    },
  };

  const request = {
    featurestore: featurestore,
  };

  // Update Featurestore request
  const [operation] = await featurestoreServiceClient.updateFeaturestore(
    request,
    {timeout: Number(timeout)}
  );
  const [response] = await operation.promise();

  console.log('Update featurestore response');
  console.log(`Name : ${response.name}`);
  console.log('Raw response:');
  console.log(JSON.stringify(response, null, 2));
}
updateFeaturestore();

Langages supplémentaires

Pour savoir comment installer et utiliser le SDK Vertex AI pour Python, consultez la page Utiliser le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API SDK Vertex AI pour Python.

Supprimer un magasin de caractéristiques

Supprimez un magasin de fonctionnalités. Si le magasin de fonctionnalités inclut des types et des fonctionnalités d'entités existants, activez le paramètre de requête force pour supprimer le magasin de fonctionnalités et son contenu.

UI Web

Utilisez une autre méthode. Vous ne pouvez pas supprimer un magasin de caractéristiques à partir de Google Cloud Console.

REST

Pour supprimer un featurestore et tout son contenu, envoyez une requête DELETE à l'aide de la méthode featurestores.delete.

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

  • LOCATION_ID : région où se trouve le featurestore, par exemple us-central1.
  • PROJECT_ID : l'ID de votre projet.
  • FEATURESTORE_ID : ID du featurestore.
  • BOOLEAN : indique si le magasin de fonctionnalités doit être supprimé, même s'il contient des types et des fonctionnalités d'entité. Le paramètre de requête force est facultatif et est false par défaut.

Méthode HTTP et URL :

DELETE http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID?force=BOOLEAN

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

curl

Exécutez la commande suivante :

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID?force=BOOLEAN"

PowerShell

Exécutez la commande suivante :

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

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID?force=BOOLEAN" | Select-Object -Expand Content

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

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/operations/OPERATIONS_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeleteOperationMetadata",
    "genericMetadata": {
      "createTime": "2021-05-03T17:50:21.813112Z",
      "updateTime": "2021-05-03T17:50:21.813112Z"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Python

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

from google.cloud import aiplatform

def delete_featurestore_sample(
    project: str,
    location: str,
    featurestore_name: str,
    sync: bool = True,
    force: bool = True,
):

    aiplatform.init(project=project, location=location)

    fs = aiplatform.featurestore.Featurestore(featurestore_name=featurestore_name)
    fs.delete(sync=sync, force=force)

Python

La bibliothèque cliente pour Vertex AI est incluse lorsque vous installez le SDK Vertex AI pour Python. Pour savoir comment installer le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API SDK Vertex AI pour Python.

from google.cloud import aiplatform

def delete_featurestore_sample(
    project: str,
    featurestore_id: str,
    location: str = "us-central1",
    api_endpoint: str = "us-central1-aiplatform.googleapis.com",
    timeout: int = 1200,
):
    # The AI Platform services require regional API endpoints, which need to be
    # in the same region or multi-region overlap with the Feature Store location.
    client_options = {"api_endpoint": api_endpoint}
    # Initialize client that will be used to create and send requests.
    # This client only needs to be created once, and can be reused for multiple requests.
    client = aiplatform.gapic.FeaturestoreServiceClient(client_options=client_options)
    name = client.featurestore_path(
        project=project, location=location, featurestore=featurestore_id
    )
    response = client.delete_featurestore(name=name)
    print("Long running operation:", response.operation.name)
    delete_featurestore_response = response.result(timeout=timeout)
    print("delete_featurestore_response:", delete_featurestore_response)

Java

Avant d'essayer cet exemple, suivez les instructions de configuration pour Java décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Java.

Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.aiplatform.v1.DeleteFeaturestoreRequest;
import com.google.cloud.aiplatform.v1.DeleteOperationMetadata;
import com.google.cloud.aiplatform.v1.FeaturestoreName;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings;
import com.google.protobuf.Empty;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class DeleteFeaturestoreSample {

  public static void main(String[] args)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "YOUR_PROJECT_ID";
    String featurestoreId = "YOUR_FEATURESTORE_ID";
    boolean useForce = true;
    String location = "us-central1";
    String endpoint = "us-central1-aiplatform.googleapis.com:443";
    int timeout = 60;
    deleteFeaturestoreSample(project, featurestoreId, useForce, location, endpoint, timeout);
  }

  static void deleteFeaturestoreSample(
      String project,
      String featurestoreId,
      boolean useForce,
      String location,
      String endpoint,
      int timeout)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {

    FeaturestoreServiceSettings featurestoreServiceSettings =
        FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (FeaturestoreServiceClient featurestoreServiceClient =
        FeaturestoreServiceClient.create(featurestoreServiceSettings)) {

      DeleteFeaturestoreRequest deleteFeaturestoreRequest =
          DeleteFeaturestoreRequest.newBuilder()
              .setName(FeaturestoreName.of(project, location, featurestoreId).toString())
              .setForce(useForce)
              .build();

      OperationFuture<Empty, DeleteOperationMetadata> operationFuture =
          featurestoreServiceClient.deleteFeaturestoreAsync(deleteFeaturestoreRequest);
      System.out.format("Operation name: %s%n", operationFuture.getInitialFuture().get().getName());
      System.out.println("Waiting for operation to finish...");
      operationFuture.get(timeout, TimeUnit.SECONDS);

      System.out.format("Deleted Featurestore.");
    }
  }
}

Node.js

Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Node.js.

Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

/**
 * TODO(developer): Uncomment these variables before running the sample.\
 * (Not necessary if passing values as arguments)
 */

// const project = 'YOUR_PROJECT_ID';
// const featurestoreId = 'YOUR_FEATURESTORE_ID';
// const force = <BOOLEAN>;
// const location = 'YOUR_PROJECT_LOCATION';
// const apiEndpoint = 'YOUR_API_ENDPOINT';
// const timeout = <TIMEOUT_IN_MILLI_SECONDS>;

// Imports the Google Cloud Featurestore Service Client library
const {FeaturestoreServiceClient} = require('@google-cloud/aiplatform').v1;

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: apiEndpoint,
};

// Instantiates a client
const featurestoreServiceClient = new FeaturestoreServiceClient(
  clientOptions
);

async function deleteFeaturestore() {
  // Configure the name resource
  const name = `projects/${project}/locations/${location}/featurestores/${featurestoreId}`;

  const request = {
    name: name,
    force: Boolean(force),
  };

  // Delete Featurestore request
  const [operation] = await featurestoreServiceClient.deleteFeaturestore(
    request,
    {timeout: Number(timeout)}
  );
  const [response] = await operation.promise();

  console.log('Delete featurestore response');
  console.log('Raw response:');
  console.log(JSON.stringify(response, null, 2));
}
deleteFeaturestore();

Étapes suivantes