Gu铆a para implementar los modelos de Machine Learning

Los beneficios reales de la transformaci贸n de Machine Learning solo se puede conseguir cuando los modelos se utilizan constantemente en una retroalimentaci贸n de los datos de producci贸n.

Existen numerosas formas en las que las empresas pueden o necesitan implementar sus modelos de Machine Learning, lo que dicta son las limitaciones organizativas.

API, la forma m谩s com煤n de implementar un modelo

No se de extra帽ar que la forma m谩s com煤n de implementar Machine Learning sea exponer el modelo como un servicio de API. Las APIs pueden conectarse f谩cilmente a aplicaciones de producci贸n, dado que existe una necesidad de ingenier铆a para ello.

Docker y Flask, la tecnolog铆a m谩s com煤n para los modelos Python

La mayor铆a de los modelos son desarrollados en Python, por lo que se utiliza como servicio API utilizando Docker y Flask. Los contenedores proporcionan un entorno aislado para que los modelos se ejecuten, manejan bien las dependencias de los modelos y proporcionan una capa de seguridad y gesti贸n de riesgo lejos del resto de la pila de ingenier铆a.

El despliegue o implementaci贸n de modelos Machine Learning es el proceso para hacer que los modelos est茅n disponibles en entornos de producci贸n, donde pueden proporcionar predicciones a otros sistemas de software. Una vez que se implementan los modelos en la producci贸n es que comienzan a agregar valor a las empresas, por lo que es fundamental este paso. Sin embargo, no es tan sencillo la implementaci贸n de los modelos. Lleva un tiempo incre铆blemente largo desde la selecci贸n del modelo correcto hasta la integraci贸n del modelo en entornos de producci贸n.

Dificultad en los sistemas de Machine Learning

Escuela AprendeIA - Curso Aprende Inteligencia Artificial

Una de las razones por las que la implementaci贸n o despliegue de los modelos de Machine Learning es complejo es que incluso la forma en que el concepto tiende a formularse es enga帽osa. En realidad, en un sistema t铆pico para desplegar modelos de Machine Learning, la parte del modelo es un componente diminuto.聽 El modelo es una peque帽a fracci贸n de un sistema global.

Por lo tanto, los sistemas de Machine Learning requiere la cooperaci贸n entre m煤ltiples equipos y m煤ltiples experticias. Esto significa que no se puede pensar en la implementaci贸n del modelo de forma aislada, sino que es necesario planificarla a nivel de sistema.

El despliegue inicial no es realmente la parte dif铆cil, aunque parezca ser un reto. Es el mantenimiento continuo del sistema, las actualizaciones y los experimentos, la auditor铆a y el seguimiento lo que hace que la deuda t茅cnica real comience a acumularse. Es necesario pensar cuidadosamente en la arquitectura de tu sistema si deseas afrontar los retos que se describen m谩s adelante.

Arquitectura del sistema de Machine Learning

El punto de partida para la arquitectura debe ser siempre los requisitos del negocio y los objetivos m谩s amplios de la empresa. No se debe buscar la 煤ltima tecnolog铆a, es necesario primero entender las limitaciones que se tiene, qu茅 valor est谩 creando y para qui茅n.

Algunas de las preguntas que te puedes hacer para definir la arquitectura son las siguientes:

  • 驴Necesitas poder generar predicciones en tiempo real, en milisegundos o segundos, o bastar谩 con generar las predicciones 30 minutos o un d铆a despu茅s de recibir los datos de entrada?
  • 驴Con qu茅 frecuencia esperas actualizar los modelos?
  • 驴Cu谩l ser谩 la demanda de predicciones?
  • 驴Con qu茅 tama帽o de datos se est谩 tratando?
  • 驴Qu茅 tipos de algoritmos espera utilizar y si realmente se necesita?
  • 驴Se encuentra en un entorno regulado en el que la capacidad de auditar el sistema es importante?
  • 驴Se puede hacer esta tarea si Machine Learning?
  • 驴Cu谩n grande y experimentado es su equipo para la implementaci贸n y mantenimiento del sistema?

Una vez que hayas hecho un balance de las necesidades, es 煤til considerar algunas opciones de arquitectura de alto nivel para un sistema de Machine Learning. La siguiente lista no es la 煤nica, pero si son los enfoques m谩s utilizados de arquitectura.

Cada una de estas opciones tienen sus ventajas y desventajas, como se muestra en la tabla. Los detalles pueden variar significativamente dentro de estas amplias categor铆as. Es importante mencionar que la opci贸n 3 tiene a requerir un dise帽o complejo y una configuraci贸n de infraestructura.

Por lo general la opci贸n 1, tiende ser la m谩s implementada por t茅rminos de rendimiento vs. Complejidad, particularmente para organizaciones sin un equipo de desarrolladores maduro.

Elecci贸n del idioma

