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 sus datos de entrenamiento y comparar los datos de entrega nuevos con los datos de entrega que se usaron anteriormente.

Comprender los datos que usan tus modelos es un aspecto fundamental del AA, ya que estos datos afectan el rendimiento del modelo. Comprender cualquier variación entre los datos de entrenamiento y los de entrega es de especial importancia para garantizar que tus modelos sigan siendo 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:

  • El sesgo de datos ocurre 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 de modelos, por lo que no se requieren los datos de entrenamiento originales para usar la detección de sesgos.
  • 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íos es compatible con intervalos consecutivos de datos, 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 difieran demasiado para volver a entrenar el modelo.

Usa las siguientes funciones para supervisar modelos en BigQuery ML:

  • ML.DESCRIBE_DATA: Calcula las estadísticas descriptivas de 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 rápidamente un modelo para el sesgo de datos y no necesitas estadísticas de sesgo detalladas para integrarlas a 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 forma 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 los datos de entrega con las estadísticas de los datos de entrenamiento que se calcularon durante la creación del modelo para ver si hay algún sesgo de datos.
  4. Si hay sesgos en los datos, investiga la causa raíz, ajusta los datos de entrenamiento de manera adecuada y, luego, vuelve a entrenar el modelo.

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

Este caso de uso es adecuado cuando deseas desarrollar y supervisar rápidamente un modelo para el desvío de datos y no necesitas estadísticas de desvío detalladas para integrarlas a 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 forma 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 manera adecuada y, luego, vuelve a entrenar el modelo.

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

Este caso de uso es adecuado cuando deseas integrar estadísticas de sesgo o desvío detalladas a 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 tus datos de entrenamiento y entrega en intervalos adecuados para tu solución de supervisión y guarda los resultados de las consultas. Este paso te permite comparar los datos de entrega futuros con los datos de entrenamiento y entrega de puntos pasados en el tiempo.
  2. Ejecuta la función ML.TFDV_VALIDATE en las estadísticas de tus 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. Para generar un búfer de protocolo en el formato correcto, ejecuta la función ML.TFDV_DESCRIBE o cárgalo desde afuera 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 * FROM 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 sesgos o desvíos 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

Para automatizar la supervisión, puedes usar una búsqueda 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 muestre cómo automatizar la función ML.VALIDATE_DATA_SKEW, consulta Automatiza la detección de sesgos.