Descripción general de la supervisión de modelos

En este documento, se describe cómo BigQuery ML admite la supervisión de modelos de aprendizaje automático (AA) a través de la evaluación y comparación de los datos que usa un modelo. Esto incluye comparar los datos de entrega de un modelo con los datos de entrenamiento y los datos de entrega nuevos con los datos de entrega usados antes.

Comprender los datos que usan tus modelos es un aspecto crítico del AA, ya que estos datos afectan el rendimiento del modelo. Comprender cualquier variación entre los datos de entrenamiento y de entrega es muy importante para garantizar que los modelos permanezcan precisos con el tiempo. Un modelo tiene un mejor rendimiento en la entrega de datos que son similares a los datos de entrenamiento. Cuando los datos de entrada difieren de los datos que se usan para entrenar el modelo, el rendimiento del modelo puede disminuir, incluso si el modelo en sí no cambió.

BigQuery ML proporciona funciones para ayudarte a analizar los datos de entrenamiento y entrega para el sesgo de datos y el desvío de datos:

  • Ocurre un sesgo de datos cuando la distribución de los valores de atributos para los datos de entrenamiento es muy diferente de la entrega de datos en producción. Las estadísticas de entrenamiento del modelo se guardan durante el entrenamiento del modelo, por lo que los datos de entrenamiento originales no son necesarios para que uses la detección de sesgo.
  • El desvío de datos ocurre cuando la distribución de datos de atributos en la producción cambia de manera significativa con el tiempo. La detección de desvío es compatible con intervalos de datos consecutivos, por ejemplo, entre diferentes días de entrega de datos. Esto te permite recibir notificaciones si los datos de entrega cambian con el tiempo, antes de que los conjuntos de datos divergen demasiado como para volver a entrenar el modelo.

Usa las siguientes funciones para supervisar modelos en BigQuery ML:

  • ML.DESCRIBE_DATA: calcula estadísticas descriptivas para un conjunto de datos de entrenamiento o entrega.
  • ML.VALIDATE_DATA_SKEW: calcula las estadísticas de un conjunto de datos de entrega y, luego, compáralas con las estadísticas de datos de entrenamiento que se calcularon cuando se entrenó un modelo de BigQuery ML, para identificar diferencias anómalas entre los dos conjuntos de datos. Las estadísticas solo se calculan para las columnas de atributos en los datos de entrega que coinciden con las columnas de atributos en los datos de entrenamiento, para lograr un mejor rendimiento y un menor costo.
  • ML.VALIDATE_DATA_DRIFT: calcula y compara las estadísticas de dos conjuntos de datos de entrega para identificar las diferencias anómalas entre los dos conjuntos de datos.
  • ML.TFDV_DESCRIBE: calcula estadísticas descriptivas detalladas para un conjunto de datos de entrenamiento o entrega. Esta función proporciona el mismo comportamiento que la API de tfdv.generate_statistics_from_csv de TensorFlow.
  • ML.TFDV_VALIDATE: compara las estadísticas de las estadísticas de datos de entrenamiento y entrega, o dos conjuntos de estadísticas de datos de entrega, para identificar las diferencias anómalas entre los dos conjuntos de datos. Esta función proporciona el mismo comportamiento que la API de validate_statistics de TensorFlow.

Supervisa casos de uso

En esta sección, se describe cómo usar las funciones de supervisión de modelos de BigQuery ML en casos de uso comunes de supervisión.

Supervisión básica del sesgo de datos

Este caso de uso es adecuado cuando deseas desarrollar y supervisar con rapidez un modelo en busca de sesgo de datos y no necesitas estadísticas de sesgo detalladas para integrarlas en una solución de supervisión existente.

Los pasos típicos para este caso de uso son los siguientes:

  1. Ejecuta la función ML.DESCRIBE_DATA en tus datos de entrenamiento y entrega para asegurarte de que ambos conjuntos de datos se comparen de manera adecuada entre sí y estén dentro de los parámetros esperados.
  2. Crea un modelo de BigQuery ML y entrena en los datos de entrenamiento.
  3. Ejecuta la función ML.VALIDATE_DATA_SKEW para comparar las estadísticas de datos de entrega con las estadísticas de datos de entrenamiento que se calcularon durante la creación del modelo para ver si hay sesgo de datos.
  4. Si hay sesgo de datos, investiga la causa raíz, ajusta los datos de entrenamiento de forma adecuada y, luego, vuelve a entrenar el modelo.