Ser铆a f谩cil implementar si el lenguaje de programaci贸n que utiliza en su entorno de investigaci贸n se ajusta al entorno de producci贸n. Esto significa t铆picamente Python, debido a lo f谩cil que es utilizarlo para el procesamiento de datos y desarrollar modelos de Machine Learning. Sin embargo, si la velocidad es una preocupaci贸n real entonces Python puede no ser factible, aunque hay muchas maneras de sacar m谩s provecho de Python.

Esta decisi贸n de cambiar de idioma por preocupaciones de rendimiento es una decisi贸n importante, solo debe tomarse cuando sea necesario, ya que los gastos adicionales de comunicaci贸n entre los equipos de investigaci贸n y producci贸n se convierten en una carga significativa.

Principios claves para el dise帽o de un sistema de Machine Learning

Independientemente de c贸mo decidas dise帽ar la arquitectura del sistema, debes tener en cuenta los siguientes principios:

Construir para que sea reproducible desde el principio: en caso de que tuvieras que explicar una predicci贸n del pasado, mant茅n todas las entradas y salidas del modelo, as铆 como todos los metadatos relevantes como la configuraci贸n, las dependencias, la geograf铆a, las zonas horarias y cualquier cosa que creas que puedas necesitar. Presta atenci贸n al versionado, incluyendo los datos de su entrenamiento.

Trata tus pasos de Machine Learning como parte de tu construcci贸n: es decir, automatizar la formaci贸n y la publicaci贸n de modelos.

Plan de extensibilidad: en caso que vayas a actualizar los modelos de forma regular, debes pensar cuidadosamente como lo har谩s desde el principio.

Modularidad: en la medida de lo posible, trata de reutilizar el c贸digo de preprocesamietno y de la ingenier铆a de caracter铆sticas del entorno de investigaci贸n en el entorno de producci贸n.

Pruebas: planea pasar m谩s tiempo probando las aplicaciones de Machine Learning, porque requieren tipos adicionales de pruebas.

Flujos de datos reproducibles

A medida que se pasa del entorno de investigaci贸n a las aplicaciones listas para la producci贸n, un 谩rea clave a tener en cuenta es la creaci贸n de flujos de datos reproducibles para sus modelos. Dentro de estos, debes abarcar:

  • Recopilaci贸n de fuente de datos
  • Preprocesamiento de datos
  • Selecci贸n de variables
  • Construcci贸n de modelos

Naturalmente, esto es m谩s f谩cil decirlo que hacerlo, particularmente en la etapa de recolecci贸n de fuentes de datos, si los datos son un objetivo m贸vil. Si la reproducci贸n es un requisito reglamentario, tendr谩 que pensar cuidadosamente en cosas como los controles y el versionado de archivos, bases de datos y otras fuentes de datos utilizados durante el entrenamiento con el modelo. Los flujos de datos deben permitir levantar y dejar caer modelos pre entrenados y persistentes en otras aplicaciones, donde pueden servir para hacer predicciones. Aunque es posible escribir c贸digo personalizado para hacerlo, y en casos complejos, puede ser que lo tengas que hacer, lo importante ac谩 es que no te compliques mucho.

Herramientas

Contenedores

Desde la llegada de Docker en 2013, los contenedores han revolucionado la forma en que se implementa el software. Los beneficios de los contenedores se aplican igualmente, a los sistemas de Machine Learning. La reproducci贸n de sistemas en contenedores es mucho m谩s f谩cil porque las im谩genes en contenedores garantizan que las dependencias del sistema operativo y del tiempo de ejecuci贸n permanezcan fijas. La capacidad de generar entornos precisos y del tiempo de ejecuci贸n permanezcan fijas.

La capacidad de generar entornos precisos de forma consistentes y r谩pida es una gran ventaja para la reproducci贸n durante las pruebas y la formaci贸n. Los contenedores tambi茅n funcionan bien con los flujos de trabajos modernos de integraci贸n e implementaci贸n continuo, y tiente implicaciones para la escalabilidad.

En resumen, puedes construir todo el sistema de Machine Learning para que todas sus partes, incluyendo el modelo de entrenamiento, pruebas y servicio, puedan ser almacenadas en contenedores.

Estrategias de implementaci贸n

Explora las diferentes maneras de implementar el software, por ejemplo, puedes crear un modo sombra, en donde se capturan las entradas y predicciones de un nuevo modelo en producci贸n sin cumplir realmente con esas predicciones. En su lugar, eres libre de analizar los resultados, sin consecuencias significativas si se detecta un error.

Pruebas

