Tablas de inferencia para supervisar y depurar modelos

Importante

Esta característica está en versión preliminar pública.

En este artículo se describen las tablas de inferencia para supervisar los modelos servidos. En el diagrama siguiente se muestra un flujo de trabajo típico con tablas de inferencia. La tabla de inferencia captura automáticamente las solicitudes entrantes y las respuestas salientes para un punto de conexión de servicio del modelo y las registra como una tabla delta del catálogo de Unity. Puede usar los datos de esta tabla para supervisar, depurar y mejorar los modelos de ML.

Flujo de trabajo de tablas de inferencia

¿Qué son las tablas de inferencia?

La supervisión del rendimiento de los modelos en los flujos de trabajo de producción es un aspecto importante del ciclo de vida de los modelos de inteligencia artificial y ML. Las tablas de inferencia simplifican la supervisión y el diagnóstico de los modelos registrando continuamente las entradas y respuestas de solicitudes (predicciones) de los puntos de conexión de Databricks Model Serving y guardándolos en una tabla Delta en el Catálogo de Unity. Después, puede usar todas las funcionalidades de la plataforma de Databricks, como consultas DBSQL, cuadernos y supervisión de Lakehouse para supervisar, depurar y optimizar los modelos.

Puede habilitar las tablas de inferencia en cualquier punto de conexión existente o recién creado y las solicitudes a ese punto de conexión se registran automáticamente en una tabla de UC.

Algunas aplicaciones comunes para las tablas de inferencia son las siguientes:

  • Supervisar la calidad de los datos y del modelo. Puede supervisar continuamente el rendimiento del modelo y el desfase de datos mediante la supervisión de Lakehouse. Lakehouse Monitoring genera automáticamente paneles de calidad de datos y modelos que puede compartir con las partes interesadas. Además, puede habilitar las alertas para saber cuándo necesita volver a entrenar el modelo en función de los cambios en los datos entrantes o las reducciones en el rendimiento del modelo.
  • Depuración de problemas de producción. Las tablas de inferencias registran datos como códigos de estado HTTP, tiempos de ejecución de modelos y códigos JSON de solicitud y respuesta. Puede usar estos datos de rendimiento con fines de depuración. También puede usar los datos históricos en tablas de inferencia para comparar el rendimiento del modelo en las solicitudes históricas.
  • Cree un corpus de entrenamiento. Al unir tablas de inferencia con etiquetas de verdad básica, puede crear un corpus de entrenamiento que puede usar para volver a entrenar o ajustar y mejorar el modelo. Con flujos de trabajo de Databricks, puede configurar un bucle de comentarios continuo y automatizar el re-entrenamiento.

Requisitos

  • Su área de trabajo debe estar habilitada para Unity Catalog.
  • Para habilitar las tablas de inferencia en un punto de conexión, tanto el creador del punto de conexión como el modificador necesitan los permisos siguientes:
    • Permiso CAN MANAGE en el punto de conexión.
    • USE CATALOG permisos en el catálogo especificado.
    • USE SCHEMA permisos en el esquema especificado.
    • CREATE TABLE permisos en el esquema.

Habilitar y deshabilitar las tablas de inferencia

En esta sección se muestra cómo habilitar o deshabilitar tablas de inferencia mediante la interfaz de usuario de Databricks. También puede usar la API; Consulte Habilitación de tablas de inferencia en puntos de conexión de servicio de modelos mediante la API para obtener instrucciones.

El propietario de las tablas de inferencia es el usuario que ha creado el punto de conexión. Todas las listas de control de acceso (ACL) de la tabla siguen los permisos estándar de Unity Catalog y el propietario de la tabla puede modificarlos.

Advertencia

La tabla de inferencia podría dañarse si realiza alguna de las acciones siguientes:

  • Se cambia el esquema de la tabla.
  • Cambie el nombre de la tabla.
  • Elimine la tabla.
  • Se pierden permisos en el catálogo o esquema de Unity Catalog.

En este caso, el auto_capture_config del estado del punto de conexión muestra un estado de FAILED para la tabla de carga. Si esto sucede, debe crear un nuevo punto de conexión para seguir usando tablas de inferencia.

Para habilitar tablas de inferencia durante la creación de puntos de conexión, siga estos pasos:

  1. Haga clic en Servicio en la interfaz de usuario de Databricks Machine Learning.

  2. Haga clic en Crear punto de conexión de servicio.

  3. Seleccione Habilitar tabla de inferencia.

  4. En los menús desplegables, seleccione el catálogo y el esquema deseados donde desea que se encuentre la tabla.

    catálogo y esquema para la tabla de inferencia

  5. El nombre de tabla predeterminado es <catalog>.<schema>.<endpoint-name>_payload. Si lo desea, puede escribir un prefijo de tabla personalizado.

  6. Haga clic en Crear punto de conexión de servicio.

