Supervisión

En Vertex AI Feature Store (Legacy), puedes supervisar y configurar alertas en las tiendas de funciones y las funciones. Por ejemplo, un equipo de operaciones podría supervisar un almacén de atributos para hacer un seguimiento del uso de CPU. Los propietarios de los atributos, como los científicos de datos, pueden supervisar los valores de los atributos para detectar desvíos a lo largo del tiempo.

Los métodos para supervisar el almacén de atributos y las funciones se describen en las siguientes secciones:

Supervisión del almacén de atributos

Vertex AI Feature Store (Legacy) informa las métricas sobre tu almacén de atributos a Cloud Monitoring, como la carga de la CPU, la capacidad de almacenamiento y las latencias de solicitud. Vertex AI recopila y, luego, informa estas métricas. No es necesario que configures o habilites la supervisión del almacén de atributos.

Para configurar los límites y las notificaciones, usa Cloud Monitoring. Por ejemplo, puedes establecer una alerta si la carga promedio de la CPU supera el 70%, lo que podría requerir que aumentes la cantidad de nodos del almacén de atributos.

También puedes ver las métricas del almacén de atributos en la sección de Vertex AI de la consola de Google Cloud para ver las tendencias en el tiempo. En algunos gráficos, la consola muestra valores agregados o calculados a fin de facilitar el consumo de la información. Siempre puedes ver los datos sin procesar en Cloud Monitoring.

Para obtener más información, consulta Métricas de supervisión de Vertex AI Feature Store (Legacy) en la página de Cloud Monitoring de Vertex AI.

Supervisión del valor de atributos

La supervisión del valor del atributo te permite hacer un seguimiento de cuánto cambia la distribución del valor del atributo en un almacén de atributos. Se admiten los siguientes tipos de supervisión del valor de los atributos:

  • Análisis de instantáneas: Vertex AI Feature Store toma instantáneas periódicas de los valores de tus atributos. Con el tiempo, a medida que transfieras más datos, es posible que notes que cambia la distribución de los valores de tus atributos. Este cambio indica que es posible que debas volver a entrenar cualquier modelo que use esos atributos. Puedes especificar un umbral para que se registren las anomalías en la consola de Cloud Logging cada vez que la desviación de la distribución supere el umbral.

    Para los conjuntos de datos que superan los 5 millones de IDs de entidades, Vertex AI Feature Store genera instantáneas basadas en 5 millones de IDs de entidades seleccionados de forma aleatoria dentro del período que especificaste como la cantidad de días de inactividad.

  • Análisis de atributos de importación: cada operación ImportFeatureValues genera estadísticas de distribución para los valores transferidos a Vertex AI Feature Store. Puedes elegir detectar anomalías si comparas las estadísticas de distribución con la distribución de los valores de los atributos importados con anterioridad o, si está habilitada, la distribución de instantáneas.

    Para los conjuntos de datos que superan las 5 millones de instancias, Vertex AI Feature Store (Legacy) genera instantáneas basadas en datos seleccionados al azar de la siguiente manera:

    • Si la cantidad de instancias dentro del conjunto de datos transferidos supera los 5 millones, pero no supera los 50 millones, la instantánea se genera en función de 5 millones de instancias seleccionadas al azar.
    • Si la cantidad de instancias dentro del conjunto de datos transferidos supera los 50 millones, la instantánea se genera en función del 10% de las instancias, seleccionadas de forma aleatoria.

Por ejemplo, imagina un atributo que recopila los precios de las casas vendidas recientemente y, luego, ingresa los valores en un modelo para predecir el precio de una casa. Es posible que los precios de las casas vendidas recientemente se desvíen de forma significativa con el tiempo, o el lote de valores importados podría contener datos que se desvíen de manera significativa de los datos de entrenamiento. Vertex AI Feature Store (Legacy) te alerta sobre este cambio. Luego, puedes volver a entrenar el modelo a fin de usar la información más reciente.

Establece una configuración de supervisión

Para comenzar a supervisar, puedes definir una configuración de supervisión en un tipo de entidad, lo que habilita la supervisión de todos los atributos de los siguientes tipos:

  • BOOL
  • STRING
  • DOUBLE
  • INT64

