Despliegue Local y en AWS de Aplicaciones con Docker y Postman

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

Resumen

¿Cómo estructurar tu repositorio para un despliegue exitoso?

Cuando trabajas con aplicaciones complejas, es fundamental mantener una estructura de repositorio clara y bien organizada. Esto es especialmente importante si estás utilizando herramientas como Docker para el despliegue. En nuestro caso, todas las configuraciones e implementaciones deben manejarse en una rama específica de deploy para evitar confusiones. Aquí te mostramos cómo estructurar tu aplicación:

  • Directorio app: Debes mantener los archivos esenciales dentro del directorio app:

  • __init__.py: Vacío, para designar el paquete.

  • config: Configuraciones clave de la aplicación.

  • convectorizer.pickle: Artefacto vital para transformar datos a representación matricial para el modelo.

  • db.py: Configuraciones de la base de datos, incluyendo campos y tipos de datos.

  • main.py: Encapsula toda la lógica de la aplicación.

  • prestart.sh: Inicializa la base de datos, indicando el puerto 5432.

  • Archivos externos a app:

  • Dockerfile y docker-compose.yml: Para la estructura de Docker.

  • Model: Usado para leer al generar predicciones en batch.

  • requerimientos: Todas las dependencias necesarias.

  • Archivo para instancias en AWS: Configura la instancia, actualiza, y gestiona conexiones.

¿Cómo proceder con el despliegue local?

Desplegar una aplicación localmente antes del servidor final es un buen ejercicio para asegurar que todo funciona como se espera. A continuación, te guiamos en el proceso:

  1. Preparar la terminal:
  • Asegúrate de estar en la correcta rama de trabajo en tu repositorio.
  1. Construir la imagen Docker:
  • Corre el siguiente comando:

     docker compose build
    
  • Este comando descarga requisitos y copia archivos de la aplicación.

  1. Levantar la aplicación:
  • Usa docker compose up para ejecutar.
  1. Corregir errores:
  • Si encuentras un error, como el de indentación en db.py línea 29, corrígelo. Requiere ajustar docstrings o llaves mal puestas.
  1. Validación con Postman:
  • Cambia el método a POST.
  • Introduce el entry point: IP local, puerto 5004 y método predict.
  • Define el cuerpo como lista de diccionarios con campos client name y text.

¿Cómo realizar pruebas de predicciones?

Una vez la aplicación está funcionando localmente, será momento de probar las predicciones con Postman. Estos son los pasos que debes seguir:

  • Enviar solicitudes:

  • Usa el método POST a la API con el cuerpo de prueba.

  • Comprueba la estructura del entry point y asegúrate de que los datos están correctamente formateados.

  • Verifica las respuestas:

  • Tras enviar la solicitud, deberías recibir un diccionario con el valor de prediction.

  • Si el status code es 200, indica que la aplicación funcionó correctamente.

¿Cómo conectarse a la base de datos y validar datos?

Para garantizar que tus predicciones se almacenan adecuadamente en la base de datos, sigue estos pasos:

  • Usa tu gestor favorito de base de datos:

  • En este caso, puedes usar Visual Studio Code con la extensión de conexiones.

  • Configura tu conexión con localhost, puerto 5433 y credenciales definidas en el Dockerfile.

  • Verifica los datos:

  • Examina los registros almacenados, como ID, client name, prediction.

  • Confirma que las predicciones han sido decodificadas correctamente usando label mapping.

Esta estructura y proceso ayudan a garantizar que el despliegue se realiza sin problemas, asegurando una transición fluida de local a producción. ¡No dudes en seguir experimentando y afinando estos pasos para perfeccionar tus despliegues!