Fundamentos de MLOps y tracking de modelos

1

¿Qué es MLOps y para qué sirve?

2

Tracking de modelos en localhost con MLflow

3

Tracking de modelos en localhost: directorio personalizado

4

Etapas del ciclo de MLOps

5

Componentes de MLOps

6

Tracking de modelos con MLflow y SQLite

7

Tracking de modelos con MLflow en la nube

Tracking del ciclo de vida de modelos de machine learning

8

Tracking de experimentos con MLflow: preprocesamiento de datos

9

Tracking de experimentos con MLflow: definición de funciones

10

Tracking de experimentos con MLflow: tracking de métricas e hiperparámetros

11

Tracking de experimentos con MLflow: reporte de clasificación

12

Entrenamiento de modelos baseline y análisis en UI de MLflow

13

MLflow Model Registry: registro y uso de modelos

14

Registro de modelos con mlflow.client

15

Testing de modelo desde MLflow con datos de prueba

16

¿Para qué sirve el tracking de modelos en MLOps?

Orquestación de pipelines de machine learning

17

Tasks con Prefect

18

Flows con Prefect

19

Flow de modelo de clasificación de tickets: procesamiento de datos y features

20

Flow de modelo de clasificación de tickets: integración de las tasks

21

Flow de modelo de clasificación de tickets: ejecución de tasks

22

¿Cómo se integra la orquestación en MLOps?

Despliegue de modelo de machine learning

23

Despligue con Docker y FastAPI: configuración y requerimientos

24

Despligue con Docker y FastAPI: definición de clases y entry point

25

Despligue con Docker y FastAPI: procesamiento de predicciones en main app

26

Despligue con Docker y FastAPI: configuración de la base de datos

27

Despliegue y pruebas de modelo de machine learning en localhost

28

Despliegue y pruebas de modelo de machine learning en la nube

29

¿Qué hacer con el modelo desplegado?

Monitoreo de modelo de machine learning en producción

30

¿Cómo monitorear modelos de machine learning en producción?

31

Entrenamiento de modelo baseline

32

Preparar datos para crear reporte con Evidently

33

Análisis de la calidad de los datos con Evidently

34

Creación de reportes con Grafana

35

¿Cómo mejorar tus procesos de MLOps?

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Flows con Prefect

18/35
Recursos

¿Qué es un flow y cómo se compone?

Un flow es el orquestador de las tareas necesarias para resolver un problema de machine learning. Es crucial entender que un flow agrupa múltiples tareas, cada una con una función específica. En el desarrollo de un proyecto de machine learning, el flow es una herramienta esencial que permite estructurar, automatizar y optimizar los procesos desde la obtención de datos hasta la implementación de un modelo.

¿Cómo definimos y componemos un flow en Visual Studio Code?

Para definir un flow en Visual Studio Code, se requiere definir las tareas necesarias y luego integrarlas en un solo flujo. El ejemplo que abordamos utiliza un flow para la clasificación de iris. Este incluye tareas como la obtención de datos, la división en conjunto de entrenamiento y prueba, y el entrenamiento de un modelo usando un clasificador aleatorio (Random Forest Classifier).

# Ejemplo de código para dividir datos utilizando Scikit Learn
from sklearn.model_selection import train_test_split

def split_data(data):
    X = data['data']
    y = data['target']
    return train_test_split(X, y, test_size=0.2, random_state=42)

¿Qué tareas añadimos a un flow?

Las tareas que usualmente añadimos a un flow están orientadas al flujo completo del proceso de machine learning. Las tareas más comunes son:

  1. Obtención de datos: Extraemos los datos usando Scikit Learn.

  2. División de datos (split data): Dividimos los datos en entrenamiento y prueba.

  3. Entrenamiento del modelo (train model): Entrenamos un modelo para predecir o clasificar los datos.

    Ejemplo de entrenamiento de un modelo usando Random Forest

    from sklearn.ensemble import RandomForestClassifier

    def train_model(X_train, y_train): model = RandomForestClassifier() model.fit(X_train, y_train) accuracy = model.score(X_train, y_train) print(f"Accuracy: {accuracy}") return model

¿Cuáles son las ventajas de implementar flows?

Implementar flows presenta una serie de ventajas sustanciales. Entre ellas, permite automatizar los procesos repetitivos, minimizando errores humanos y aumentando la eficiencia del proyecto. Además, la visualización y seguimiento de cada tarea dentro de un flow es más sencilla, especialmente si utilizamos herramientas como Prefect para ejecutarlos.

¿Cómo se ejecuta un flow en Prefect?

Para ejecutar un flow en Prefect es necesario tener un servidor prefabricado y correr los scripts correspondientes:

# Ejecutando el servidor de Prefect
prefect server start

# Ejecutando el script con el flow
python my_flow_script.py
  • Terminal A: Inicializa el servidor de Prefect.
  • Terminal B: Ejecuta el script.

¿Qué debemos tener en cuenta al crear flujos automáticos?

Al crear flujos de trabajo, es vital que consideremos los parámetros que cada flow puede recibir. Esto incluye los nombres, descripciones, etiquetas, entre otros. Además, la integración con programadores externos como Cron puede facilitar la ejecución periódica de estos flujos, lo cual es indispensable para tareas recurrentes como el reentrenamiento de modelos.

¿Cómo gestionamos los artefactos generados en flows?

En un flow, una tarea puede generar artefactos como salidas. Por ejemplo, la división de datos puede producir archivos comprimidos para su uso futuro, minimizando el impacto en la memoria. Es recomendable familiarizarse con la creación y gestión de estos artefactos como parte integral de los procesos de machine learning.

En resumen, dominar los fundamentos y aplicaciones de los flows es esencial para cualquier profesional en el ámbito de machine learning, ya que permite llevar las tareas experimentales a entornos productivos de manera eficiente y eficaz.

Aportes 1

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Hola! Ya he iniciado el servidor de prefect ![](https://static.platzi.com/media/user_upload/image-1c3e5182-22e6-4c9a-bdc4-e5f253ac6767.jpg) Pero cuando ejecuto el script (en una nueva terminal como se indica en el video) me salta el siguiente error: ![](https://static.platzi.com/media/user_upload/image-360282b7-c4b7-4f2a-a42b-b5cef308c426.jpg) No se si estoy omitiendo algo del video? Como puedo solucionar esto??