¿Cómo llevar un modelo a producción y para qué sirve ML Ops?

 
2759.jpg
 

El proceso de desarrollo de modelos de aprendizaje automático (machine learning, ML), es una practica que se tiene dividida principalmente en una serie de etapas como: adquisición de datos, pre procesamiento, procesamiento, evaluación (exactitud), y mejora. Los científicos de datos comprenden perfectamente el proceso y han tomado años para perfeccionar sus conocimientos no solamente de como aplicar los algoritmos si no de entender las matemáticas involucradas.

Sin embargo, aunque pareciera sencillo, llevar a producción un modelo implica grandes retos. De acuerdo a un estudio de Algorithmia, solo el 22% de empresas que utilizan aprendizaje automático de manera interna han podido llevar con éxito un modelo a producción. Por lo que el tener procesos  efectivos entorno al diseño, construcción e implementación de modelos es de gran importancia.

Existen grandes desarrollos por hacer en esta área, por lo que se han explorado técnicas que llevan años mejorándose como DevOps, que ha favorecido a la industria del TI para llevar a producción software y mantenerlo funcionando correctamente. Aunque pareciera que pudiéramos implementarlo tal cual, en modelos de aprendizaje automático, no es tan sencillo, ya que no solamente es control de versiones de código si no de datos. De hecho, un cambio en los datos de entrada en el modelo de producción, pudiera llevarlo al fracaso, a pesar de haber obtenido exactitudes altas en su etapa de desarrollo.

Por ello, se ha creado una sinergia entre Machine Learning, Dev Ops y Data Enginering para crear “ML Ops” que tiene por objetivo llevar a producción modelos de aprendizaje automático de manera confiable y eficiente.

Imagen1.png

¿Por qué ML es diferente?

1.       El ciclo de desarrollo es un ecosistema que evoluciona.

2.       ML requiere mayor rapidez que las tradicionales apps.

3.       Actualizar un modelo de aprendizaje automático involucra un enfoque más en datos y no en generación de nuevo código.

Practicas:

1)      Contar con el personal adecuado: Se recomienda tener un científico de datos o ingeniero en ML, un ingeniero de datos y un ingeniero de DevOps.

2)      Flujos de ML. Establecer los flujos de los datos, es decir la serie de transformaciones que atravesaran desde su origen a su destino. Estos flujos también son denominados ETL (Extraer, Transformar y Cargar). El pipeline a seguir por lo general requiere una para el entrenamiento y otro de inferencia. A través de este proceso será posible conectar el código y los datos de manera estructurada, además de implementar una canalización CI/CD.

3)      Versionado de modelos y de datos.  Es indispensable no solo tener un seguimiento del código, si no del modelo, considerando los datos de entrenamiento y los hiperparametros utilizados durante el entrenamiento.

4)      Validación de modelos y de datos.

Los modelos llevan un proceso de pruebas de validación donde se tiene una característica estadística más allá de una bandera binaria de aceptable o no aceptable, para ello  se requieren establecer las métricas adecuadas y también determinar en dado caso los umbrales a utilizar. En el caso de los datos, debemos de validar que coincidan con el tipo de formato, archivo, tipo de datos, de otra manera los resultados del modelo serán erróneos.

5)      Monitoreo. El mantener los sistemas en producción es el proceso más difícil [4], ya que involucra cuestiones de control, infraestructura, de software y de datos. Además de una constante supervisión en las métricas como latencia, tráfico, errores, saturación y la exactitud alcanzada por los modelos.

Presentación1.png

 

 

PhD. María de la Paz Rico Fernández.

[1]DevOps for Machine Learning and other Half Truths: Processes and Tools for the ML Life Cicle by Kenny Daniel.

[2]Brecha de implementación, The Batch.

[3] 2020 state of Enterprise Machine Learning, Algorithmia.

[4] Hidden Technical Debt in Machine Learning Systems-Google.

 

Guest User