Puedes establecer la configuración de supervisión cuando crees un tipo de entidad. También puedes inhabilitar la supervisión de atributos específicos si configuras la propiedad disableMonitoring. La configuración de supervisión del tipo de entidad especifica lo siguiente:

  • Indica si se debe habilitar la supervisión. La supervisión está inhabilitada de forma predeterminada.
  • Los umbrales que se usan para detectar anomalías. El umbral predeterminado es 0.3.
  • La ventana de visualización, además del intervalo entre instantáneas (para el análisis de instantáneas). El valor predeterminado es 21.
  • Indica si se debe habilitar el análisis de atributos de importación. La opción predeterminada está inhabilitada.

Para obtener más información, consulta el tipo de FeaturestoreMonitoringConfig en la referencia de la API.

Crea un tipo de entidad con la supervisión habilitada

En el siguiente ejemplo, se crea un tipo de entidad, en el que la supervisión de atibutos aestá habilitada:

IU web

Solo se admite el análisis de instantáneas de la IU.

  1. En la sección de Vertex AI de la consola de Google Cloud, ve a la página Funciones.

    Ve a la página Atributos

  2. Selecciona una región de la lista desplegable Región.
  3. Haz clic en Crear tipo de entidad.
  4. Convierte la sección Supervisión de atributos en Habilitada.
  5. Ingresa la cantidad de días entre instantáneas en el campo Intervalo de tiempo de supervisión.
    El trabajo de supervisión para un tipo de entidad o atributo ase ejecuta a la hora redondeada más cercana a la hora del día en la que habilitas la supervisión para el tipo o atributo de entidad. Por ejemplo, si habilitas la supervisión a las 10:30 p.m. el lunes y especificas dos días como el intervalo de tiempo de supervisión, el primer trabajo de supervisión se ejecuta a las 11:00 p.m. del miércoles.
  6. Ingresa la cantidad de días que deseas mirar cada instantánea en el campo Ventana de visualización de supervisión.
  7. Ingresa el número del umbral que se usa para detectar anomalías en los atributos numéricos del campo Límite de alertas numéricas.
  8. Ingresa el número del umbral que se usa para detectar anomalías en los atributos categóricos de este EntityType en el campo Umbral de alerta de categoría.
    Para obtener más información sobre la detección de anomalías en los valores de los atibutos, consulta Ver anomalías de valor de atributos.
  9. Haz clic en Crear.
  10. En la tabla de atributos, haz clic en un tipo de entidad.
  11. Para agregar atributos nuevas a la entidad, haz clic en Agregar atributos.
  12. Para inhabilitar la supervisión de un atributo específico, desactiva la opción Habilitar supervisión.

REST

Para crear un tipo de entidad, envía una solicitud POST mediante el método entityTypes.create.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LOCATION_ID: región donde se encuentra el almacén de atributos, como us-central1.
  • PROJECT_ID: El ID del proyecto.
  • FEATURESTORE_ID: ID del featurestore.
  • ENTITY_TYPE_ID: ID del tipo de entidad.
  • DURATION: La duración del intervalo entre instantáneas en días.
  • STALENESS_DAYS: la cantidad de días para observar cuando se toman instantáneas.
  • NUMERICAL_THRESHOLD_VALUE: el umbral para detectar anomalías en atributos numéricos de este tipo de entidad. La desviación de las estadísticas se calcula con la divergencia de Jenson-Shannon.
  • CATEGORICAL_THRESHOLD_VALUE: el umbral para detectar anomalías en atributos categóricos de este tipo de entidad. La desviación de las estadísticas se calcula según la distancia de L-Infinity.
  • IMPORT_FEATURE_ANALYSIS_STATE: el estado que indica si se debe habilitar el análisis de atributos de importación.
  • IMPORT_FEATURE_ANALYSIS_BASELINE: el modelo de referencia para el análisis de atributos de importación si está habilitado.

Método HTTP y URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes?entityTypeId=ENTITY_TYPE_ID

Cuerpo JSON de la solicitud:

