Saltar al contenido

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

La implementaci贸n de modelos avanzados de visi贸n inform谩tica como Ultralytics' YOLOv8 en los puntos finales de Amazon SageMaker abre un amplio abanico de posibilidades para diversas aplicaciones de aprendizaje autom谩tico. La clave para utilizar eficazmente estos modelos reside en comprender sus procesos de instalaci贸n, configuraci贸n e implementaci贸n. YOLOv8 se vuelve a煤n m谩s potente cuando se integra perfectamente con Amazon SageMaker, un servicio de aprendizaje autom谩tico robusto y escalable de 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.

  • Roles IAM configurados: Necesitar谩s un rol IAM con los permisos necesarios para Amazon SageMaker, AWS CloudFormation y Amazon S3. Este rol debe tener pol铆ticas que le permitan acceder a estos servicios.

  • 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.

  • Ejecuta el Cuaderno de Pruebas: Sigue las instrucciones del cuaderno para probar el endpoint SageMaker desplegado. Esto incluye enviar una imagen al endpoint y ejecutar inferencias. A continuaci贸n, trazar谩s el resultado para visualizar el rendimiento y la precisi贸n del modelo, como se muestra a continuaci贸n.

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.



Creado 2024-01-04, Actualizado 2024-05-03
Autores: glenn-jocher (3), abirami-vina (1)

Comentarios