Supervisión básica de desvío de datos

Este caso de uso es adecuado cuando deseas desarrollar y supervisar un modelo con rapidez para detectar desvíos de datos y no necesitas estadísticas de desvío detalladas para integrarlas en una solución de supervisión existente.

Los pasos típicos para este caso de uso son los siguientes:

  1. Ejecuta la función ML.DESCRIBE_DATA en tus datos de entrenamiento y entrega para asegurarte de que ambos conjuntos de datos se comparen de manera adecuada entre sí y estén dentro de los parámetros esperados.
  2. Crea un modelo de BigQuery ML y entrena en los datos de entrenamiento.
  3. Ejecuta la función ML.VALIDATE_DATA_DRIFT para comparar las estadísticas de dos conjuntos de datos de entrega diferentes para ver si hay algún desvío de datos. Por ejemplo, es posible que desees comparar los datos de entrega actuales con los datos de entrega históricos de una instantánea de tabla o con las funciones entregadas en un momento determinado, lo que puedes obtener mediante la función ML.FEATURES_AT_TIME.
  4. Si hay un desvío de datos, investiga la causa raíz, ajusta los datos de entrenamiento de forma adecuada y, luego, vuelve a entrenar el modelo.

Supervisión avanzada de desvío o sesgo de datos

Este caso de uso es adecuado cuando deseas que estadísticas de desvío o sesgos detalladas se integren en una solución de supervisión existente o para otros fines.

Los pasos típicos para este caso de uso son los siguientes:

  1. Ejecuta la función ML.TFDV_DESCRIBE en los datos de entrenamiento y entrega a intervalos adecuados para tu solución de supervisión y guarda los resultados de la consulta. Este paso te permite comparar datos de entrega futuros con datos de entrenamiento y entrega de puntos pasados en el tiempo.
  2. Ejecuta la función ML.TFDV_VALIDATE en las estadísticas de datos de entrenamiento y entrega, o en dos conjuntos de estadísticas de datos de entrega, para evaluar el sesgo de datos o el desvío de atributos, respectivamente. Los datos de entrenamiento y entrega se deben proporcionar como un búfer de protocolo DatasetFeatureStatisticsList de TensorFlow en formato JSON. Puedes generar un búfer de protocolo en el formato correcto si ejecutas la función ML.TFDV_DESCRIBE o puedes cargarlo desde fuera de BigQuery. En el siguiente ejemplo, se muestra cómo evaluar el sesgo de atributos:

    DECLARE stats1 JSON;
    DECLARE stats2 JSON;
    
    SET stats1 = (
      SELECT * FROM ML.TFDV_DESCRIBE(TABLE `myproject.mydataset.training`)
    );
    SET stats2 = (
      SELECT * ML.TFDV_DESCRIBE(TABLE `myproject.mydataset.serving`);
    );
    
    SELECT ML.TFDV_VALIDATE(stats1, stats2, 'SKEW');
    
    INSERT `myproject.mydataset.serve_stats`
      (t, dataset_feature_statistics_list)
    SELECT CURRENT_TIMESTAMP() AS t, stats1;
    
    
  3. Si hay un sesgo o un desvío de datos, investiga la causa raíz, ajusta los datos de entrenamiento de forma adecuada y, luego, vuelve a entrenar el modelo.

Automatización de la supervisión

Puedes automatizar la supervisión mediante una consulta programada para ejecutar la función de supervisión, evaluar el resultado y volver a entrenar el modelo si se detectan anomalías. Debes habilitar las notificaciones por correo electrónico como parte de la configuración de la consulta programada.

Para ver un ejemplo que muestra cómo automatizar la función ML.VALIDATE_DATA_SKEW, consulta Automatiza la detección de sesgo.