También puede habilitar tablas de inferencia en un punto de conexión existente. Para editar una configuración de punto de conexión existente, haga lo siguiente:

  1. Vaya a la página del punto de conexión.
  2. Haga clic en Editar configuración.
  3. Siga las instrucciones anteriores, empezando por el paso 3.
  4. Cuando haya terminado, haga clic en Actualizar punto de conexión de servicio.

Siga estas instrucciones para deshabilitar las tablas de inferencia:

Importante

Al deshabilitar las tablas de inferencia en un punto de conexión, no puede volver a habilitarlas. Para seguir usando tablas de inferencia, debe crear un nuevo punto de conexión y habilitar tablas de inferencia en él.

  1. Vaya a la página del punto de conexión.
  2. Haga clic en Editar configuración.
  3. Haga clic en Habilitar tabla de inferencia para quitar la marca de verificación.
  4. Cuando esté satisfecho con las especificaciones del punto de conexión, haga clic en Actualizar.

Flujo de trabajo: Supervisión del rendimiento del modelo mediante tablas de inferencia

Para supervisar el rendimiento del modelo mediante tablas de inferencia, siga estos pasos:

  1. Habilite las tablas de inferencia en su punto de conexión, ya sea durante la creación del punto de conexión o actualizándolo posteriormente.
  2. Programe un flujo de trabajo para procesar las cargas útiles JSON en la tabla de inferencia desempaquetándolas según el esquema del punto de conexión.
  3. (opcional) Unir las solicitudes y respuestas desempaquetadas con etiquetas de verdad para permitir el cálculo de las métricas de calidad del modelo.
  4. Cree una supervisión sobre la tabla Delta resultante y actualice las métricas.

Los cuadernos de inicio implementan este flujo de trabajo.

Bloc de notas para supervisar una tabla de inferencia

En el cuaderno siguiente se implementan los pasos descritos anteriormente para desempaquetar solicitudes de una tabla de inferencia de supervisión de Lakehouse. El bloc de notas puede ejecutarse bajo demanda o de forma periódica utilizando los flujos de trabajo de Databricks.

Tabla de inferencia del bloc de notas de inicio de Lakehouse monitoring

Obtener el cuaderno

Cuaderno de inicio para supervisar la calidad del texto de los puntos de conexión que atienden A LLM

En el cuaderno siguiente se desempaquetan las solicitudes de una tabla de inferencia, se calcula un conjunto de métricas de evaluación de texto (como la legibilidad y la toxicidad) y se habilita la supervisión de estas métricas. El bloc de notas puede ejecutarse bajo demanda o de forma periódica utilizando los flujos de trabajo de Databricks.

Cuaderno de inicio de la tabla de inferencia de LLM Lakehouse Monitoring

Obtener el cuaderno

Consulta y análisis de resultados en la tabla de inferencia

Una vez que los modelos servidos estén listos, todas las solicitudes realizadas a los modelos se registran automáticamente en la tabla de inferencia, junto con las respuestas. Puede ver la tabla en la interfaz de usuario, consultar la tabla desde DBSQL o un cuaderno, o consultar la tabla mediante la API de REST.

Para ver la tabla en la interfaz de usuario: en la página del punto de conexión, haga clic en el nombre de la tabla de inferencia para abrir la tabla en el Explorador de catálogos.

vínculo al nombre de la tabla de inferencia en la página del punto de conexión

Para consultar la tabla desde DBSQL o un cuaderno de Databricks: puede ejecutar código similar al siguiente para consultar la tabla de inferencia.

SELECT * FROM <catalog>.<schema>.<payload_table>

Si ha habilitado tablas de inferencia mediante la interfaz de usuario, payload_table es el nombre de tabla que ha asignado al crear el punto de conexión. Si ha habilitado tablas de inferencia mediante la API, payload_table se notifica en la secciónstate de la respuestaauto_capture_config. Para obtener un ejemplo, consulte Habilitación de tablas de inferencia en puntos de conexión de servicio de modelos mediante la API.

Nota de rendimiento

Después de invocar el punto de conexión, puede ver la invocación registrada en la tabla de inferencia al cabo de 10 minutos de enviar una solicitud de puntuación. Además, Azure Databricks garantiza que la entrega de registros se produzca al menos una vez, por lo que es posible, aunque poco probable, que se envíen registros duplicados.