{
  "monitoringConfig": {
    "snapshotAnalysis": {
      "monitoringIntervalDays": "DURATION"
      "stalenessDays": "STALENESS_DAYS"
    }
  },
 "numericalThresholdConfig": {
    "value": "NUMERICAL_THRESHOLD_VALUE"
  },
  "categoricalThresholdConfig": {
    "value": "CATEGORICAL_THRESHOLD_VALUE"
  },
  "importFeatureAnalysis": {
    "state": "IMPORT_FEATURE_ANALYSIS_STATE",
    "anomalyDetectionBaseline": "IMPORT_FEATURE_ANALYSIS_BASELINE"
  }
}

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/featurestores/FEATURESTORE_ID/entityTypes?entityTypeId=ENTITY_TYPE_ID"

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/featurestores/FEATURESTORE_ID/entityTypes?entityTypeId=ENTITY_TYPE_ID" | Select-Object -Expand Content

Deberías ver un resultado similar al siguiente. Puedes usar el OPERATION_ID en la respuesta para obtener el estado de la operación.

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.ui.CreateEntityTypeOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-04-29T20:29:05.206525Z",
      "updateTime": "2022-04-29T20:29:05.206525Z"
    }
  }
}

Java

Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Java.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.


import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.aiplatform.v1.CreateEntityTypeOperationMetadata;
import com.google.cloud.aiplatform.v1.CreateEntityTypeRequest;
import com.google.cloud.aiplatform.v1.EntityType;
import com.google.cloud.aiplatform.v1.FeaturestoreMonitoringConfig;
import com.google.cloud.aiplatform.v1.FeaturestoreMonitoringConfig.SnapshotAnalysis;
import com.google.cloud.aiplatform.v1.FeaturestoreName;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class CreateEntityTypeMonitoringSample {

  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";
    String entityTypeId = "YOUR_ENTITY_TYPE_ID";
    String description = "YOUR_ENTITY_TYPE_DESCRIPTION";
    int monitoringIntervalDays = 1;
    String location = "us-central1";
    String endpoint = "us-central1-aiplatform.googleapis.com:443";
    int timeout = 300;
    createEntityTypeMonitoringSample(
        project,
        featurestoreId,
        entityTypeId,
        description,
        monitoringIntervalDays,
        location,
        endpoint,
        timeout);
  }

  static void createEntityTypeMonitoringSample(
      String project,
      String featurestoreId,
      String entityTypeId,
      String description,
      int monitoringIntervalDays,
      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)) {

      FeaturestoreMonitoringConfig featurestoreMonitoringConfig =
          FeaturestoreMonitoringConfig.newBuilder()
              .setSnapshotAnalysis(
                  SnapshotAnalysis.newBuilder().setMonitoringIntervalDays(monitoringIntervalDays))
              .build();

      EntityType entityType =
          EntityType.newBuilder()
              .setDescription(description)
              .setMonitoringConfig(featurestoreMonitoringConfig)
              .build();

      CreateEntityTypeRequest createEntityTypeRequest =
          CreateEntityTypeRequest.newBuilder()
              .setParent(FeaturestoreName.of(project, location, featurestoreId).toString())
              .setEntityType(entityType)
              .setEntityTypeId(entityTypeId)
              .build();

      OperationFuture<EntityType, CreateEntityTypeOperationMetadata> entityTypeFuture =
          featurestoreServiceClient.createEntityTypeAsync(createEntityTypeRequest);
      System.out.format(
          "Operation name: %s%n", entityTypeFuture.getInitialFuture().get().getName());
      System.out.println("Waiting for operation to finish...");
      EntityType entityTypeResponse = entityTypeFuture.get(timeout, TimeUnit.SECONDS);
      System.out.println("Create Entity Type Monitoring Response");
      System.out.format("Name: %s%n", entityTypeResponse.getName());
    }
  }
}

Node.js

Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Node.js.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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 entityTypeId = 'YOUR_ENTITY_TYPE_ID';
// const description = 'YOUR_ENTITY_TYPE_DESCRIPTION';
// const duration = <MONITORING_INTERVAL_IN_SECONDS>;
// 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 createEntityTypeMonitoring() {
  // Configure the parent resource
  const parent = `projects/${project}/locations/${location}/featurestores/${featurestoreId}`;

  const entityType = {
    description: description,
    monitoringConfig: {
      snapshotAnalysis: {
        monitoringInterval: {
          seconds: Number(duration),
        },
      },
    },
  };

  const request = {
    parent: parent,
    entityTypeId: entityTypeId,
    entityType: entityType,
  };

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

  console.log('Create entity type monitoring response');
  console.log(`Name : ${response.name}`);
  console.log('Raw response:');
  console.log(JSON.stringify(response, null, 2));
}
createEntityTypeMonitoring();

