Sistemas de AA de producción: Pruebas de implementación

Ya puedes implementar el modelo de unicornios que predice las apariciones de unicornios. Cuando realices la implementación, la canalización de aprendizaje automático (AA) debería ejecutarse, actualizarse y entregarse sin problemas. Si implementar un modelo fuera tan fácil como presionar un gran botón Implementar. Lamentablemente, un sistema de aprendizaje automático completo requiere pruebas para lo siguiente:

  • Valida los datos de entrada.
  • Validación de la ingeniería de atributos.
  • Validar la calidad de las versiones nuevas del modelo
  • Valida la infraestructura de publicación.
  • Evaluar la integración entre componentes de canalización

Muchos ingenieros de software prefieren el desarrollo basado en pruebas (TDD). En el TDD, los ingenieros de software escriben pruebas antes de escribir el código fuente “real”. Sin embargo, la TDD puede ser complicada en el aprendizaje automático. Por ejemplo, antes de entrenar tu modelo, no puedes escribir una prueba para validar la pérdida. En su lugar, primero debes descubrir la pérdida alcanzable durante el desarrollo del modelo y luego probar las versiones nuevas del modelo en función de la pérdida alcanzable.

Información acerca del modelo unicornio

En esta sección, se hace referencia al modelo unicornio. Tenga en cuenta lo siguiente:

Estás usando el aprendizaje automático para crear un modelo de clasificación que prediga la aparición de unicornios. Tu conjunto de datos detalla 10,000 apariciones de unicornios y 10,000 no apariciones de unicornios. El conjunto de datos contiene la ubicación, la hora del día, la elevación, la temperatura, la humedad, la cobertura de árboles, la presencia de un arco iris y muchas otras funciones.

Prueba las actualizaciones de modelos con un entrenamiento reproducible

Quizás quieras seguir mejorando tu modelo unicornio. Por ejemplo, supongamos que realizas ingeniería de atributos adicional en un atributo determinado y, luego, vuelves a entrenar el modelo con la esperanza de obtener mejores resultados (o al menos los mismos). Lamentablemente, a veces es difícil reproducir el entrenamiento del modelo. Para mejorar la reproducibilidad, sigue estas recomendaciones:

  • Inicializa de forma determinística el generador de números aleatorios. Para obtener más información, consulta aleatorización en la generación de datos.

  • Inicializa los componentes del modelo en un orden fijo para asegurarte de que obtengan el mismo número aleatorio del generador de números aleatorios en cada ejecución. Por lo general, las bibliotecas de aprendizaje automático manejan este requisito automáticamente.

  • Toma el promedio de varias ejecuciones del modelo.

  • Usa el control de versión, incluso para las iteraciones preliminares, de modo que puedas identificar el código y los parámetros cuando investigues tu modelo o canalización.

Incluso después de seguir estos lineamientos, es posible que aún existan otras fuentes de no determinismo.

Prueba las llamadas a la API de aprendizaje automático

¿Cómo pruebas las actualizaciones de las llamadas a la API? Podrías volver a entrenar tu modelo, pero eso requiere mucho tiempo. En su lugar, escribe una prueba de unidades para generar datos de entrada aleatorios y ejecuta un solo paso de descenso del gradiente. Si este paso se completa sin errores, es probable que las actualizaciones de la API no hayan arruinado tu modelo.

Cómo escribir pruebas de integración para componentes de canalización

En una canalización de IA, los cambios en un componente pueden causar errores en otros componentes. Para verificar que los componentes funcionen en conjunto, escribe una prueba de integración que ejecute toda la canalización de extremo a extremo.

Además de ejecutar pruebas de integración de forma continua, debes ejecutar pruebas de integración cuando envíes modelos y versiones de software nuevos. La lentitud de ejecutar toda la canalización dificulta las pruebas de integración continua. Para ejecutar pruebas de integración más rápido, entrena en un subconjunto de los datos o con un modelo más simple. Los detalles dependen de tu modelo y tus datos. Para obtener una cobertura continua, debes ajustar las pruebas más rápidas para que se ejecuten con cada versión nueva del modelo o software. Mientras tanto, las pruebas lentas se ejecutarían de forma continua en segundo plano.

Valida la calidad del modelo antes de publicarlo

Antes de enviar una versión nueva del modelo a producción, prueba los siguientes dos tipos de degradaciones de calidad:

  • Degradación repentina. Un error en la versión nueva podría causar una calidad mucho más baja. Para validar las versiones nuevas, verifica su calidad en comparación con la versión anterior.

  • Degradación lenta. Es posible que la prueba de degradación repentina no detecte una degradación lenta de la calidad del modelo en varias versiones. En su lugar, asegúrate de que las predicciones de tu modelo en un conjunto de datos de validación cumplan con un umbral fijo. Si tu conjunto de datos de validación se desvía de los datos en vivo, actualízalo y asegúrate de que tu modelo siga cumpliendo con el mismo umbral de calidad.

Valida la compatibilidad del modelo con la infraestructura antes de la publicación

Si tu modelo se actualiza más rápido que el servidor, es posible que tenga dependencias de software diferentes, lo que podría causar incompatibilidades. Para asegurarte de que las operaciones que usa el modelo estén presentes en el servidor, realiza la etapa de pruebas del modelo en una versión de zona de pruebas del servidor.