Las pruebas del sistema son cruciales en todo el proceso. Las pruebas propias del sistema de Machine Learning no son suficientes. Adem谩s de esas pruebas, vale la pena ampliar el conjunto de herramienta para incluir las siguientes:

  • Pruebas diferenciales: donde se comparan las predicciones promedio o por fila dadas por un nuevo modelo versus las predicciones dadas por el modelo anterior en un conjunto de datos de pruebas est谩ndar. Necesitas ajustar la sensibilidad de estas pruebas dependiendo del caso de uso del modelo. Estas pruebas puedes ser vitales para detectar modelos que de otro modo parecer铆an saludables, por ejemplo, cuando se ha utilizado un conjunto de datos obsoleto en la formaci贸n, o cuando una caracter铆stica se ha eliminado accidentalmente del c贸digo de selecci贸n de caracter铆sticas. Sin pruebas diferenciales efectivas, es posible que no tengas idea de estos errores hasta mucho despu茅s de que el da帽o est茅 hecho.
  • Pruebas de referencia: estas pruebas comparan el tiempo que toma entrenar o servir predicciones del modelo de una versi贸n a la siguiente. Evitan que se introduzcan adiciones de c贸digo ineficientes en las aplicaciones de Machine Learning. Una vez m谩s, esto es algo que es dif铆cil de detectar con las pruebas tradicionales.
  • Pruebas de cargo o esfuerzo: estas no son pruebas espec铆ficas de Machine Learning, pero dadas las inusualmente grandes demandas de CPU y memoria de algunas aplicaciones de Machine Learning, este tipo de pruebas son particularmente valiosas.

Implementaci贸n o despliegue

No hay nada en esta secci贸n que sea diferente a lo que normalmente haces cuando implementas cualquier otro sistema, por lo que no te tienes que complicar tanto. Cuando se trata de implementaciones, debe decidir si vas a utilizar una Plataforma como Servicio (PaaS) o una Infraestructura como Servicio (IaaS).

Una plataforma como servicio puede ser ideal para prototipos y negocios con poco tr谩fico. Eventualmente, una vez que el negocio crezca o el tr谩fico aumente, vas a necesitar adoptar m谩s complejidad como una infraestructura como servicio.

Si las aplicaciones se encuentran en contenedores, las implementaciones en la mayor铆a de las plataformas o infraestructuras tienden a ser m谩s f谩ciles.

Debes asegurarte que los despliegues se realicen a trav茅s de una plataforma de Despliegue Continuo.

Monitoreo y Alerta

Esto no es algo espec铆fico del sistema de Machine Learning, pero el monitoreo y las alertas pueden ser particularmente importantes cuando se despliegan los modelos. A medida que los sistemas crecen en complejidad, vas a necesitar capacidades de monitoreo y alertas para informar cuando las predicciones para un sistema en particular est谩n fuera del rango esperado. El monitoreo y la alerta tambi茅n pueden estar relacionados con preocupaciones tangenciales como, por ejemplo, cuando entrenas una red neuronal brillante, pero te gastas todo el presupuesto mensual del alojamiento y entrenamiento en la nube en tan solo 30 minutos.

Existen muchas herramientas de c贸digo abierto y de pago para ayudarte a realizar este tipo de tareas, y realmente no importa cu谩l de ellas utilice, siempre y cuando te tomes el tiempo necesario para configurar correctamente la soluci贸n elegida y as铆 obtener una visibilidad completa del sistema.

Las plataformas, herramientas y marcos para implementar Machine Learning est谩n evolucionando r谩pidamente, por lo que es probable que todo este ciclo de vida de implementaci贸n y gesti贸n de sistemas de Machine Learning se vea muy diferente dentro de unos a帽os.

Con esto finalizamos la explicaci贸n. Ya tienes una base de c贸mo puedes implementar tus modelos de Machine Learning, por lo tanto te dejo la siguiente pregunta, 驴Cu谩les de las siguientes afirmaciones crees t煤 que sea cierta?

Opci贸n 1: Puedes implementar tus modelos de Machine Learning sin la ayuda y coordinaci贸n con el resto de disciplina de desarrollo.

Respuesta Incorrecta. Los sistemas de Machine Learning requiere la cooperaci贸n entre m煤ltiples equipos y m煤ltiples experticias. Esto significa que no se puede pensar en la implementaci贸n del modelo de forma aislada, sino que es necesario planificarla a nivel de sistema.

Opci贸n 2: La forma m谩s f谩cil de implementar un modelo de Machine Learning es聽 a trav茅s de un servicio API.

Respuesta Correcta. Las APIs pueden conectarse f谩cilmente a aplicaciones de producci贸n, dado que existe una necesidad de ingenier铆a para ello.

Opci贸n 3: Al desarrollar un modelo de Machine Learning este es est谩tico y no es necesario modificarlo o ajustarlo en un futuro.

Respuesta Incorrecta. Lo modelos de Machine Learning son cambiantes por m煤ltiples razones, puede ser que el modelo cambie, los datos cambien, por lo que se debe estar en constante monitoreo.

2 comentarios en “Gu铆a para implementar los modelos de Machine Learning”

Deja un comentario

Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *

aprendeia

Conoce la ruta de aprendizaje ideal, para profesionales, para aprender Inteligencia Artificial