Idiomas adicionales

Si deseas obtener información sobre cómo instalar y usar el SDK de Vertex AI para Python, consulta Cómo usar el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia del SDK de IA de Vertex para Python.

Inhabilita la supervisión para un atributo nuevo

En el siguiente ejemplo, se crea un nuevo atributo con la supervisión desactivada:

REST

Para crear un atributo, envía una solicitud POST con el método features.create.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LOCATION_ID: Región donde se encuentra el featurestore, como us-central1.
  • PROJECT_ID: El ID del proyecto.
  • FEATURESTORE_ID: ID del featurestore.
  • ENTITY_TYPE_ID: ID del tipo de entidad.
  • FEATURE_ID: ID del atributo.
  • VALUE_TYPE: El tipo de valor de la función.
  • DISABLE_MONITORING: se establece como verdadero para inhabilitar la supervisión de forma explícita.

Método HTTP y URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID?featureId=/FEATURE_ID

Cuerpo JSON de la solicitud:

{
  "disableMonitoring": "DISABLE_MONITORING",
  "valueType": "VALUE_TYPE"
}

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/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID?featureId=/FEATURE_ID"

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/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID?featureId=/FEATURE_ID" | Select-Object -Expand Content

Deberías ver un resultado similar al siguiente. Puedes usar el OPERATION_ID en la respuesta para obtener el estado de la operación.

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.ui.CreateFeatureOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-04-29T20:29:05.206525Z",
      "updateTime": "2022-04-29T20:29:05.206525Z"
    }
  }
}

Actualiza la configuración de supervisión

Puedes establecer la configuración de supervisión cuando actualices un tipo de entidad. También puedes inhabilitar la supervisión de atributos específicos si configuras la propiedad disableMonitoring.

Actualiza la configuración de la supervisión para el tipo de entidad y los atributos

En el siguiente ejemplo, se actualiza la configuración de la supervisión de un tipo de entidad existente y los atributos específicos de ese tipo:

IU web

Solo se admite el análisis de instantáneas de la IU.

  1. En la sección Vertex AI de la consola de Google Cloud, ve a la página Funciones.
  2. Selecciona una región de la lista desplegable Región.
  3. En la tabla de atributos, consulta la columna Tipo de entidad para encontrar el tipo de entidad que deseas actualizar.
  4. Haz clic en el nombre del tipo de entidad para ver la página de detalles de esta.
  5. En la barra de acciones, haz clic en Editar información.
  6. En Intervalo de tiempo de supervisión, ingresa la cantidad de días entre instantáneas.
    El trabajo de supervisión para un tipo de entidad o atributo ase ejecuta a la hora redondeada más cercana a la hora del día en la que habilitas la supervisión para el tipo o atributo de entidad. Por ejemplo, si habilitas la supervisión a las 10:30 p.m. el lunes y especificas dos días como el intervalo de tiempo de supervisión, el primer trabajo de supervisión se ejecuta a las 11:00 p.m. del miércoles.
  7. Haga clic en Actualizar.
  8. Del mismo modo, en la tabla de atributos, consulta la columna Funciones para encontrar el atributo que deseas actualizar.
  9. Haz clic en el nombre del atributo para ver la página de detalles.
  10. En la barra de acciones, haz clic en Editar información.
  11. Para inhabilitar la supervisión de un atributo específico, desactiva Supervisión habilitada.

REST

Para actualizar un tipo de entidad, envía una solicitud PATCH con el método entityTypes.patch.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LOCATION_ID: región donde se encuentra el almacén de atributos, como us-central1.
  • PROJECT_ID: El ID del proyecto.
  • FEATURESTORE_ID: ID del featurestore.
  • ENTITY_TYPE_ID: ID del tipo de entidad.
  • DURATION_IN_DAYS: La duración del intervalo entre instantáneas en días.
  • STALENESS_DAYS: la cantidad de días para observar cuando se toman instantáneas.
  • NUMERICAL_THRESHOLD_VALUE: el umbral para detectar anomalías en atributos numéricos de este tipo de entidad. La desviación de las estadísticas se calcula con la divergencia de Jenson-Shannon.
  • CATEGORICAL_THRESHOLD_VALUE: el umbral para detectar anomalías en atributos categóricos de este tipo de entidad. La desviación de las estadísticas se calcula según la distancia de L-Infinity.
  • IMPORT_FEATURE_ANALYSIS_STATE: el estado que indica si se debe habilitar el análisis de atributos de importación.
  • IMPORT_FEATURE_ANALYSIS_BASELINE: el modelo de referencia que indica ????

