Pipeline de Machine Learning para Clasificación de Tickets

Clase 19 de 35Curso de MLOPS: Despliegue de Modelos de Machine Learning

Resumen

¿Cómo implementar un pipeline para la clasificación de tickets?

Desarrollar un pipeline de machine learning robusto es esencial para manejar procesos automatizados de análisis de datos. En este contexto, vamos a implementar un pipeline enfocado en la clasificación de tickets, integrando procesos de procesamiento de datos y entrenamiento del modelo en un flujo eficaz utilizando herramientas como Visual Studio Code y bibliotecas relevantes.

¿Cómo configurar el entorno de trabajo?

Antes de comenzar a desarrollar nuestro pipeline, es fundamental preparar el entorno de trabajo. Se proporcionan dos archivos importantes:

  1. config.py:
  • Aloja variables cruciales para el flujo de trabajo, incluyendo rutas de almacenamiento de datos y configuraciones de parámetros del modelo.

  • Permite versatilidad al incluir una versión configurable, ayudando a identificar ejecuciones específicas del pipeline.

    # Ejemplo básico de estructura
    config = {
      "data_path": "ruta_datos_procesados",
      "version": 2,
      "language": "inglés",
      "filename_input": "nombre_entrada",
      "model_params": {"param1": "value1", "param2": "value2"},
    }
    
  1. utils.py:
  • Incluye funciones auxiliares no definidas como tareas, pero útiles para el flujo de trabajo general, como la decodificación de etiquetas o el almacenamiento y carga de objetos con picle.

¿Cómo integrar las tareas en el flow?

Iniciando con el desarrollo del flow, se importa una serie de librerías:

  • Scikit-learn para entrenamiento y métricas de modelo.
  • Prefect para orquestar el pipeline.
  • Módulos personalizados para procesamiento de texto y extracción de características.

¿Cómo se define una tarea de procesamiento de texto?

Crear una tarea que gestione el procesamiento de texto es esencial para preparar datos para el modelo.

from prefect import task

@task(retries=3, retry_delay_seconds=60, name="textProcessingTask", tags=["data_processing"])
def text_processing(language: str, filename: str, version: int):
    processor = TextProcessingProcessor(language)
    processed_data = processor.run(filename, version)
    return processed_data

¿Cómo se ejecuta la extracción de características?

La extracción de características permite estructurar los datos de manera más efectiva para el modelo.

@task(retries=3, retry_delay_seconds=60, name="featureExtractionTask", tags=["feature_engineering"])
def feature_extraction(data_path: str, version: int):
    feature_processor = FeatureExtractionProcessor()
    features = feature_processor.run(data_path, version)
    return features

¿Cómo se ejecuta todo el pipeline?

Una vez definidas las tareas, se integran dentro de un flow:

from prefect import Flow

# Definición del flow
with Flow("Ticket Classification Pipeline") as flow:
    processed_data = text_processing(config['language'], config['filename_input'], config['version'])
    features = feature_extraction(config['data_path'], config['version'])

flow.run()

Este flujo ejecuta primero el procesamiento de texto y luego la extracción de características, asegurando que los datos estén adecuadamente preparados para el modelo.

¿Cuáles son los siguientes pasos?

Con el pipeline en marcha, el siguiente paso será integrar nuevas tareas para completar la ejecución de los procesos necesarios para el entrenamiento y evaluación del modelo. Esto incluye tareas para aplicar transformaciones a los datos, manejar hiperparámetros y evaluar la precisión del modelo. Continuar explorando y mejorando la robustez de tu pipeline asegurará no solo resultados precisos, sino también eficientes, lo cual es fundamental para cualquier proyecto de machine learning.