Supervisión

En Vertex AI Feature Store (antigua), puedes monitorizar y configurar alertas en feature stores y características. Por ejemplo, un equipo de operaciones puede monitorizar un almacén de características para hacer un seguimiento de su utilización de la CPU. Los propietarios de las características, como los científicos de datos, pueden monitorizar los valores de las características para detectar cambios a lo largo del tiempo.

Los métodos para monitorizar almacenes de características y características se describen en las siguientes secciones:

Monitorización de almacén de características

Vertex AI Feature Store (antigua) envía métricas sobre tu almacén de características a Cloud Monitoring, como la carga de la CPU, la capacidad de almacenamiento, las latencias de las solicitudes y la facturación. Vertex AI recoge y registra estas métricas. No es necesario que configure ni habilite la monitorización de feature store.

Para configurar umbrales y notificaciones, usa Cloud Monitoring. Por ejemplo, puedes definir una alerta si la carga media de la CPU supera el 70%, lo que podría requerir que aumentes el número de nodos de Feature Store.

También puedes ver las métricas de Feature Store en la sección Vertex AI de la Google Cloud consola para ver las tendencias a lo largo del tiempo. En algunos gráficos, la consola muestra valores agregados o calculados para que la información sea más fácil de consultar. Siempre puedes ver los datos sin procesar en Cloud Monitoring.

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

Monitorizar la facturación de los datos offline procesados en un almacén de características

Usa la consola para monitorizar los datos facturables procesados sin conexión por los métodos featurestores.batchReadFeatureValues y entityTypes.exportFeatureValues. Google Cloud Puedes ver los bytes facturables de cada almacén de características.

Puedes monitorizar la métrica Bytes facturables de Vertex AI Feature Store (antigua) en el Explorador de métricas.

Consola

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

    Ir al explorador de métricas

  2. En la lista Métrica, selecciona Vertex AI Feature Store > Featurestore > Bytes facturables.

  3. Haz clic en Aplicar. El gráfico muestra los datos facturables sin conexión de los almacenes de características de tu proyecto.

    Una vez que hayas generado el gráfico, podrás añadirlo a tu panel de control personalizado. Para obtener más información, consulta Guardar un gráfico para consultarlo más adelante.

Monitorización de valores de características

La monitorización de valores de características te permite hacer un seguimiento de cuánto cambia la distribución de valores de características en un almacén de características. Se admiten los siguientes tipos de monitorización de valores de características:

  • Análisis de capturas: Vertex AI Feature Store (antigua) toma capturas periódicas de los valores de tus características. Con el tiempo, a medida que ingieras más datos, es posible que observes que la distribución de los valores de las características cambia. Este cambio indica que es posible que haya que volver a entrenar los modelos que usen esas funciones. Puedes especificar un umbral para que las anomalías se registren en la consola de Cloud Logging siempre que la desviación de la distribución supere el umbral.

    En el caso de los conjuntos de datos que superen los 5 millones de IDs de entidad, Vertex AI Feature Store (antigua) genera capturas basadas en 5 millones de IDs de entidad seleccionados aleatoriamente en el periodo que haya especificado como número de días de obsolescencia.

  • Import Feature Analysis: cada operación ImportFeatureValues genera estadísticas de distribución de los valores ingeridos en Vertex AI Feature Store (antigua). Puede detectar anomalías comparando las estadísticas de distribución con la distribución de valores de características importada anteriormente o, si está habilitada, con la distribución de la instantánea.

    En el caso de los conjuntos de datos que superen los 5 millones de instancias, Vertex AI Feature Store (antigua) genera capturas basadas en datos seleccionados aleatoriamente, de la siguiente manera:

    • Si el número de instancias del conjunto de datos ingerido supera los 5 millones, pero no los 50 millones, la captura se genera a partir de 5 millones de instancias seleccionadas aleatoriamente.
    • Si el número de instancias del conjunto de datos ingerido supera los 50 millones, la instantánea se genera a partir del 10% de las instancias, seleccionadas de forma aleatoria.

