Inteligencia artificial
Guía de herramientas de MLOps: Weights & Biases, Comet y más
Las Operaciones de Aprendizaje Automático (MLOps) son un conjunto de prácticas y principios que apuntan a unificar los procesos de desarrollo, implementación y mantenimiento de modelos de aprendizaje automático en entornos de producción. Combina principios de DevOps, como la integración continua, la entrega continua y el monitoreo continuo, con los desafíos únicos de administrar modelos de aprendizaje automático y conjuntos de datos.
A medida que la adopción del aprendizaje automático en diversas industrias continúa creciendo, también lo hace la demanda de herramientas de MLOps robustas. Estas herramientas ayudan a simplificar todo el ciclo de vida de los proyectos de aprendizaje automático, desde la preparación de datos y el entrenamiento de modelos hasta la implementación y el monitoreo. En esta guía integral, exploraremos algunas de las mejores herramientas de MLOps disponibles, incluyendo Weights & Biases, Comet y otras, junto con sus características, casos de uso y ejemplos de código.
¿Qué es MLOps?
MLOps, o Operaciones de Aprendizaje Automático, es un campo multidisciplinario que combina los principios de ML, ingeniería de software y prácticas de DevOps para simplificar la implementación, el monitoreo y el mantenimiento de modelos de ML en entornos de producción. Al establecer flujos de trabajo estandarizados, automatizar tareas repetitivas y implementar mecanismos de monitoreo y gobernanza robustos, MLOps permite a las organizaciones acelerar el desarrollo de modelos, mejorar la confiabilidad de la implementación y maximizar el valor derivado de las iniciativas de ML.
Construcción y mantenimiento de tuberías de ML
Al construir cualquier producto o servicio basado en aprendizaje automático, entrenar y evaluar el modelo en algunas muestras del mundo real no necesariamente significa el final de sus responsabilidades. Debe poner ese modelo a disposición de los usuarios finales, monitorearlo y volver a entrenarlo para un mejor rendimiento si es necesario. Una tubería de aprendizaje automático (ML) tradicional es una colección de varias etapas que incluyen la recopilación de datos, la preparación de datos, el entrenamiento y la evaluación del modelo, el ajuste de hiperparámetros (si es necesario), la implementación y escalado del modelo, el monitoreo, la seguridad y el cumplimiento, y la integración y entrega continuas.
Un equipo de ingeniería de aprendizaje automático es responsable de trabajar en las primeras cuatro etapas de la tubería de ML, mientras que las dos últimas etapas caen bajo la responsabilidad del equipo de operaciones. Dado que hay una clara delimitación entre los equipos de aprendizaje automático y operaciones para la mayoría de las organizaciones, la colaboración y la comunicación efectivas entre los dos equipos son esenciales para el desarrollo, la implementación y el mantenimiento exitosos de los sistemas de ML. Esta colaboración de los equipos de ML y operaciones es lo que se llama MLOps y se centra en simplificar el proceso de implementar los modelos de ML en producción, junto con su mantenimiento y monitoreo. Aunque MLOps es un acrónimo de ML y operaciones, no debe confundirlo, ya que puede permitir la colaboración entre científicos de datos, ingenieros de DevOps y equipos de TI.
La responsabilidad principal de MLOps es facilitar la colaboración efectiva entre los equipos de ML y operaciones para mejorar la velocidad de desarrollo y implementación de modelos con la ayuda de prácticas de integración y desarrollo continuos (CI/CD) complementadas por el monitoreo, la validación y la gobernanza de los modelos de ML. Las herramientas y software que facilitan la integración y entrega automatizadas de CI/CD, el desarrollo y la implementación fácil, la simplificación de flujos de trabajo y la mejora de la colaboración a menudo se denominan herramientas de MLOps. Después de mucha investigación, he recopilado una lista de varias herramientas de MLOps que se utilizan en algunas de las principales empresas tecnológicas como Netflix, Uber, DoorDash, LUSH, etc. Vamos a discutir todos ellos más adelante en este artículo.
Tipos de herramientas de MLOps
Las herramientas de MLOps desempeñan un papel fundamental en cada etapa del ciclo de vida del aprendizaje automático. En esta sección, verá una desglose claro de loss de una lista de herramientas de MLOps en cada etapa del ciclo de vida de ML.
Herramientas de orquestación de tuberías
La orquestación de tuberías en términos de aprendizaje automático se refiere al proceso de administrar y coordinar las diversas tareas y componentes involucrados en el flujo de trabajo de ML de extremo a extremo, desde la preprocesamiento de datos y el entrenamiento de modelos hasta la implementación y monitoreo de modelos.
El software de MLOps es realmente popular en este espacio, ya que ofrece características como la administración de flujos de trabajo, la administración de dependencias, la paralelización, el control de versiones y la automatización de la implementación, lo que permite a las organizaciones simplificar sus flujos de trabajo de ML, mejorar la colaboración entre científicos de datos e ingenieros y acelerar la entrega de soluciones de ML.
Marco de entrenamiento de modelos
Esta etapa implica el proceso de crear y optimizar modelos predictivos con datos etiquetados y no etiquetados. Durante el entrenamiento, los modelos aprenden los patrones y relaciones subyacentes en los datos, ajustando sus parámetros para minimizar la diferencia entre los resultados predichos y reales. Puede considerar esta etapa como la más intensiva en código del flujo de trabajo de ML completo.
Los marcos de aprendizaje automático como scikit-learn son muy populares para entrenar modelos de aprendizaje automático, mientras que TensorFlow y PyTorch son populares para entrenar modelos de aprendizaje profundo que comprenden diferentes redes neuronales.
Plataformas de implementación y servicio de modelos
Una vez que el equipo de desarrollo termina de entrenar el modelo, debe poner este modelo a disposición para inferencia en el entorno de producción, donde estos modelos pueden generar predicciones. Esto suele implicar implementar el modelo en una infraestructura de servicio, configurar API para la comunicación, la versión y la administración de modelos, el escalado y el equilibrio de carga automatizados, y garantizar la escalabilidad, la confiabilidad y el rendimiento.
Las herramientas de MLOps ofrecen características como la contenerización, la orquestación, la versión de modelos, las pruebas A/B y el registro, lo que permite a las organizaciones implementar y servir modelos de ML de manera eficiente y efectiva.
Herramientas de monitoreo y observabilidad
Desarrollar e implementar modelos no es un proceso de una sola vez. Cuando desarrolla un modelo en una determinada distribución de datos, espera que el modelo realice predicciones para la misma distribución de datos en producción. Esto no es ideal porque la distribución de datos es propensa a cambiar en el mundo real, lo que resulta en una degradación del poder predictivo del modelo, lo que se conoce como deriva de datos. Solo hay una forma de identificar la deriva de datos, monitoreando continuamente sus modelos en producción.
El monitoreo y la observabilidad de ML incluyen el monitoreo de métricas clave, como la precisión de la predicción, la latencia, el rendimiento y la utilización de recursos, así como la detección de anomalías, deriva y cambios de concepto en la distribución de datos. Las herramientas de monitoreo de MLOps pueden automatizar la recopilación de datos de telemetría, permitir el análisis y la visualización de métricas en tiempo real y activar alertas y acciones según umbrales o condiciones predefinidos.
Plataformas de seguimiento de experimentos y colaboración
Supongamos que está trabajando en el desarrollo de un sistema de ML junto con un equipo de científicos de datos. Si no está utilizando un mecanismo que rastree qué modelos se han intentado, quién está trabajando en qué parte de la tubería, etc., le resultará difícil determinar qué modelos ya se han intentado por usted o por otros. También puede haber casos en los que dos desarrolladores estén trabajando en el desarrollo de las mismas características, lo que es una pérdida de tiempo y recursos. Y como no está rastreando nada relacionado con su proyecto, no puede utilizar este conocimiento para otros proyectos, lo que limita la reproducibilidad.
Las herramientas de MLOps de seguimiento de experimentos y colaboración permiten a los científicos de datos e ingenieros colaborar de manera efectiva, compartir conocimientos y reproducir experimentos para el desarrollo y la optimización de modelos. Estas herramientas ofrecen características como el seguimiento de experimentos, la versión, el seguimiento de la línea de tiempo y el registro de modelos, lo que permite a los equipos registrar experimentos, realizar un seguimiento de los cambios y comparar resultados en diferentes iteraciones de los modelos de ML.
Almacenamiento y versión de datos
Al trabajar en las tuberías de ML, realiza cambios significativos en los datos brutos en la fase de preprocesamiento. Por alguna razón, si no puede entrenar su modelo de inmediato, quiere almacenar estos datos preprocesados para evitar un trabajo repetido. Lo mismo sucede con el código; siempre querrá continuar trabajando en el código que ha dejado en su última sesión.
Las herramientas de almacenamiento y versión de datos de MLOps ofrecen características como la versión de datos, la administración de artefactos, el seguimiento de metadatos y la línea de tiempo de datos, lo que permite a los equipos realizar un seguimiento de los cambios, reproducir experimentos y garantizar la coherencia y la reproducibilidad en diferentes iteraciones de los modelos de ML.
Computación e infraestructura
Cuando se habla de entrenar, implementar y escalar modelos, todo se reduce a la computación y la infraestructura. Especialmente en la actualidad, cuando los grandes modelos de lenguaje (LLM) están haciendo su camino en varios proyectos de IA generativa basados en la industria. Puede entrenar un clasificador simple en un sistema con 8 GB de RAM y sin dispositivo GPU, pero no sería prudente entrenar un modelo de LLM en la misma infraestructura.
Las herramientas de computación e infraestructura ofrecen características como la contenerización, la orquestación, el escalado automático y la administración de recursos, lo que permite a las organizaciones utilizar de manera eficiente los recursos en la nube, la infraestructura local o los entornos híbridos para las cargas de trabajo de ML.
Las mejores herramientas y plataformas de MLOps para 2024
Aunque Weights & Biases y Comet son startups de MLOps prominentes, hay otras herramientas disponibles para respaldar varios aspectos del ciclo de vida de ML. A continuación, se presentan algunos ejemplos notables:
- MLflow: MLflow es una plataforma de código abierto que ayuda a administrar todo el ciclo de vida de ML, incluyendo el seguimiento de experimentos, la reproducibilidad, la implementación y un registro de modelos centralizado.
- Kubeflow: Kubeflow es una plataforma de código abierto diseñada para simplificar la implementación de modelos de ML en Kubernetes. Proporciona un conjunto integral de herramientas para la preparación de datos, el entrenamiento de modelos, la optimización de modelos, el servicio de predicciones y el monitoreo de modelos en entornos de producción.
- BentoML: BentoML es una herramienta de primer nivel de Python para implementar y mantener modelos de ML en producción. Admite la inferencia paralela, el lote adaptativo y la aceleración de hardware, lo que permite un servicio de modelo eficiente y escalable.
- TensorBoard: Desarrollado por el equipo de TensorFlow, TensorBoard es una herramienta de visualización de código abierto para experimentos de ML. Permite a los usuarios realizar un seguimiento de las métricas, visualizar gráficos de modelos, proyectar incrustaciones y compartir resultados de experimentos.
- Evidently: Evidently AI es una biblioteca de Python de código abierto para monitorear modelos de ML durante el desarrollo, la validación y en producción. Verifica la calidad de los datos y los modelos, la deriva de datos, la deriva de destino y el rendimiento de regresión y clasificación.
- Amazon SageMaker: Amazon Web Services SageMaker es una solución de MLOps integral que cubre el entrenamiento de modelos, el seguimiento de experimentos, la implementación de modelos, el monitoreo y más. Proporciona un entorno colaborativo para equipos de ciencia de datos, lo que permite la automatización de flujos de trabajo de ML y el monitoreo continuo de modelos en producción.
¿Qué es Weights & Biases?
Weights & Biases (W&B) es una plataforma popular de seguimiento y visualización de experimentos de ML que ayuda a los científicos de datos y a los practicantes de ML a administrar y analizar sus modelos con facilidad. Ofrece una suite de herramientas que respaldan cada paso del flujo de trabajo de ML, desde la configuración del proyecto hasta la implementación del modelo.
Características clave de Weights & Biases
- Seguimiento y registro de experimentos: W&B permite a los usuarios registrar y realizar un seguimiento de experimentos, capturando información esencial como hiperparámetros, arquitectura de modelo y detalles de conjunto de datos. Al registrar estos parámetros, los usuarios pueden reproducir fácilmente experimentos y comparar resultados, lo que facilita la colaboración entre los miembros del equipo.
import wandb
# Inicializar W&B
wandb.init(project="my-project", entity="my-team")
# Registrar hiperparámetros
config = wandb.config
config.learning_rate = 0.001
config.batch_size = 32
# Registrar métricas durante el entrenamiento
wandb.log({"loss": 0.5, "accuracy": 0.92})
- Visualizaciones y paneles: W&B proporciona un panel interactivo para visualizar los resultados de los experimentos, lo que facilita el análisis de tendencias, la comparación de modelos y la identificación de áreas de mejora. Estas visualizaciones incluyen gráficos personalizables, matrices de confusión e histogramas. El panel se puede compartir con colaboradores, lo que permite una comunicación y un intercambio de conocimientos efectivos.
# Registrar matriz de confusión
wandb.log({"confusion_matrix": wandb.plot.confusion_matrix(predictions, labels)})
# Registrar un gráfico personalizado
wandb.log({"chart": wandb.plot.line_series(x=[1, 2, 3], y=[[1, 2, 3], [4, 5, 6]])})
- Versionado y comparación de modelos: Con W&B, los usuarios pueden realizar un seguimiento y comparar fácilmente diferentes versiones de sus modelos. Esta característica es particularmente valiosa cuando se experimenta con diferentes arquitecturas, hiperparámetros o técnicas de preprocesamiento. Al mantener un historial de modelos, los usuarios pueden identificar las configuraciones con mejor rendimiento y tomar decisiones basadas en datos.
# Guardar artefacto de modelo
wandb.save("model.h5")
# Registrar múltiples versiones de un modelo
with wandb.init(project="my-project", entity="my-team"):
# Entrenar y registrar la versión 1 del modelo
wandb.log({"accuracy": 0.85})
with wandb.init(project="my-project", entity="my-team"):
# Entrenar y registrar la versión 2 del modelo
wandb.log({"accuracy": 0.92})
- Integración con marcos de ML populares: W&B se integra de manera transparente con marcos de ML populares como TensorFlow, PyTorch y scikit-learn. Proporciona integraciones ligeras que requieren modificaciones mínimas de código, lo que permite a los usuarios aprovechar las características de W&B sin interrumpir sus flujos de trabajo existentes.
import wandb
import tensorflow as tf
# Inicializar W&B y registrar métricas durante el entrenamiento
wandb.init(project="my-project", entity="my-team")
wandb.tensorflow.log(tf.summary.scalar('loss', loss))
¿Qué es Comet?
Comet es una plataforma de aprendizaje automático basada en la nube donde los desarrolladores pueden realizar un seguimiento, comparar, analizar y optimizar experimentos. Está diseñada para ser rápida de instalar y fácil de usar, lo que permite a los usuarios comenzar a realizar un seguimiento de sus experimentos de ML con solo unas pocas líneas de código, sin depender de ninguna biblioteca específica.
Características clave de Comet
- Visualizaciones personalizadas: Comet permite a los usuarios crear visualizaciones personalizadas para sus experimentos y datos. Además, los usuarios pueden aprovechar las visualizaciones proporcionadas por la comunidad en paneles, lo que mejora su capacidad para analizar e interpretar los resultados.
- Monitoreo en tiempo real: Comet proporciona estadísticas y gráficos en tiempo real sobre experimentos en curso, lo que permite a los usuarios monitorear el progreso y el rendimiento de sus modelos mientras se entrenan.
- Comparación de experimentos: Con Comet, los usuarios pueden comparar fácilmente sus experimentos, incluyendo código, métricas, predicciones, conocimientos y más. Esta característica facilita la identificación de los modelos y configuraciones con mejor rendimiento.
- Depuración y seguimiento de errores: Comet permite a los usuarios depurar errores de modelo, errores específicos del entorno y otros problemas que pueden surgir durante el entrenamiento y la evaluación.
- Monitoreo de modelos: Comet permite a los usuarios monitorear sus modelos y recibir notificaciones cuando surgen problemas o errores, lo que garantiza una intervención y mitigación oportuna.
- Colaboración: Comet admite la colaboración dentro de los equipos y con partes interesadas comerciales, lo que permite un intercambio de conocimientos y una comunicación efectiva.
- Integración con marcos: Comet se puede integrar fácilmente con marcos de ML populares como TensorFlow, PyTorch y otros, lo que la convierte en una herramienta versátil para diferentes proyectos y casos de uso.
Selección de la herramienta de MLOps adecuada
Al seleccionar una herramienta de MLOps para su proyecto, es esencial considerar factores como la familiaridad del equipo con marcos específicos, los requisitos del proyecto, la complejidad del modelo (s) y el entorno de implementación. Algunas herramientas pueden ser más adecuadas para casos de uso específicos o integrarse más fácilmente con la infraestructura existente.
Además, es importante evaluar la documentación de la herramienta, el soporte de la comunidad y la facilidad de configuración e integración. Una herramienta bien documentada con una comunidad activa puede acelerar significativamente la curva de aprendizaje y facilitar la solución de problemas.
Prácticas recomendadas para MLOps efectivas
Para maximizar los beneficios de las herramientas de MLOps y garantizar la implementación y el mantenimiento exitosos de los modelos, es crucial seguir las prácticas recomendadas. A continuación, se presentan algunas consideraciones clave:
- Registro coherente: Asegúrese de que todos los hiperparámetros, métricas y artefactos relevantes se registren de manera coherente en todos los experimentos. Esto promueve la reproducibilidad y facilita la comparación efectiva entre diferentes ejecuciones.
- Colaboración y intercambio: Aproveche las características de colaboración de las herramientas de MLOps para compartir experimentos, visualizaciones e ideas con los miembros del equipo. Esto fomenta el intercambio de conocimientos y mejora los resultados del proyecto en general.
- Documentación y notas: Mantenga una documentación y notas completas dentro de la herramienta de MLOps para capturar detalles de los experimentos, observaciones e ideas. Esto ayuda a comprender experimentos pasados y facilita las iteraciones futuras.
- Integración y entrega continuas (CI/CD): Implemente pipelines de CI/CD para sus modelos de ML para garantizar la prueba, implementación y monitoreo automatizados. Esto simplifica el proceso de implementación y reduce el riesgo de errores.
Ejemplos de código y casos de uso
Para comprender mejor el uso práctico de las herramientas de MLOps, exploremos algunos ejemplos de código y casos de uso.
Seguimiento de experimentos con Weights & Biases
Weights & Biases proporciona una integración transparente con marcos de ML populares como PyTorch y TensorFlow. A continuación, se muestra un ejemplo de cómo registrar métricas y visualizarlas durante el entrenamiento de un modelo con PyTorch:
import wandb
import torch
import torchvision
# Inicializar W&B
wandb.init(project="image-classification", entity="my-team")
# Cargar datos y modelo
train_loader = torch.utils.data.DataLoader(...)
model = torchvision.models.resnet18(pretrained=True)
# Configurar bucle de entrenamiento
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
criterion = torch.nn.CrossEntropyLoss()
for epoch in range(10):
for inputs, labels in train_loader:
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
# Registrar métricas
wandb.log({"loss": loss.item()})
# Guardar modelo
torch.save(model.state_dict(), "model.pth")
wandb.save("model.pth")
En este ejemplo, inicializamos una ejecución de W&B, entrenamos un modelo ResNet-18 en una tarea de clasificación de imágenes y registramos la pérdida de entrenamiento en cada paso. También guardamos el modelo entrenado como un artefacto usando wandb.save(). W&B realiza un seguimiento automático de las métricas del sistema como el uso de la GPU, y podemos visualizar el progreso del entrenamiento, las curvas de pérdida y las métricas del sistema en el panel de W&B.
Monitoreo de modelos con Evidently
Evidently es una herramienta poderosa para monitorear modelos de ML en producción. A continuación, se muestra un ejemplo de cómo usarla para monitorear la deriva de datos y el rendimiento del modelo:
import evidently
import pandas as pd
from evidently.model_monitoring import ModelMonitor
from evidently.model_monitoring.monitors import DataDriftMonitor, PerformanceMonitor
# Cargar datos de referencia
ref_data = pd.read_csv("reference_data.csv")
# Cargar datos de producción
prod_data = pd.read_csv("production_data.csv")
# Cargar modelo
model = load_model("model.pkl")
# Crear monitores de datos y rendimiento
data_monitor = DataDriftMonitor(ref_data)
perf_monitor = PerformanceMonitor(ref_data, model)
# Monitorear datos y rendimiento
model_monitor = ModelMonitor(data_monitor, perf_monitor)
model_monitor.run(prod_data)
# Generar informe HTML
model_monitor.report.save_html("model_monitoring_report.html")
En este ejemplo, cargamos los datos de referencia y de producción, así como un modelo entrenado. Creamos instancias de DataDriftMonitor y PerformanceMonitor para monitorear la deriva de datos y el rendimiento del modelo, respectivamente. Luego, ejecutamos estos monitores en los datos de producción usando ModelMonitor y generamos un informe HTML con los resultados.
Implementación con BentoML
BentoML simplifica el proceso de implementar y mantener modelos de ML en producción. A continuación, se muestra un ejemplo de cómo empaquetar y desplegar un modelo de scikit-learn usando BentoML:
import bentoml
from bentoml.io import NumpyNdarray
from sklearn.linear_model import LogisticRegression
# Entrenar modelo
clf = LogisticRegression()
clf.fit(X_train, y_train)
# Definir servicio de BentoML
class LogisticRegressionService(bentoml.BentoService):
@bentoml.api(input=NumpyNdarray(), batch=True)
def predict(self, input_data):
return self.artifacts.clf.predict(input_data)
@bentoml.artifacts([LogisticRegression.artifacts])
def pack(self, artifacts):
artifacts.clf = clf
# Empaquetar y guardar modelo
svc = bentoml.Service("logistic_regression", runners=[LogisticRegressionService()])
svc.pack().save()
# Desplegar modelo
svc = LogisticRegressionService.load()
svc.start()
En este ejemplo, entrenamos un modelo de regresión logística de scikit-learn y definimos un servicio de BentoML para servir predicciones. Luego, empaquetamos el modelo y sus artefactos usando bentoml.Service y lo guardamos en disco. Finalmente, cargamos el modelo guardado y iniciamos el servicio de BentoML, lo que lo hace disponible para servir predicciones.
Conclusión
En el campo en constante evolución del aprendizaje automático, las herramientas de MLOps desempeñan un papel crucial en la simplificación de todo el ciclo de vida de los proyectos de ML, desde la experimentación y el desarrollo hasta la implementación y el monitoreo. Herramientas como Weights & Biases, Comet, MLflow, Kubeflow, BentoML y Evidently ofrecen una serie de características y capacidades para respaldar varios aspectos del flujo de trabajo de MLOps.
Al aprovechar estas herramientas, los equipos de ciencia de datos pueden mejorar la colaboración, la reproducibilidad y la eficiencia, al mismo tiempo que garantizan la implementación de modelos de ML confiables y con buen rendimiento en entornos de producción. A medida que la adopción del aprendizaje automático continúa creciendo en diversas industrias, la importancia de las herramientas y prácticas de MLOps solo aumentará, impulsando la innovación y permitiendo a las organizaciones aprovechar al máximo el potencial de las tecnologías de inteligencia artificial y aprendizaje automático.








