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.
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.
MLOps consta de:
- Diseño
- Modelo de desarrollo
- 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 datosUna "fuente de datos" se refiere a cualquier lugar o medio donde se puede obtener información. Estas fuentes pueden ser tanto primarias, como encuestas y experimentos, como secundarias, como bases de datos, artículos académicos o informes estadísticos. La elección adecuada de una fuente de datos es crucial para garantizar la validez y la fiabilidad de la información en investigaciones y análisis.... 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:
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 entrenamientoEl entrenamiento es un proceso sistemático diseñado para mejorar habilidades, conocimientos o capacidades físicas. Se aplica en diversas áreas, como el deporte, la educación y el desarrollo profesional. Un programa de entrenamiento efectivo incluye la planificación de objetivos, la práctica regular y la evaluación del progreso. La adaptación a las necesidades individuales y la motivación son factores clave para lograr resultados exitosos y sostenibles en cualquier disciplina.... 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 DevOpsAzure DevOps es una plataforma integral que ofrece herramientas para la planificación, desarrollo y entrega de software. Incluye servicios como Azure Boards, para la gestión de proyectos; Azure Repos, para el control de versiones; y Azure Pipelines, que automatiza la integración y entrega continua. Su enfoque colaborativo permite a los equipos de desarrollo optimizar sus procesos y mejorar la calidad del software, facilitando una mayor agilidad en el ciclo de....
Los diversos elementos que habíamos discutido son visibles aquí.
Al ingresar a Repos, podemos verificar el código y otros archivos.
Con respecto a las canalizaciones, veamos una canalización ejecutada con éxito.
Podemos ver que todos los trabajos se ejecutaron correctamente.
Para el proyecto de AA de muestra particular, podemos ver los requisitos.
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:
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.
Relacionado
Posts Relacionados:
- Operaciones de matriz | 12 operaciones matriciales para el aprendizaje profundo
- Microsoft Power BI | Auge de Microsoft Power BI como herramienta de análisis de datos
- Servicios cognitivos de Microsoft Azure: API para desarrollo de inteligencia artificial
- Hoja de ruta para aprobar el examen Microsoft Azure DP 100