A fin de iniciar un trabajo de supervisión, Model Monitoring necesita conocer el esquema de tu conjunto de datos tabular para analizar correctamente la carga útil de entrada.
Para los modelos de AutoML, Model Monitoring analiza el esquema de forma automática porque Vertex AI ya puede acceder a tus datos de entrenamiento.
Para modelos entrenados personalizados:
Model Monitoring puede analizar esquemas de forma automática para modelos que usan un formato de entrada de pares clave-valor estándar.
Para los modelos entrenados personalizados que no usan un formato de entrada de par clave-valor, es posible que debas proporcionar un esquema cuando crees tu trabajo de supervisión.
La generación de esquemas varía según si habilitas Model Monitoring para un extremo de predicción en línea o por lotes.
Análisis de esquemas para extremos de predicción en línea
Para los extremos de predicción en línea, puedes permitir que Model Monitoring analice el esquema de forma automática o suba un esquema cuando crees un trabajo de supervisión.
Análisis automático de esquemas
Después de habilitar la detección de sesgo o desvíos para un extremo en línea, Model Monitoring suele analizar automáticamente el esquema de entrada. Para el análisis automático de esquemas, Model Monitoring analiza las primeras 1,000 solicitudes de entrada a fin de determinar el esquema.
El análisis de esquemas automático funciona mejor cuando las solicitudes de entrada se formatean como pares clave-valor, en los que "key"
es el nombre de la función y "value"
es su valor. Por ejemplo:
"key":"value"
{"TenYearCHD":"0", "glucose":"5.4", "heartRate":"1", "age":"30", "prevalentStroke":"0", "gender":"f", "ethnicity":"latin american"}
Si las entradas no están en formato "key":"value"
, el modelo de Monitoring intenta identificar el tipo de datos de cada atributo y asigna de forma automática un nombre de atributo predeterminado para cada entrada.
Esquemas de instancias personalizados
Puedes proporcionar tu propio esquema de entrada cuando creas un trabajo de Model Monitoring para garantizar que Model Monitoring analice correctamente las entradas de tu modelo.
Este esquema se llama esquema de instancia de análisis. El archivo de esquema especifica el formato de la carga útil de entrada, los nombres de cada atributo y el tipo de cada uno.
El esquema se debe escribir como un archivo YAML en el formato de API abierta. El siguiente ejemplo es para una solicitud de predicción con el formato object
:
type: object properties: age: type: string BMI: type: number TenYearCHD: type: string cigsPerDay: type: array items: type: string BPMeds: type: string required: - age - BMI - TenYearCHD - cigsPerDay - BPMeds
type
indica si tu solicitud de predicción tiene uno de los siguientes formatos:object
: pares clave-valorarray
: similar a un arraystring
: string de csv
properties
indica el tipo de cada atributo individual.Si la solicitud tiene un formato de array o de string csv, especifica el orden en el que se enumeran los atributos en cada solicitud en el campo
required
.
Si tu solicitud de predicción está en formato de array o de string csv, representa cualquier atributo que falte como valores nulos. Por ejemplo, considera una solicitud de predicción con cinco atributos:
[feature_a, feature_b, feature_c, feature_d, feature_e]
- Si feature_c
permite valores faltantes, una solicitud de muestra que falte feature_c
sería la siguiente: {[1, 2, , 4, 6]}
- La longitud de la lista sigue siendo 5, con un valor nulo en el medio.
Análisis de esquemas para predicciones por lotes
Para las predicciones por lotes, puedes permitir que Model Monitoring analice el esquema de forma automática o suba un esquema cuando crees un trabajo de supervisión.
Análisis automático de esquemas
Si no proporcionas un esquema durante la supervisión de la creación de trabajos, Model Monitoring infiere los tipos de datos de tus atributos y genera tu esquema en función de los datos de entrenamiento.
Model Monitoring además necesita saber qué atributo es la columna objetivo, que es el atributo que se predice. La columna de destino se excluye de la métrica del sesgo de esquema y atributos. Puedes especificar la columna de destino mientras creas un trabajo de supervisión.
Especificación de la columna de destino
Si no especificas la columna de destino mientras creas un trabajo de supervisión, Model Monitoring etiqueta el nombre de atributo más reciente en tus datos de entrenamiento como la columna de destino.
Por ejemplo, Model Monitoring etiqueta column_c
en estos datos de entrenamiento de CSV como la columna objetivo porque column_c
está al final de la primera fila:
column_a, column_b, column_d, column_c 1,"a", 2, "c" 2,"b", 342, "d"
Del mismo modo, Model Monitoring etiqueta column_c
en este archivo JSONL como la columna objetivo porque column_c
está al final de la primera fila:
{"column_a": 1, "column_b": "a", "column_d": 2, "column_c": "c" } {"column_a": 2, "column_b": "b", "column_c": "d", "column_d": 342}
En ambos ejemplos, el esquema final solo contiene column_a
, column_b
y column_d
.
Esquemas personalizados
En el esquema personalizado, se especifica el formato de la carga útil de entrada, los nombres de los atributos y el tipo de cada uno.
El esquema se debe escribir como un archivo YAML con la sintaxis de API abierta. El siguiente ejemplo es para una solicitud de predicción con el formato object
:
type: object properties: age: type: string BMI: type: number TenYearCHD: type: string cigsPerDay: type: array items: type: string BPMeds: type: string required: - age - BMI - TenYearCHD - cigsPerDay - BPMeds
Model Monitoring calcula el sesgo de los atributos según el resultado de la predicción por lotes de las líneas JSON. Si tu tipo de datos contiene un array, la longitud del array en los datos de entrada debe ser igual a la cantidad de atributos especificada en el archivo yaml. De lo contrario, Model Monitoring excluye la instancia de predicción con la longitud de array incorrecta del cálculo de sesgo de atributos.
Por ejemplo, los arrays de los siguientes tipos de datos contienen dos atributos:
Array:
{[[1, 2]]}
“Key”/“Value”:
{"key": 0, "values": [[1, 2]]}
El esquema correspondiente también debe especificar dos funciones:
type: object properties: name: type: string age: type: number required: - name - age
¿Qué sigue?
- Habilita la detección de sesgo y desvío en tus modelos.
- Prueba el notebook de ejemplo en Colab o visualízalo en GitHub.