Método HTTP y URL:

PATCH https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID

Cuerpo JSON de la solicitud:

{
  "monitoringConfig": {
    "snapshotAnalysis": {
      "monitoringIntervalDays": "DURATION_IN_DAYS",
      "stalenessDays": "STALENESS_DAYS"
    }
  },
  "numericalThresholdConfig": {
    "value": "NUMERICAL_THRESHOLD_VALUE"
  },
  "categoricalThresholdConfig": {
    "value": "CATEGORICAL_THRESHOLD_VALUE"
  },
  "importFeatureAnalysis": {
    "state": "IMPORT_FEATURE_ANALYSIS_STATE",
    "anomalyDetectionBaseline": "IMPORT_FEATURE_ANALYSIS_BASELINE"
  }
}

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 PATCH \
-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/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID"

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 PATCH `
-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/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID",
  "createTime": "2021-07-22T23:18:31.339972Z",
  "updateTime": "2021-07-29T22:24:40.221821Z",
  "etag": "AMEw9yPGDpwUwHx39gIDIg5mTQz65GMhnYHRzRslVPonm1g8xTnsTC5YUibmWo2MIuI=",
  "monitoringConfig": {
    "snapshotAnalysis": {
      "monitoringIntervalDays": "DURATION_IN_DAYS",
      "stalenessDays": "STALENESS_DAYS"
    }
  },
  "numericalThresholdConfig": {
    "value": "NUMERICAL_THRESHOLD_VALUE"
  },
  "categoricalThresholdConfig": {
    "value": "CATEGORICAL_THRESHOLD_VALUE"
  },
  "importFeatureAnalysis": {
    "state": "IMPORT_FEATURE_ANALYSIS_STATE",
    "anomalyDetectionBaseline": "IMPORT_FEATURE_ANALYSIS_BASELINE"
  }
}

Java

Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Java.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.


import com.google.cloud.aiplatform.v1.EntityType;
import com.google.cloud.aiplatform.v1.EntityTypeName;
import com.google.cloud.aiplatform.v1.FeaturestoreMonitoringConfig;
import com.google.cloud.aiplatform.v1.FeaturestoreMonitoringConfig.SnapshotAnalysis;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings;
import com.google.cloud.aiplatform.v1.UpdateEntityTypeRequest;
import java.io.IOException;

public class UpdateEntityTypeMonitoringSample {

  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 entityTypeId = "YOUR_ENTITY_TYPE_ID";
    int monitoringIntervalDays = 1;
    String location = "us-central1";
    String endpoint = "us-central1-aiplatform.googleapis.com:443";
    updateEntityTypeMonitoringSample(
        project, featurestoreId, entityTypeId, monitoringIntervalDays, location, endpoint);
  }

  static void updateEntityTypeMonitoringSample(
      String project,
      String featurestoreId,
      String entityTypeId,
      int monitoringIntervalDays,
      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)) {
      FeaturestoreMonitoringConfig featurestoreMonitoringConfig =
          FeaturestoreMonitoringConfig.newBuilder()
              .setSnapshotAnalysis(
                  SnapshotAnalysis.newBuilder().setMonitoringIntervalDays(monitoringIntervalDays))
              .build();
      EntityType entityType =
          EntityType.newBuilder()
              .setName(
                  EntityTypeName.of(project, location, featurestoreId, entityTypeId).toString())
              .setMonitoringConfig(featurestoreMonitoringConfig)
              .build();

      UpdateEntityTypeRequest updateEntityTypeRequest =
          UpdateEntityTypeRequest.newBuilder().setEntityType(entityType).build();
      EntityType entityTypeResponse =
          featurestoreServiceClient.updateEntityType(updateEntityTypeRequest);
      System.out.println("Update Entity Type Monitoring Response");
      System.out.println(entityTypeResponse);
    }
  }
}

Node.js

Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Node.js.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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 entityTypeId = 'YOUR_ENTITY_TYPE_ID';
// const duration = <MONITORING_INTERVAL_IN_SECONDS>;
// 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 updateEntityTypeMonitoring() {
  // Configure the name resource
  const name = `projects/${project}/locations/${location}/featurestores/${featurestoreId}/entityTypes/${entityTypeId}`;

  // Constructing the monitoring configuration
  const monitoringConfig = {
    snapshotAnalysis: {
      monitoringInterval: {
        seconds: Number(duration),
      },
    },
  };

  // Constructing the entityType
  const entityType = {
    name: name,
    monitoringConfig: monitoringConfig,
  };

  const request = {
    entityType: entityType,
  };

  // Update EntityType request
  const [response] = await featurestoreServiceClient.updateEntityType(
    request,
    {timeout: Number(timeout)}
  );

  console.log('Update entity type monitoring response');
  console.log(`Name : ${response.name}`);
  console.log('Raw response:');
  console.log(JSON.stringify(response, null, 2));
}
updateEntityTypeMonitoring();

Inhabilita la supervisión para un atributo

En el siguiente ejemplo, se desactiva la supervisión de un atributo existente:

REST

Para actualizar un atributo, envía una solicitud PATCH con el método features.patch.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LOCATION_ID: Región donde se encuentra el featurestore, como us-central1.
  • PROJECT_ID: El ID del proyecto.
  • FEATURESTORE_ID: ID del featurestore.
  • ENTITY_TYPE_ID: ID del tipo de entidad.
  • FEATURE_ID: el ID del atributo que se actualizará.
  • DISABLE_MONITORING: se establece como verdadero para inhabilitar la supervisión de forma explícita.

Método HTTP y URL:

PATCH https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/features/FEATURE_ID

Cuerpo JSON de la solicitud:

{
  "disableMonitoring": "DISABLE_MONITORING"
}

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 PATCH \
-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/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/features/FEATURE_ID"

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 PATCH `
-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/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/features/FEATURE_ID" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/features/FEATURE_ID",
  "valueType": "FEATURE_VALUE_TYPE",
  "createTime": "2021-07-22T23:18:31.339972Z",
  "updateTime": "2021-07-29T22:24:40.221821Z",
  "etag": "AMEw9yPGDpwUwHx39gIDIg5mTQz65GMhnYHRzRslVPonm1g8xTnsTC5YUibmWo2MIuI=",
  "disableMonitoring": "DISABLE_MONITORING"
}

