MLOps en Microsoft Azure | Operaciones de AA en Microsoft Azure

Contenidos

Este artículo fue publicado como parte del Blogatón de ciencia de datos

Flujos de trabajo de aprendizaje. El aprendizaje automático es una gran palabra de moda en estos días. Todo el mundo parece querer saltar al ML en estos días. Muchas empresas nuevas y nuevas empresas implementan proyectos de aprendizaje automático de muchas maneras. Pero solo una parte de estos productos puede funcionar y mantenerse a largo plazo.

¿Qué es DevOps?

El software debe construirse y ejecutarse correctamente. Entonces, ¿cómo es el ciclo de vida completo de un producto de software?

Bueno, DevOps hace que todo el proceso de operación del software sea fluido. Consiste en un conjunto de prácticas y procesos que trabajan juntos para automatizar e integrar todo el proceso de desarrollo de software.

43170devops-3746085

Fuente de imagen

DevOps unifica el proceso de desarrollo de software (Dev) y operación de software (Ops). DevOps facilita la automatización, el monitoreo y el buen funcionamiento de la creación, el desarrollo, la integración, las pruebas, la implementación, el lanzamiento, el mantenimiento, el escalado, el mantenimiento y la gestión de la infraestructura de software.

Algunos objetivos clave de DevOps son ciclos de desarrollo cortos, fluidos y rápidos, implementación rápida, lanzamientos estables y seguir los objetivos comerciales correctamente. Los defensores y profesionales de DevOps utilizan el arte del bucle infinito (arriba) para representar el ciclo de DevOps y mostrar cómo se relaciona cada proceso con el otro. Esto también muestra cómo el desarrollo y las operaciones de software son un papel continuo. Necesita una colaboración y mejora constante durante todo el ciclo.

La implementación adecuada de DevOps permite a las organizaciones hacer más cosas. La integración continua (CI) y la entrega continua (CD) ayudan a las organizaciones a ver un desarrollo más eficiente y una mayor frecuencia de implementación. Los tiempos de reparación se reducen, las fallas de ciberseguridad se pueden detectar fácilmente y facilitan la experimentación y las pruebas.

Por lo tanto, podemos decir que DevOps hace que el proceso general de ingeniería de software sea más fácil de implementar y mantener.

MLOps: DevOps para aprendizaje automático

MLOps toma prestados muchos de los principios de DevOps en un esfuerzo por hacer que todo el ciclo de ML sea más eficiente y fácil de operar. El objetivo principal de MLOps es crear canalizaciones de ML automatizadas y realizar un seguimiento de los tiempos y otras métricas. Las canalizaciones se utilizarán para múltiples iteraciones en todo el ciclo de vida del proyecto de AA.

35182mlops-1563661

Fuente de imagen

MLOps consta de:

  1. Diseño
  2. Modelo de desarrollo
  3. Operaciones

La fase de diseño consta de ingeniería de requisitos, priorización de casos de uso de ML, verificación de disponibilidad de datos y otros pasos.

El desarrollo de modelos incluye ingeniería de aprendizaje automático, creación de modelos, ingeniería de datos y pruebas y validación de modelos.

Operaciones se ocupa de la implementación de modelos, las canalizaciones de CI / CD y la supervisión y el mantenimiento de modelos.

Veamos ahora cómo se ve el escenario general de MLOps para Azure MLOps.

MLOps de Microsoft Azure

Azure MLOps sigue los objetivos de:

  • Experimentación y desarrollo de modelos más rápidos
  • Implementación más rápida de modelos en producción
  • Control de calidad y seguimiento de linaje de principio a fin

Las herramientas MLOps ayudan a realizar un seguimiento de los cambios en la fuente de datos o las canalizaciones de datos, el código, los modelos de SDK, etc. El ciclo de vida se hace más fácil y eficiente con la automatización, los flujos de trabajo repetibles y los activos que se pueden reutilizar una y otra vez.

Los servicios de Azure Machine Learning nos permiten crear canalizaciones reproducibles de Machine Learning. Los entornos de software para la formación y la implementación de modelos también son reutilizables. Estas canalizaciones nos permiten actualizar modelos, probar nuevos modelos e implementar continuamente nuevos modelos de AA.

El proceso típico de AA

El proceso típico de Machine Learning consiste en:

1. Recopilación de datos

2. Modelo de formación

3. Empaqueta el modelo

4. Validar el modelo

5. Implementar modelo

6. Modelo de monitor