Esquema de tabla de inferencia de Catálogo de Unity

Cada solicitud y respuesta que se registra en una tabla de inferencia se escribe en una tabla Delta con el siguiente esquema:

Nota:

Si invoca el punto de conexión con un lote de entradas, todo el lote se registra como una fila.

Nombre de la columna Descripción Tipo
databricks_request_id Identificador de solicitud generado por Azure Databricks adjunto a todas las solicitudes de servicio del modelo. STRING
client_request_id Identificador de solicitud generado por el cliente opcional que se puede especificar en el cuerpo de la solicitud de servicio del modelo. Consulte Especificar client_request_id para más información. STRING
date Fecha UTC en la que se recibió la solicitud de servicio del modelo. FECHA
timestamp_ms La marca de tiempo en milisegundos en que se recibió la solicitud de servicio de modelo. LONG
status_code El código de estado HTTP devuelto por el modelo. INT
sampling_fraction La fracción de muestreo usada en caso de que la solicitud se muestree de forma descendente. Este valor está comprendido entre 0 y 1, donde 1 representa que se incluyeron el 100 % de las solicitudes entrantes. DOUBLE
execution_time_ms Tiempo de ejecución en milisegundos para los que el modelo realizó la inferencia. Esto no incluye latencias de red de sobrecarga y solo representa el tiempo necesario para que el modelo genere predicciones. LONG
request Cuerpo JSON de solicitud sin procesar que se envió al punto de conexión de servicio del modelo. STRING
response Cuerpo JSON de solicitud sin procesar que se envió al punto de conexión de servicio del modelo. STRING
request_metadata Mapa de metadatos relacionados con el punto de conexión de servicio del modelo asociado a la solicitud. Este mapa contiene el nombre del punto de conexión, el nombre del modelo y la versión del modelo que se usa para el punto de conexión. MAPA<CADENA, CADENA>

Especificar client_request_id

El campo client_request_id es un valor opcional que el usuario puede proporcionar en el cuerpo de la solicitud de servicio de modelos. Esto permite al usuario proporcionar su propio identificador para una solicitud que se muestra en la tabla de inferencia final en client_request_id y se puede usar para unir la solicitud con otras tablas que utilizan client_request_id, como la combinación de etiquetas de verdad básica. Para especificar un valor client_request_id, inclúyalo como clave de nivel superior de la carga de la solicitud. Si no se especifica ningún valor client_request_id, el valor aparece como null en la fila correspondiente a la solicitud.

{
  "client_request_id": "<user-provided-id>",
  "dataframe_records": [
    {
      "sepal length (cm)": 5.1,
      "sepal width (cm)": 3.5,
      "petal length (cm)": 1.4,
      "petal width (cm)": 0.2
    },
    {
      "sepal length (cm)": 4.9,
      "sepal width (cm)": 3,
      "petal length (cm)": 1.4,
      "petal width (cm)": 0.2
    },
    {
      "sepal length (cm)": 4.7,
      "sepal width (cm)": 3.2,
      "petal length (cm)": 1.3,
      "petal width (cm)": 0.2
    }
  ]
}

El valor client_request_id se puede usar más adelante en combinaciones de etiquetas de verdad básica si hay otras tablas que tienen etiquetas asociadas con client_request_id.

Limitaciones

  • Claves administradas por el cliente no admitidas.
  • Para los puntos de conexión que hospedan modelos de base, las tablas de inferencia solo son compatibles con cargas de trabajo de rendimiento aprovisionado.
    • Las tablas de inferencia de los puntos de conexión en rendimiento aprovisionado no admiten el registro de solicitudes de streaming.
  • Las tablas de inferencias no son compatibles en los puntos de conexión que hospedan modelos externos.
  • Azure Firewall no se admite y puede producir errores en la creación de la tabla Delta del catálogo de Unity.
  • Cuando se habilitan las tablas de inferencia, el límite de simultaneidad máxima total en todos los modelos servidos en un único punto de conexión es 128. Póngase en contacto con el equipo de la cuenta de Azure Databricks para solicitar un aumento de este límite.
  • Si una tabla de inferencia contiene más de 500 000 archivos, no se registra ningún dato adicional. Para evitar superar este límite, ejecute OPTIMIZE o configure la retención en la tabla eliminando datos anteriores. Para comprobar el número de archivos de la tabla, ejecute DESCRIBE DETAIL <catalog>.<schema>.<payload_table>.

Para conocer las limitaciones generales del punto de conexión del servicio de modelos, consulte Límites y regiones del servicio de modelos.