Saltar al contenido

Guía para implementar YOLOv8 en los puntos finales de Amazon SageMaker

Deploying advanced computer vision models like Ultralytics' YOLOv8 on Amazon SageMaker Endpoints opens up a wide range of possibilities for various machine learning applications. The key to effectively using these models lies in understanding their setup, configuration, and deployment processes. YOLOv8 becomes even more powerful when integrated seamlessly with Amazon SageMaker, a robust and scalable machine learning service by AWS.

Esta guía te llevará paso a paso por el proceso de despliegue de los modelos YOLOv8 PyTorch en los puntos finales de Amazon SageMaker. Aprenderás lo esencial para preparar tu entorno de AWS, configurar el modelo adecuadamente y utilizar herramientas como AWS CloudFormation y el Kit de desarrollo en la nube de AWS (CDK) para la implementación.

Amazon SageMaker

Visión general de Amazon SageMaker

Amazon SageMaker es un servicio de aprendizaje automático de Amazon Web Services (AWS) que simplifica el proceso de creación, entrenamiento y despliegue de modelos de aprendizaje automático. Proporciona una amplia gama de herramientas para manejar diversos aspectos de los flujos de trabajo de aprendizaje automático. Esto incluye funciones automatizadas para ajustar modelos, opciones para entrenar modelos a escala y métodos sencillos para desplegar modelos en producción. SageMaker es compatible con los marcos de aprendizaje automático más populares, ofreciendo la flexibilidad necesaria para diversos proyectos. Sus funciones también cubren el etiquetado de datos, la gestión del flujo de trabajo y el análisis del rendimiento.

Implementación de YOLOv8 en los puntos finales de Amazon SageMaker

Implementar YOLOv8 en Amazon SageMaker te permite utilizar su entorno administrado para la inferencia en tiempo real y aprovechar características como el autoescalado. Echa un vistazo a la arquitectura de AWS a continuación.

Arquitectura AWS

Paso 1: Configura tu entorno AWS

En primer lugar, asegúrate de que reúnes los siguientes requisitos previos:

  • Una cuenta de AWS: Si aún no tienes una, regístrate para obtener una cuenta de AWS.

  • Configured IAM Roles: You'll need an IAM role with the necessary permissions for Amazon SageMaker, AWS CloudFormation, and Amazon S3. This role should have policies that allow it to access these services.

  • AWS CLI: Si aún no está instalada, descarga e instala la interfaz de línea de comandos de AWS (CLI) y configúrala con los datos de tu cuenta. Sigue las instrucciones de AWS CLI para la instalación.

  • AWS CDK: Si aún no está instalado, instala el Kit de Desarrollo en la Nube de AWS (CDK), que se utilizará para programar el despliegue. Sigue las instrucciones de instalación del CDK de AWS.

  • Cuota de servicio adecuada: Confirma que tienes cuotas suficientes para dos recursos separados en Amazon SageMaker: uno para ml.m5.4xlarge para el uso del punto final y otro para ml.m5.4xlarge para el uso de la instancia de portátil. Cada una de ellas requiere un valor mínimo de cuota. Si tus cuotas actuales están por debajo de este requisito, es importante que solicites un aumento para cada una de ellas. Puedes solicitar un aumento de cuota siguiendo las instrucciones detalladas en la sección Documentación sobre las cuotas de servicio de AWS.

Paso 2: Clonar el repositorio de SageMaker YOLOv8

El siguiente paso es clonar el repositorio específico de AWS que contiene los recursos para implementar YOLOv8 en SageMaker. Este repositorio, alojado en GitHub, incluye los scripts CDK y los archivos de configuración necesarios.

  • Clona el repositorio de GitHub: Ejecuta el siguiente comando en tu terminal para clonar el repositorio host-yolov8-on-sagemaker-endpoint:
git clone https://github.com/aws-samples/host-yolov8-on-sagemaker-endpoint.git
  • Navega hasta el directorio clonado: Cambia tu directorio al repositorio clonado:
cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk

Paso 3: Configurar el entorno CDK

Ahora que ya tienes el código necesario, configura tu entorno para el despliegue con AWS CDK.

  • Crea un Entorno Virtual Python : Esto aísla tu entorno Python y sus dependencias. Ejecútalo:
python3 -m venv .venv
  • Activa el Entorno Virtual:
source .venv/bin/activate
  • Instalar dependencias: Instala las dependencias de Python necesarias para el proyecto:
pip3 install -r requirements.txt
  • Actualiza la biblioteca CDK de AWS: Asegúrate de que tienes la última versión de la biblioteca AWS CDK:
pip install --upgrade aws-cdk-lib

Paso 4: Crear la pila de AWS CloudFormation

  • Sintetiza la aplicación CDK: Genera la plantilla de AWS CloudFormation a partir de tu código CDK:
cdk synth
  • Prepara la aplicación CDK: Prepara tu entorno AWS para el despliegue de CDK:
cdk bootstrap
  • Despliega la pila: Esto creará los recursos de AWS necesarios y desplegará tu modelo:
