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

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

11 Días
3 Hrs
22 Min
35 Seg

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

24/35
Recursos

¿Cómo crear una aplicación con procesamiento en batch y predicciones?

En el mundo del desarrollo de software, una de las habilidades más valiosas es la capacidad de construir aplicaciones robustas y eficientes. Aquí, nos enfocaremos en la creación de una aplicación que no solo maneja fácilmente múltiples entradas (gracias al procesamiento por batches), sino también genera predicciones utilizando un modelo preentrenado. Este tipo de soluciones son fundamentales, especialmente cuando se trabaja con grandes volúmenes de datos y se requiere un sistema de respuesta rápida.

¿Qué librerías y herramientas necesito importar?

Para comenzar, es necesario importar una serie de librerías y herramientas que permitirán el funcionamiento óptimo de la aplicación:

  • PaaS API: Essential para el despliegue y manejo de entry points.
  • Pydantic (BaseModel): Útil para estructurar los datos entrantes y definir esquemas para la base de datos.
  • Joblib: Para cargar modelos preentrenados.
  • Otras librerías: Proporcionan funciones de procesamiento y transformación de datos.

¿Cómo se define la estructura de los datos de entrada?

La arquitectura de la aplicación se basa en un modelo de entrada robusto que puede manejar múltiples solicitudes simultáneamente. Aquí, definimos clases para estructurar los datos que ingresarán al sistema:

from pydantic import BaseModel

class Sentence(BaseModel):
    client_name: str
    text: str

class ProcessTextRequestModel(BaseModel):
    sentences: list[Sentence]
  1. Clase Sentence: Define las propiedades básicas de cada entrada, como el nombre del cliente y el texto asociado al ticket.
  2. Clase ProcessTextRequestModel: Especifica que cada entrada puede contener múltiples sentencias, permitiendo un procesamiento simultáneo de datos.

¿Cómo implementar el entry point y procesamiento?

El encapsulamiento del punto de entrada es vital para ejecutar la lógica de negocio subyacente. Implementar un método asincrónico para gestionar las predicciones es crucial:

@app.post("/predict")
async def read_root(data: ProcessTextRequestModel):
    # Lógica principal de la aplicación
    with Session() as session:
        # Cargar modelo preentrenado
        model = joblib.load('model.pql')

        # Crear lista vacía para predicciones
        pred_list = []

        # Procesamiento de inputs
        for sentence in data.sentences:
            # Procesar cada texto y almacenar predicciones
            processed_text = preprocess_text(sentence.text)
            prediction = model.predict(processed_text)
            pred_list.append(prediction)

        # Almacenar resultados en la base de datos
        store_results(pred_list, session)
  • Definición de función asincrónica: Garantiza que el procesamiento de solicitudes no bloquee la aplicación.
  • Cargar el modelo: Con joblib, se carga un modelo preentrenado, garantizando predicciones eficientes.
  • Crear y almacenar predicciones: Cada texto se procesa y predice, almacenando los resultados para su posterior uso.

¿Cómo manejar y decodificar predicciones?

El mapeo de etiquetas identificativas es crítico para transformar predicciones numéricas en descripciones significativas:

label_mapping = {
    0: "Servicio Bancario",
    1: "Reporte de Crédito",
    2: "Hipoteca/Préstamo"
}

# Ejemplo de decodificación
decoded_predictions = [label_mapping[pred] for pred in pred_list]
  • Label Mapping: Un diccionario que traduce predicciones numéricas a términos comprensibles, conectando directamente con el sentido del negocio.

Este proceso no solo mejora la interpretación de los resultados, sino que también integra una capa adicional de comprensión para los usuarios finales. ¿Estás listo para llevar tus habilidades al siguiente nivel y crear aplicaciones que no solo simplifiquen procesos, sino que también brinden insights valiosos? ¡El camino hacia la excelencia en el desarrollo de software te espera!

Aportes 1

Preguntas 0

Ordenar por:

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

Definitivamente uno de los mejores aportes de platzi a la carrera de cualquier arquitecto | ingeniero | programador de software a la hora de desplegar modelos, la idea es la misma para desplegar tanto modelos de ML y LLM. Excelente!!!