Por ejemplo, imagina una función que recoge los precios de las casas que se han vendido recientemente y, a continuación, introduce los valores en un modelo para predecir el precio de una casa. Los precios de las casas vendidas recientemente pueden variar significativamente con el tiempo, o bien el lote de valores importados puede contener datos que se desvíen significativamente de los datos de entrenamiento. Vertex AI Feature Store (antigua) te avisa de este cambio. Después, puedes volver a entrenar el modelo para que use la información más reciente.

Definir una configuración de monitorización

Para empezar a monitorizar, puedes definir una configuración de monitorización en un tipo de entidad, lo que habilita la monitorización de todas las funciones de los siguientes tipos:

  • BOOL
  • STRING
  • DOUBLE
  • INT64

Puedes definir la configuración de monitorización al crear un tipo de entidad. También puede inhabilitar la monitorización de funciones específicas configurando la propiedad disableMonitoring. La configuración de monitorización del tipo de entidad especifica lo siguiente:

  • Indica si se debe habilitar la monitorización. La monitorización está inhabilitada de forma predeterminada.
  • Umbrales usados para detectar anomalías. El umbral predeterminado es 0,3.
  • Periodo retrospectivo, además del intervalo entre las instantáneas (para el análisis de instantáneas). El valor predeterminado es 21.
  • Si se debe habilitar el análisis de características de importación. El valor predeterminado es "disabled".

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

Crear un tipo de entidad con la monitorización habilitada

En el siguiente ejemplo se crea un tipo de entidad en el que se ha habilitado la monitorización de las características:

UI web

Solo se admite el análisis de la instantánea desde la interfaz de usuario.

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

    Ir a la página Funciones

  2. Selecciona una región en la lista desplegable Región.
  3. Haga clic en Crear tipo de entidad.
  4. Cambia la sección Monitorización de funciones a Habilitado.
  5. Introduce el número de días entre las instantáneas en el campo Intervalo de tiempo de la monitorización.
    El trabajo de monitorización de un tipo de entidad o una función se ejecuta a la hora en punto más cercana después de la hora del día en que habilites la monitorización del tipo de entidad o la función. Por ejemplo, si habilita la monitorización a las 22:30 del lunes y especifica dos días como intervalo de tiempo de monitorización, el primer trabajo de monitorización se ejecutará a las 23:00 del miércoles.
  6. En el campo Ventana retrospectiva de la monitorización, introduce el número de días que quieres que se tengan en cuenta para cada registro.
  7. Introduce el número del umbral que se usará para detectar anomalías en las funciones numéricas en el campo Umbral de alerta numérica.
  8. En el campo Umbral de alerta de categorías, introduzca el número del umbral que se usará para detectar anomalías en las funciones de categorías de este EntityType.
    Para obtener más información sobre cómo detectar anomalías en los valores de las funciones, consulte Ver anomalías en los valores de las funciones.
  9. Haz clic en Crear.
  10. En la tabla de funciones, haz clic en un tipo de entidad.
  11. Para añadir nuevas funciones a la entidad, haga clic en Añadir funciones.
  12. Para inhabilitar la monitorización de una función específica, desactiva Habilitar monitorización.

REST

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

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

  • LOCATION_ID: región en la que se encuentra el almacén de características, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATURESTORE_ID: ID del almacén de características.
  • ENTITY_TYPE_ID: ID del tipo de entidad.
  • DURATION: duración del intervalo entre las copias de seguridad, expresada en días.
  • STALENESS_DAYS: número de días que se tienen en cuenta al hacer las capturas.
  • NUMERICAL_THRESHOLD_VALUE: umbral para detectar anomalías en las características numéricas de este tipo de entidad. La desviación de las estadísticas se calcula mediante la divergencia de Jenson-Shannon.
  • CATEGORICAL_THRESHOLD_VALUE: umbral para detectar anomalías en las características categóricas de este tipo de entidad. La desviación estadística se calcula mediante la distancia L-infinito.
  • IMPORT_FEATURE_ANALYSIS_STATE: estado que indica si se debe habilitar el análisis de funciones de importación.
  • IMPORT_FEATURE_ANALYSIS_BASELINE: la línea de base para el análisis de funciones de importación si está habilitada.

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ía ver un resultado similar al siguiente. Puedes usar el OPERATION_ID de 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 Java instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en 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 Node.js instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en 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