cdk deploy

Paso 5: Despliega el modelo YOLOv8

Antes de sumergirte en las instrucciones de despliegue, asegúrate de consultar la gama de modelos deYOLOv8 que ofrece Ultralytics. Esto te ayudará a elegir el modelo más apropiado para los requisitos de tu proyecto.

Tras crear la pila de AWS CloudFormation, el siguiente paso es desplegar YOLOv8.

  • Abre la Instancia de Notebook: Ve a la consola de AWS y navega hasta el servicio Amazon SageMaker. Selecciona "Instancias de bloc de notas" en el panel de control y localiza la instancia de bloc de notas creada por tu script de despliegue del CDK. Abre la instancia de bloc de notas para acceder al entorno Jupyter.

  • Accede y modifica inference.py: Tras abrir la instancia del cuaderno SageMaker en Jupyter, localiza el archivo inference.py. Edita la función output_fn en inference.py como se muestra a continuación y guarda los cambios en el script, asegurándote de que no hay errores de sintaxis.

import json


def output_fn(prediction_output, content_type):
    """Formats model outputs as JSON string according to content_type, extracting attributes like boxes, masks, keypoints."""
    print("Executing output_fn from inference.py ...")
    infer = {}
    for result in prediction_output:
        if result.boxes is not None:
            infer["boxes"] = result.boxes.numpy().data.tolist()
        if result.masks is not None:
            infer["masks"] = result.masks.numpy().data.tolist()
        if result.keypoints is not None:
            infer["keypoints"] = result.keypoints.numpy().data.tolist()
        if result.obb is not None:
            infer["obb"] = result.obb.numpy().data.tolist()
        if result.probs is not None:
            infer["probs"] = result.probs.numpy().data.tolist()
    return json.dumps(infer)
  • Despliega el Endpoint utilizando 1_DeployEndpoint.ipynb: En el entorno Jupyter, abre el cuaderno 1_DeployEndpoint.ipynb situado en el directorio sm-notebook. Sigue las instrucciones del cuaderno y ejecuta las celdas para descargar el modelo YOLOv8 , empaquetarlo con el código de inferencia actualizado y subirlo a un bucket de Amazon S3. El cuaderno te guiará en la creación y despliegue de un endpoint de SageMaker para el modelo YOLOv8 .

Paso 6: Probar tu implantación

Ahora que tu modelo YOLOv8 está desplegado, es importante probar su rendimiento y funcionalidad.

  • Abre el Cuaderno de Pruebas: En el mismo entorno Jupyter, localiza y abre el cuaderno 2_TestEndpoint.ipynb, también en el directorio sm-notebook.

  • Run the Test Notebook: Follow the instructions within the notebook to test the deployed SageMaker endpoint. This includes sending an image to the endpoint and running inferences. Then, you'll plot the output to visualize the model's performance and accuracy, as shown below.

Resultados de las pruebas YOLOv8

  • Recursos de limpieza: El cuaderno de pruebas también te guiará en el proceso de limpieza del endpoint y del modelo alojado. Éste es un paso importante para gestionar eficazmente los costes y los recursos, sobre todo si no piensas utilizar inmediatamente el modelo desplegado.

Paso 7: Seguimiento y gestión

Después de las pruebas, son esenciales la supervisión y la gestión continuas de tu modelo desplegado.

  • Monitoriza con Amazon CloudWatch: Comprueba regularmente el rendimiento y la salud de tu endpoint de SageMaker utilizando Amazon CloudWatch.

  • Gestionar el Endpoint: Utiliza la consola de SageMaker para la gestión continua del endpoint. Esto incluye escalar, actualizar o volver a desplegar el modelo según sea necesario.

Al completar estos pasos, habrás desplegado y probado con éxito un modelo YOLOv8 en los puntos finales de Amazon SageMaker. Este proceso no sólo te dota de experiencia práctica en el uso de los servicios de AWS para el despliegue del aprendizaje automático, sino que también sienta las bases para desplegar otros modelos avanzados en el futuro.

Resumen

Esta guía te lleva paso a paso a través de la implementación de YOLOv8 en los puntos finales de Amazon SageMaker utilizando AWS CloudFormation y el Kit de Desarrollo en la Nube de AWS (CDK). El proceso incluye la clonación del repositorio de GitHub necesario, la configuración del entorno CDK, la implementación del modelo mediante los servicios de AWS y la prueba de su rendimiento en SageMaker.

Para obtener más detalles técnicos, consulta este artículo del blog de aprendizaje automático de AWS. También puedes consultar la Documentación oficial de Amazon SageMaker para obtener más información sobre diversas características y funcionalidades.

¿Te interesa saber más sobre las distintas integraciones de YOLOv8 ? Visita la página de la guía de integracionesUltralytics para descubrir otras herramientas y capacidades que pueden mejorar tus proyectos de aprendizaje automático.



Created 2024-01-04, Updated 2024-06-02
Authors: glenn-jocher (6), sergiuwaxmann (1), abirami-vina (1)

Comentarios