Visualiza distribuciones de valores de atributos

Usa la consola de Google Cloud para ver la distribución de los valores de atributos en el tiempo.

IU web

  1. En la sección Vertex AI de la consola de Google Cloud, ve a la página Funciones.

    Ir a la página Funciones

  2. Selecciona una región de la lista desplegable Región.

  3. Para ver las distribuciones de valores de atibutos de todos los atibutos de un tipo de entidad, en la columna Tipo de entidad, haz clic en el tipo de entidad.

  4. Para ver las métricas de distribución de valores de atributo de un atributo, haz lo siguiente:

    1. En la columna Atributo, haz clic en el atributo.

    2. Haz clic en la pestaña Métricas para ver las métricas de distribución de valores de atributos.

Visualiza anomalías de valores de atributos

Si la distribución de los valores de atributos difiere del límite especificado en una canalización de supervisión, se considera una anomalía. Existen dos tipos de anomalías: sesgo en el entrenamiento y entrega, y desvío. Para calcular la desviación, Vertex AI compara los valores de atributo más recientes en producción con un modelo de referencia.

  • Para detectar la desviación entre el entrenamiento y la entrega, Vertex AI compara los valores de atributo más recientes en producción con la distribución estadística de los valores de atributo en los datos de entrenamiento. En este caso, la distribución estadística de los valores de atributo en los datos de entrenamiento se considera la distribución del modelo de referencia. Obtén más información sobre el sesgo en el entrenamiento y la entrega.

  • Para detectar el desvío, Vertex AI compara los valores de atributo más recientes en producción con la distribución estadística de valores de atributo de la ejecución de supervisión más reciente que se produjo al menos una hora. En este caso, la distribución estadística de los valores de atributo de la ejecución de supervisión más reciente se considera la distribución del modelo de referencia. Obtén más información sobre el desvío.