Para saber cómo instalar y usar el SDK de Vertex AI para Python, consulta el artículo Usar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API del SDK de Vertex AI para Python.

Inhabilitar la monitorización de una función nueva

En el siguiente ejemplo se crea una función nueva con la monitorización desactivada:

REST

Para crear una función, envía una solicitud POST mediante el método features.create.

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

  • LOCATION_ID: región en la que se encuentra el almacén de características, como us-central1.
  • PROJECT_ID: .
  • FEATURESTORE_ID: ID del almacén de características.
  • ENTITY_TYPE_ID: ID del tipo de entidad.
  • FEATURE_ID: ID de la función.
  • VALUE_TYPE: el tipo de valor de la función.
  • DISABLE_MONITORING: asigna el valor true para inhabilitar explícitamente la monitorización.

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ía ver un resultado similar al siguiente. Puedes usar el OPERATION_ID de 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"
    }
  }
}

Actualizar la configuración de la monitorización

Puedes definir la configuración de monitorización al actualizar un tipo de entidad. También puede inhabilitar la monitorización de funciones específicas configurando la propiedad disableMonitoring.

Permiso para actualizar la configuración de monitorización de un tipo de entidad y sus funciones.

En el siguiente ejemplo se actualiza la configuración de monitorización de un tipo de entidad y de funciones específicas de ese tipo de entidad:

UI web

Solo se admite el análisis de la instantánea desde la interfaz de usuario.

  1. En la sección Vertex AI de la Google Cloud consola, ve a la página Funciones.
  2. Selecciona una región en la lista desplegable Región.
  3. En la tabla de funciones, consulta la columna Tipo de entidad para encontrar el tipo de entidad que quieras actualizar.
  4. Haga clic en el nombre del tipo de entidad para ver su página de detalles.
  5. En la barra de acciones, haz clic en Editar información.
  6. En Intervalo de tiempo de monitorización, introduce el número de días que transcurren entre las instantáneas.
    El trabajo de monitorización de un tipo de entidad o una función se ejecuta a la hora en punto más cercana después de la hora del día en que habilites la monitorización del tipo de entidad o la función. Por ejemplo, si habilita la monitorización a las 22:30 del lunes y especifica dos días como intervalo de tiempo de monitorización, el primer trabajo de monitorización se ejecutará a las 23:00 del miércoles.
  7. Haz clic en Actualizar.
  8. Del mismo modo, en la tabla de funciones, consulta la columna Funciones para encontrar la función que quieras actualizar.
  9. Haga clic en el nombre de la función para ver la página de detalles.
  10. En la barra de acciones, haz clic en Editar información.
  11. Para inhabilitar la monitorización de una función específica, desactiva Monitorización habilitada.

REST

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

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

  • LOCATION_ID: región en la que se encuentra el almacén de características, como us-central1.
  • PROJECT_ID: .
  • FEATURESTORE_ID: ID del almacén de características.
  • ENTITY_TYPE_ID: ID del tipo de entidad.
  • DURATION_IN_DAYS: duración del intervalo entre las copias de seguridad, expresada en días.
  • STALENESS_DAYS: número de días que se tienen en cuenta al hacer las capturas.
  • NUMERICAL_THRESHOLD_VALUE: umbral para detectar anomalías en las características numéricas de este tipo de entidad. La desviación de las estadísticas se calcula mediante la divergencia de Jenson-Shannon.
  • CATEGORICAL_THRESHOLD_VALUE: umbral para detectar anomalías en las características categóricas de este tipo de entidad. La desviación estadística se calcula mediante la distancia L-infinito.
  • IMPORT_FEATURE_ANALYSIS_STATE: estado que indica si se debe habilitar el análisis de funciones de importación.
  • IMPORT_FEATURE_ANALYSIS_BASELINE: la línea de base 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 siguiente:

{
  "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 Java instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en 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 Node.js instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en 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();

Inhabilitar la monitorización de una función

En el siguiente ejemplo se desactiva la monitorización de una característica:

REST

Para actualizar una función, envía una solicitud PATCH mediante el método features.patch.

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

  • LOCATION_ID: región en la que se encuentra el almacén de características, como us-central1.
  • PROJECT_ID: .
  • FEATURESTORE_ID: ID del almacén de características.
  • ENTITY_TYPE_ID: ID del tipo de entidad.
  • FEATURE_ID: ID de la función que se va a actualizar.
  • DISABLE_MONITORING: asigna el valor true para inhabilitar explícitamente la monitorización.

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 siguiente:

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

Ver las distribuciones de los valores de las características

Usa la consola Google Cloud para ver la distribución de los valores de las funciones a lo largo del tiempo.

UI web

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

    Ir a la página Funciones

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

  3. Para ver las distribuciones de valores de las características de todos los tipos de entidad, en la columna Tipo de entidad, haga clic en el tipo de entidad.

  4. Para ver las métricas de distribución de valores de una función, siga estos pasos:

    1. En la columna Función, haga clic en la función.

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

Ver anomalías de los valores de las características

Si la distribución de valores de una característica se desvía más allá del umbral especificado en una canalización de monitorización, se considera una anomalía. Hay dos tipos de anomalías: sesgo entre entrenamiento y servicio, y deriva. Para calcular la desviación, Vertex AI compara los valores de las funciones más recientes en producción con una base de referencia.

  • Para detectar la asimetría entre el entrenamiento y el servicio, Vertex AI compara los valores de características más recientes en producción con la distribución estadística de los valores de características de los datos de entrenamiento. En este caso, la distribución estadística de los valores de las características de los datos de entrenamiento se considera la distribución de referencia. Más información sobre la diferencia entre el entrenamiento y el servicio

  • Para detectar la deriva, Vertex AI compara los valores de las características más recientes en producción con la distribución estadística de los valores de las características de la ejecución de monitorización más reciente que se haya producido hace al menos una hora. En este caso, la distribución estadística de los valores de las características de la monitorización más reciente se considera la distribución de referencia. Más información sobre la deriva

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

  • En el caso de las funciones categóricas, la puntuación de distancia se calcula mediante la distancia L-infinito. En este caso, si la puntuación de distancia supera el umbral que especifiques en el campo Umbral de alerta categórico, se identificará como una anomalía.

  • En el caso de las características numéricas, la puntuación de distancia se calcula mediante la divergencia de Jensen-Shannon. En este caso, si la puntuación de distancia supera el umbral que especifique en el campo Umbral de alerta numérica, se identificará como una anomalía.

En cualquier caso, la anomalía puede ser una desviación o un desfase entre el entrenamiento y el servicio, en función de la distribución de referencia utilizada para calcular la puntuación de distancia. Se escribe un registro de anomalías en Cloud Logging con el nombre de registro featurestore_log. Puede sincronizar los registros con cualquier servicio de nivel inferior compatible con Cloud Logging, como Pub/Sub.

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

Consulta de ejemplo de todas las anomalías generadas para un almacén de características concreto

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

Monitorizar errores de escritura en el almacenamiento sin conexión para la ingestión de streaming

Usa la Google Cloud consola para monitorizar los errores de escritura en el almacenamiento sin conexión durante la ingestión de streaming.

Ver métricas de la ingestión de streaming en el almacenamiento sin conexión

Puedes monitorizar la métrica Escritura de almacenamiento offline para escritura de streaming de Vertex AI Feature Store (antigua) en el Explorador de métricas.

UI web

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

    Ir al explorador de métricas

  2. Especifica los datos que quieres que aparezcan en el gráfico:

    • Recurso y métrica: selecciona la métrica Vertex AI Feature Store > Escritura de almacenamiento offline para escritura de streaming.

    • Filtrar: selecciona error_code.

  3. Haz clic en Aplicar. El gráfico muestra los errores de escritura del almacenamiento sin conexión de los distintos códigos de error.

    Una vez que hayas generado el gráfico, podrás añadirlo a tu panel de control personalizado. Para obtener más información, consulta Guardar un gráfico para consultarlo más adelante.

Ver los registros de Vertex AI Feature Store (antigua)

Puede ver las entradas de registro de su almacén de características, incluidos los registros generados durante los errores de escritura del almacén offline, en el Explorador de registros.

UI web

  1. En la Google Cloud consola, ve al Explorador de registros:

    Ir al Explorador de registros

  2. En el Generador de consultas, añada los siguientes parámetros de consulta y, a continuación, 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.