7. Volver a entrenar el modelo

Pero en muchos casos, el proceso necesita más refinamiento. Hay nuevos datos disponibles y se cambia el código. Se ejecutan varios procesos, cada uno de los cuales involucra una gran cantidad de datos.

Por lo general, muchos de los datos están desorganizados. Los datos brutos también deben acondicionarse.

¿Cómo puede ayudar MLOps?

MLOps consta de varios elementos. Algunos elementos notables son la automatización de la implementación, el monitoreo, las pruebas del marco, el control de versiones de datos, etc. MLOps intenta tomar conceptos de DevOps y mejorar todo el proceso de aprendizaje automático.

Toda la arquitectura de Azure Machine Learning se parece a esto:

74542mlops-integrated-pattern-1309921

Fuente de imagen

Se supone que MLOps hace un proceso coordinado que puede facilitar el flujo de todo el proceso y también admitir entornos de CI / CD a gran escala.

MLOps puede ayudar con la automatización, facilitando las implementaciones de código. La validación también se facilita con las mejores prácticas de control de calidad de SWE. En el caso del entrenamiento de modelos, si creemos que nuestro modelo necesita un reentrenamiento, siempre podemos volver atrás y hacer un reentrenamiento del modelo.

Azure Machine Learning tiene muchos modelos previamente entrenados específicos de dominio, como para:

Visión, habla, lenguaje, búsqueda, etc.

Si hablamos de, qué es exactamente Azure ML Services, es un conjunto de Azure Cloud Services junto con un kit de desarrollo de software Python / R, que nos permite preparar datos, construir modelos, administrar modelos, entrenar modelos, rastrear experimentos e implementar modelos.

Hay muchos elementos involucrados, veamos algunos de ellos.

Conjuntos de datos: registrar los datos

Experimentos: Carreras de entrenamiento

Tuberías: Flujo de trabajo de formación

Modelos: Modelos registrados

Puntos finales: modelos implementados y puntos finales de flujo de trabajo de entrenamiento

Calcular: Computación administrada

Ambientes: Entornos definidos de formación e inferencia.

Los servicios de Azure están construidos de tal manera que sean compatibles con DevOps y hagan que todo funcione correctamente.

Administrar el ciclo de vida del aprendizaje automático con MLOps es muy fácil. Los modelos deben ser monitoreados y reentrenados. Los procesos de MLOps facilitan los resultados comerciales reales y, por lo tanto, permiten un tiempo de comercialización e implementación más rápidos para las soluciones basadas en ML. También aumentan la colaboración y la alineación entre los equipos.

Azure MLOps

Azure Machine Learning tiene las siguientes características de MLOps.

Cree canalizaciones de ML reproducibles

Podemos definir tuberías reutilizables y repetibles. Todos los pasos que comprenden la recopilación de datos y la evaluación del modelo se pueden reutilizar.

Entornos de software reutilizables

Las dependencias de software de nuestros proyectos se pueden rastrear y reproducir según la necesidad.

Registre, empaque e implemente modelos desde cualquier lugar

El registro de modelos hace que los pasos anteriores sean muy fáciles de implementar. Los modelos tienen nombre y versión.

Capturar los datos de gobernanza para un ciclo de vida de aprendizaje automático de un extremo a otro

Azure ML puede integrarse con Git para rastrear nuestro código. Podemos verificar de qué rama / repositorio proviene nuestro código. También podemos rastrear, perfilar y versionar nuestros datos.

Alertas y notificaciones para eventos en el ciclo de vida del AA

Azure ML enumera los eventos clave en Azure EventGrid, que se pueden usar para diversos fines.

Monitorear los problemas operativos

Podemos comprender los datos que se envían a nuestro modelo y las predicciones que se devuelven. Para que podamos entender cómo se está desempeñando el modelo.

Automatice el ciclo de vida del AA

Azure Pipelines y Github se pueden usar para crear una integración autónoma y continua que entrena un modelo. La mayoría de los pasos del ciclo de vida de AA se pueden automatizar.

Entonces, como un pensamiento general, podemos entender que MLOps es un concepto en el que usamos varios recursos para hacer que todo el viaje de ML sea fluido y eficiente.

Entonces, pensando en un flujo de trabajo hipotético de MLOps, primero, el equipo de ciencia de datos y el equipo de desarrollo de la aplicación colaborarían para construir la aplicación y también entrenar el modelo. Luego, se probará la aplicación. Paralelamente, se validará el modelo. Luego, se implementará el modelo y se lanzará la aplicación.

