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 de IAM configurados: necesitar谩 un rol de 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):
    """Formats model outputs as JSON string, 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.

  • Ejecute el bloc de notas de prueba: siga las instrucciones del bloc de notas para probar el punto de enlace de SageMaker implementado. Esto incluye el env铆o de una imagen al punto de conexi贸n y la ejecuci贸n de inferencias. A continuaci贸n, representar谩 la salida 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.

PREGUNTAS FRECUENTES

驴C贸mo despliego el modelo Ultralytics YOLOv8 en los puntos finales de Amazon SageMaker?

Para desplegar el modelo Ultralytics YOLOv8 en los puntos finales de Amazon SageMaker, sigue estos pasos:

  1. Configura tu entorno de AWS: Aseg煤rate de que tienes una cuenta de AWS, roles IAM con los permisos necesarios y AWS CLI configurado. Instala AWS CDK si a煤n no lo has hecho (consulta las instrucciones de AWS CDK).
  2. Clona el repositorio de SageMaker de YOLOv8:
    git clone https://github.com/aws-samples/host-yolov8-on-sagemaker-endpoint.git
    cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk
    
  3. Configurar el entorno CDK: Crea un entorno virtual Python , act铆valo, instala las dependencias y actualiza la biblioteca AWS CDK.
    python3 -m venv .venv
    source .venv/bin/activate
    pip3 install -r requirements.txt
    pip install --upgrade aws-cdk-lib
    
  4. Implementar con AWS CDK: Sintetiza y despliega la pila de CloudFormation, arranca el entorno.
    cdk synth
    cdk bootstrap
    cdk deploy
    

Para m谩s detalles, consulta la secci贸n de documentaci贸n.

驴Cu谩les son los requisitos previos para desplegar YOLOv8 en Amazon SageMaker?

Para desplegar YOLOv8 en Amazon SageMaker, aseg煤rate de que tienes los siguientes requisitos previos:

  1. Cuenta AWS: Cuenta AWS activa(reg铆strate aqu铆).
  2. Roles IAM: Roles IAM configurados con permisos para SageMaker, CloudFormation y Amazon S3.
  3. AWS CLI: Instalada y configurada la interfaz de l铆nea de comandos de AWS(gu铆a de instalaci贸n de AWS CLI ).
  4. AWS CDK: Kit de desarrollo en la nube de AWS instalado(gu铆a de instalaci贸n del CDK).
  5. Cuotas de servicio: Cuotas suficientes para ml.m5.4xlarge tanto para el uso del punto final como del cuaderno (solicitar un aumento de cuota).

Para una configuraci贸n detallada, consulta esta secci贸n.

驴Por qu茅 deber铆a utilizar Ultralytics YOLOv8 en Amazon SageMaker?

Utilizar Ultralytics YOLOv8 en Amazon SageMaker ofrece varias ventajas:

  1. Escalabilidad y gesti贸n: SageMaker proporciona un entorno gestionado con funciones como el autoescalado, que ayuda en las necesidades de inferencia en tiempo real.
  2. Integraci贸n con los servicios de AWS: Se integra perfectamente con otros servicios de AWS, como S3 para almacenamiento de datos, CloudFormation para infraestructura como c贸digo y CloudWatch para monitorizaci贸n.
  3. Facilidad de implementaci贸n: Configuraci贸n simplificada mediante scripts AWS CDK y procesos de despliegue agilizados.
  4. Rendimiento: Aprovecha la infraestructura de alto rendimiento de Amazon SageMaker para ejecutar eficientemente tareas de inferencia a gran escala.

Explora m谩s sobre las ventajas de utilizar SageMaker en la secci贸n de introducci贸n.

驴Puedo personalizar la l贸gica de inferencia para YOLOv8 en Amazon SageMaker?

S铆, puedes personalizar la l贸gica de inferencia para YOLOv8 en Amazon SageMaker:

  1. Modifica inference.py: Localiza y personaliza el output_fn en la funci贸n inference.py para adaptar los formatos de salida.

    import json
    
    
    def output_fn(prediction_output):
        """Formats model outputs as JSON string, extracting attributes like boxes, masks, keypoints."""
        infer = {}
        for result in prediction_output:
            if result.boxes is not None:
                infer["boxes"] = result.boxes.numpy().data.tolist()
            # Add more processing logic if necessary
        return json.dumps(infer)
    
  2. Despliega el modelo actualizado: Aseg煤rate de que vuelves a desplegar el modelo utilizando los cuadernos Jupyter proporcionados (1_DeployEndpoint.ipynb) para incluir estos cambios.

Consulta los pasos detallados para desplegar el modelo modificado.

驴C贸mo puedo probar el modelo YOLOv8 desplegado en Amazon SageMaker?

Para probar el modelo YOLOv8 desplegado en Amazon SageMaker:

  1. Abre el Cuaderno de Pruebas: Localiza el 2_TestEndpoint.ipynb en el entorno Jupyter de SageMaker.
  2. Ejecuta el Cuaderno: Sigue las instrucciones del cuaderno para enviar una imagen al endpoint, realizar la inferencia y mostrar los resultados.
  3. Visualiza los resultados: Utiliza las funciones de trazado integradas para visualizar las m茅tricas de rendimiento, como los cuadros delimitadores alrededor de los objetos detectados.

Para obtener instrucciones completas sobre las pruebas, visita la secci贸n de pruebas.



Creado 2024-01-04, Actualizado 2024-07-05
Autores: glenn-jocher (7), ambitious-octopus (1), sergiuwaxmann (1), abirami-vina (1)

Comentarios