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:

12 D铆as
15 Hrs
21 Min
9 Seg

Tracking de experimentos con MLflow: preprocesamiento de datos

8/35
Recursos

驴C贸mo se estructura el tracking de datos en procesamiento del lenguaje natural?

El mundo empresarial actual lidia constantemente con una inmensa cantidad de datos textuales, muchos de los cuales requieren una clasificaci贸n autom谩tica. Nos encontramos aqu铆 con un proyecto centrado precisamente en esto: el procesamiento del lenguaje natural para clasificar tickets de servicio al cliente. Estos tickets pueden girar en torno a problemas relacionados con bancos, hipotecas, pr茅stamos, entre otros. Veamos c贸mo este procedimiento se desglosa en varios m贸dulos y procesos claves.

驴Qu茅 es el TextProcessing?

TextProcessing es nuestro primer m贸dulo clave, una clase dedicada exclusivamente al procesamiento del texto. Este m贸dulo realiza varias tareas esenciales:

  • Tokenizaci贸n del texto: Divide las palabras en unidades m谩s peque帽as llamadas tokens.
  • Eliminaci贸n de palabras vac铆as: Filtra aquellas palabras que no aportan significado relevante, adapt谩ndose al idioma del texto.
  • Lematizaci贸n: Simplifica los tokens a su ra铆z gramatical.
  • Post Tagging: Asigna una categor铆a gramatical a cada token.
  • Procesamiento integral del texto: A trav茅s de una funci贸n ejecuta todo el pipeline de procesamiento.

Adem谩s, este m贸dulo incluye m茅todos para transformar datos al eliminar columnas innecesarias, renombrar y realizar ciertas tareas de feature engineering, como la eliminaci贸n de datos faltantes.

class TextProcessing:
    def __init__(self, language):
        # C贸digo para la inicializaci贸n

    def tokenize(self, text):
        # C贸digo para tokenizar

    # M谩s m茅todos de procesamiento de texto...

驴C贸mo se extraen las caracter铆sticas con Feature Extraction?

Feature Extraction se encarga de la representaci贸n vectorial del texto y reduce la complejidad de los datos. A trav茅s del TF-IDF vectorizer, convierte documentos en vectores num茅ricos. Este enfoque es crucial para manejar los numerosos temas (labels) que pueden tener v铆nculos entre s铆.

  • Topic Modeling: Utiliza un modelo NF para identificar t贸picos clave y reduce la cantidad de labels, mejorando la eficacia del modelo y su manejabilidad.
  • Creaci贸n de nuevas features: A partir de vectores y pesos, genera las nuevas caracter铆sticas que ser谩n el foco del modelo de clasificaci贸n.
  • Topic Mapping: Asigna descripciones comprensibles a cada topic, facilitando la interpretaci贸n y an谩lisis de los resultados.

Este esfuerzo optimiza los datos al reducir t贸picos potencialmente redundantes, que se mapean de manera sencilla para reconocerlos al instante.

class FeatureExtraction:
    def __init__(self):
        # C贸digo para la inicializaci贸n

    def fit_transform(self, corpus):
        # C贸digo para vectorizaci贸n

    # M茅todos adicionales para la extracci贸n de caracter铆sticas...

驴Por qu茅 es crucial el an谩lisis exploratorio de datos (EDA)?

Una base s贸lida en proyecto de Machine Learning es el an谩lisis exploratorio de datos (EDA). Permite comprender el comportamiento y la estructura de los datos, clave para decidir c贸mo abordaremos el modelado posterior. Un notebook dedicado al EDA auxiliar谩 en:

  • Describir el comportamiento promedio de los datos preprocesados.
  • Explorar tendencias significativas en tokens por label.
  • Analizar estructuras complejas como Bigrams y Trigrams.

Este an谩lisis inicial proporciona una visi贸n clara de las limitaciones y oportunidades presentes en los datos, siendo indispensable para una planificaci贸n eficiente del pipeline de datos.

驴Cu谩l es el flujo de trabajo desde la terminal?

El flujo se orquesta desde la terminal a trav茅s de Python. Los scripts automatizan el procesamiento, ejecutando secuencialmente los m贸dulos TextProcessing y FeatureExtraction para asegurar un flujo continuo y consistente.

# Ejecutar TextProcessing
python utils/TextProcessing.py

# Ejecutar Feature Extraction
python utils/FeatureExtraction.py

Al finalizar, los datos quedan exhaustivamente clasificados y listos para profundizar en modelos de datos avanzados, afianzando as铆 todo el sistema de clasificaci贸n autom谩tica en el contexto del procesamiento del lenguaje natural. Este flujo met贸dico crea un entorno robusto listo para modelados m谩s sofisticados.

Aportes 3

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Hola, dos cositas: 1. puede que en el archivo textprocessing.py salte un error `AttributeError: 'TextProcessing' object has no attribute 'language'`. Este se corrige entrando al c贸digo del script y aproximadamente en la l铆nea 32 aparece `self.lenguaje = language` es un typo de la profe, ser铆a cambiarlo por `self.language = language` 2. Si alguien recibe los siguientes errores el ejecutar `utils/textprocessing.py`: `Resource stopwords not found.` 贸 `Resource punkt not found.` Es necesario abrir python en la terminal (con python o python3) y ejecutar las siguientes dos lineas `import nltk` * `nltk.download('stopwords')` si es para stopwords * `nltk.download('punkt')` si es para punkt Espero les sirva!!! De igual manera el mismo error les arroja la respuesta
Hola. Creo que hay un error cuando se define el topic mas relevante para cada ticket. Si vemos el print al terminar de ejecutar `feature_extraction.py` , el ticket\_2 y ticket\_3 deberia clasificarlo como topic 1, ya que es el que posee mayor valor (0.06), pero no es asi, los clasifica como topic 2 y topic 0 respectivamente. El error se encuentra en la funcion de `create_topics()`, en la linea de: `top_topics = np.argmax(self.df.values, axis=1)` hay que reemplaza `self.df.values` por `self.W` quedando: `top_topics = np.argmax(self.W, axis=1) ` Tambien habria que cambiar la cantidad de topic generados, ya que se pide que se generen 4 pero solo se clasifican 3. Para ello, en la funcion `run()`, en la linea de: `extracted_topics = self.topic_modeling_nmf(n_components=4)` Cambiar el valor de `n_components` de 4 por 3, quedando: `extracted_topics = self.topic_modeling_nmf(n_components=3)` Creo que los nuevos termicos de cada topick estan un poco mejor relacionados: * Topic 0 "Bank Account Services": account, bank, check, money, chase, deposit, fund, day, claim, fee, branch, call, transact, number, charg * Topic 1 "Credit Report or Prepaid Card": credit, card, report, chase, inquiri, charg, account, disput, compani, score, letter, author, fraud, inform, us * Topic 2 "Mortgage/Loan": payment, loan, chase, mortgag, month, home, interest, time, pay, year, modif, rate, amount, fee, letter
Creo que hay que actualizar la liga de recursos por que esta apunta [**platzi**](https://github.com/platzi)/[Mlops-platzi](https://github.com/platzi/Mlops-platzi), que es un fork del repositorio [**Mariac-db**](https://github.com/Mariac-db)/[Mlops-platzi](https://github.com/Mariac-db/Mlops-platzi) y entonces est茅 煤ltimo est谩 5 commits por delante del repositorio de recursos que son precisamente los commits donde se corrigen los bugs.