La aplicación y el modelo serán monitoreados. Desde el proceso general de gestión de modelos y aplicaciones, podemos realizar análisis de rendimiento. En función de las necesidades, también podemos reentrenar el modelo.

Veamos un proyecto de ML de muestra en Azure DevOps.

53703sample1-1910462

Los diversos elementos que habíamos discutido son visibles aquí.

16891sample2-9055568

Al ingresar a Repos, podemos verificar el código y otros archivos.

Con respecto a las canalizaciones, veamos una canalización ejecutada con éxito.

37058sample3-6569374

Podemos ver que todos los trabajos se ejecutaron correctamente.

Para el proyecto de AA de muestra particular, podemos ver los requisitos.

76125sample4-3444962

Podemos implementar los requisitos.

pip install azure-cli==2.0.69
pip install --upgrade azureml-sdk[cli]
pip install -r requirements.txt

Código para entrenar el modelo:

Empiece por importar las cosas necesarias.

import pickle
from azureml.core import Workspace
from azureml.core.run import Run
import os
from sklearn.datasets import load_diabetes
from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.externals import joblib
import numpy as np
import json
import subprocess
from typing import Tuple, List
# run_history_name="devops-ai"
# os.makedirs('./outputs', exist_ok=True)
# #ws.get_details()
# Start recording results to AML
# run = Run.start_logging(workspace = ws, history_name = run_history_name)
run = Run.get_submitted_run()

Obteniendo los datos.

X, y = load_diabetes(return_X_y=True)
columns = ["age", "gender", "bmi", "bp", "s1", "s2", "s3", "s4", "s5", "s6"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
data = {"train": {"X": X_train, "y": y_train}, "test": {"X": X_test, "y": y_test}}

A continuación, entrenamiento.

# Randomly pic alpha
alphas = np.arange(0.0, 1.0, 0.05)
alpha = alphas[np.random.choice(alphas.shape[0], 1, replace=False)][0]
print(alpha)
run.log("alpha", alpha)
reg = Ridge(alpha=alpha)
reg.fit(data["train"]["X"], data["train"]["y"])
preds = reg.predict(data["test"]["X"])
run.log("mse", mean_squared_error(preds, data["test"]["y"]))
# Save model as part of the run history
model_name = "sklearn_regression_model.pkl"
# model_name = "."
with open(model_name, "wb") as file:
    joblib.dump(value=reg, filename=model_name)
# upload the model file explicitly into artifacts
run.upload_file(name="./outputs/" + model_name, path_or_stream=model_name)
print("Uploaded the model {} to experiment {}".format(model_name, run.experiment.name))
dirpath = os.getcwd()
print(dirpath)
# register the model
# run.log_model(file_name = model_name)
# print('Registered the model {} to run history {}'.format(model_name, run.history.name))
print("Following files are uploaded ")
print(run.get_file_names())
run.complete()

Hay muchas diferencias significativas en la forma en que operamos aquí.

Yo, siendo estudiante, no tenía exactamente un caso de negocios o los recursos monetarios para trabajar en un proyecto de ML completo en Azure DevOps. El trabajo anterior se realiza tomando como referencia.

Visite este Repo para referencia: DevOpsForAI

Conclusión

MLOps puede resolver muchos problemas relacionados con el ciclo de vida del aprendizaje automático. Por lo tanto, también se resuelven muchos de los desafíos generales.

MLOps es una propuesta muy convincente para que las empresas ejecuten sus modelos de ML. MLOps hace que trabajar entre equipos sea muy fácil y sencillo.

Estas son algunas de las referencias que utilicé para recopilar conocimientos para este artículo. Ten una lectura.

Referencias:

1.https://docs.microsoft.com/en-us/azure/machine-learning/concept-model-management-and-deployment#create-reproducible-ml-pipelines

2. https://docs.microsoft.com/en-us/learn/modules/start-ml-lifecycle-mlops/1-introduction

3. https://docs.microsoft.com/en-us/azure/architecture/example-scenario/mlops/mlops-technical-paper

4. https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/ai/mlops-python

Sobre mí:

Prateek Majumder

Ciencia de datos y análisis | Especialista en marketing digital | SEO | Creación de contenido

Conéctate conmigo en Linkedin.

Mis otros artículos sobre DataPeaker: Link.

Gracias.

Los medios que se muestran en este artículo no son propiedad de DataPeaker y se utilizan a discreción del autor.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.