En ambos casos, la distribución del modelo de referencia se compara con los valores de atributo más recientes en producción para calcular una puntuación de distancia.

  • Para los atributos categóricos, la puntuación de distancia se calcula mediante la distancia L infinito. En este caso, si la puntuación de distancia excede el umbral que especificaste en el campo Límite de alertas categóricas, se identifica como una anomalía.

  • Para los atributos numéricos, la puntuación de distancia se calcula mediante la divergencia de Jensen-Shannon. En este caso, si la puntuación de distancia excede el umbral que especificaste en el campo Límite de alertas numéricas, se identifica como una anomalía.

En cualquier caso, la anomalía puede ser un sesgo en el entrenamiento y la entrega, o un desvío, según la distribución del modelo de referencia que se usa para calcular la puntuación de distancia. Se escribe un registro de anomalía en Cloud Logging con el nombre de registro featurestore_log. Puedes sincronizar los registros con cualquier servicio descendente que admita Cloud Logging, como Pub/Sub.

Para obtener más información sobre cómo configurar los umbrales de alerta, consulta Crea un tipo de entidad con la supervisión habilitada.

Consulta de ejemplo para todas las anomalías generadas para un almacén de atributos específico

logName="projects/model-monitoring-demo/logs/aiplatform.googleapis.com%2FFfeaturestore_log"
resource.labels.resource_container=<project_number>
resource.labels.featurestore_id=<featurestore_id>

Ejemplo de una entrada de registro de anomalías

{
  "insertId": "ktbx5jf7vdn7b",
  "jsonPayload": {
    "threshold": 0.001,
    "featureName": "projects/<project_number>/locations/us-central1/featurestores/<featurestore_id>/entityTypes/<entity_type_id>/features/<feature_id>",
    "deviation": 1,
    "@type": "type.googleapis.com/google.cloud.aiplatform.logging.FeatureAnomalyLogEntry",
    "objective": "Featurestore Monitoring Snapshot Drift Anomaly"
  },
  "resource": {
    "type": "aiplatform.googleapis.com/Featurestore",
    "labels": {
      "resource_container": "<project_number>",
      "location": "us-central1",
      "featurestore_id": "<featurestore_id>"
    }
  },
  "timestamp": "2022-02-06T00:54:06.455501Z",
  "severity": "WARNING",
  "logName": "projects/model-monitoring-demo/logs/aiplatform.googleapis.com%2Ffeaturestore_log",
  "receiveTimestamp": "2022-02-06T00:54:06.476107155Z"
}

Supervisa los errores de escritura del almacenamiento sin conexión para la transferencia de transmisión

Use la consola de Google Cloud para supervisar los errores de escritura en el almacenamiento sin conexión durante la transferencia de transmisión.

Visualiza las métricas de la transferencia de transmisión al almacenamiento sin conexión

Puedes supervisar la métrica de escritura de almacenamiento sin conexión para la transmisión de escritura para Vertex AI Feature Store (Legacy) en el Explorador de métricas.

IU web

  1. En la consola de Google Cloud, ve al Explorador de métricas:

    Ir al Explorador de métricas

  2. En la barra de herramientas, selecciona la pestaña Explorador.

  3. En la pestaña Configuración, especifica los datos que aparecerán en el gráfico:

    • Recurso y métrica: selecciona la métrica Vertex AI Feature Store: escritura de almacenamiento sin conexión para la escritura de transmisión.

    • Agrupar por: selecciona error_code.

    • Período de alineación mínimo: especifica el intervalo de tiempo mínimo para alinear los datos en el gráfico.

  4. Después de actualizar estos campos, el gráfico muestra los errores de escritura de almacenamiento sin conexión para los distintos códigos de error.

    Después de generar el gráfico, puedes agregarlo a tu panel personalizado. Para obtener más información, consulta Guarda un gráfico para referencias futuras.

Visualiza los registros de Vertex AI Feature Store (Legacy)

Puedes ver las entradas de registro de tu almacén de atributos, incluidos los registros generados durante los errores de escritura de la tienda sin conexión en el Explorador de registros.

IU web

  1. En la consola de Google Cloud, ve a la página Explorador de registros.

    Ir al Explorador de registros.

  2. En el Compilador de consultas, agregue los siguientes parámetros de consulta y haga clic en Ejecutar consulta:

    • Recurso: selecciona Vertex AI Feature Store.
    • Nombre del registro: en API de Vertex AI, selecciona aiplatform.googlapis.com/featurestore_log.