Guía para implementar YOLO26 en Amazon SageMaker Endpoints

Implementar modelos avanzados de visión artificial como YOLO26 de Ultralytics en Amazon SageMaker Endpoints abre un amplio abanico de posibilidades para diversas aplicaciones de aprendizaje automático. La clave para utilizar estos modelos de forma eficaz reside en comprender sus procesos de configuración, ajuste e implementación. YOLO26 resulta aún más potente cuando se integra a la perfección con Amazon SageMaker, un servicio de aprendizaje automático sólido y escalable de AWS.

Esta guía te llevará paso a paso a través del proceso de implementación de modelos PyTorch de YOLO26 en Amazon SageMaker Endpoints. Aprenderás lo esencial sobre cómo preparar tu entorno de AWS, configurar el modelo adecuadamente y utilizar herramientas como AWS CloudFormation y el AWS Cloud Development Kit (CDK) para la implementación.

Amazon SageMaker

Amazon SageMaker ML platform architecture

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

Implementación de YOLO26 en Amazon SageMaker Endpoints

Implementar YOLO26 en Amazon SageMaker te permite utilizar su entorno gestionado para la inferencia en tiempo real y aprovechar funciones como el escalado automático. Echa un vistazo a la arquitectura de AWS a continuación.

AWS SageMaker YOLO training architecture

Paso 1: Configura tu entorno de AWS

Primero, asegúrate de cumplir 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ás 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 no está instalado, descarga e instala la AWS Command Line Interface (CLI) y configúrala con los detalles de tu cuenta. Sigue las instrucciones de AWS CLI para la instalación.

  • AWS CDK: Si no está instalado, instala el AWS Cloud Development Kit (CDK), que se utilizará para programar la implementación. Sigue las instrucciones de AWS CDK para la instalación.

  • Cuota de servicio adecuada: Confirma que tienes cuotas suficientes para dos recursos distintos en Amazon SageMaker: uno para ml.m5.4xlarge para el uso del endpoint y otro para ml.m5.4xlarge para el uso de la instancia de notebook. Cada uno de ellos requiere un valor de cuota mínimo de uno. Si tus cuotas actuales están por debajo de este requisito, es importante que solicites un aumento para cada una. Puedes solicitar un aumento de cuota siguiendo las instrucciones detalladas en la documentación de AWS Service Quotas.

Paso 2: Clona el repositorio de SageMaker de YOLO26

El siguiente paso consiste en clonar el repositorio específico de AWS que contiene los recursos para implementar YOLO26 en SageMaker. Este repositorio, alojado en GitHub, incluye los scripts de 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 al directorio clonado: Cambia tu directorio al repositorio clonado:

    cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk

Paso 3: Configura el entorno de CDK

Ahora que tienes el código necesario, configura tu entorno para la implementación con AWS CDK.

  • Crea un entorno virtual de Python: Esto aísla tu entorno de Python y las dependencias. Ejecuta:

    python3 -m venv .venv
  • Activa el entorno virtual:

    source .venv/bin/activate
  • Instala las dependencias: Instala las dependencias de Python necesarias para el proyecto:

    pip3 install -r requirements.txt
  • Actualiza la biblioteca AWS CDK: Asegúrate de tener la última versión de la biblioteca AWS CDK:

    pip install --upgrade aws-cdk-lib

Paso 4: Crea 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
  • Arranca la aplicación CDK: Prepara tu entorno de AWS para la implementación de CDK:

    cdk bootstrap
  • Implementa la pila: Esto creará los recursos de AWS necesarios e implementará tu modelo:

    cdk deploy

Paso 5: Implementa el modelo YOLO

Antes de sumergirte en las instrucciones de implementación, asegúrate de echar un vistazo a la gama de modelos YOLO26 ofrecidos por Ultralytics. Esto te ayudará a elegir el modelo más adecuado para los requisitos de tu proyecto.

Tras crear la pila de AWS CloudFormation, el siguiente paso es implementar YOLO26.

  • Abre la instancia de notebook: Ve a la consola de AWS y navega al servicio de Amazon SageMaker. Selecciona "Notebook Instances" en el panel, luego localiza la instancia de notebook creada por tu script de implementación de CDK. Abre la instancia de notebook para acceder al entorno de Jupyter.

  • Accede y modifica inference.py: Tras abrir la instancia de notebook de 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 haya 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)
  • Implementa el endpoint usando 1_DeployEndpoint.ipynb: En el entorno de Jupyter, abre el notebook 1_DeployEndpoint.ipynb situado en el directorio sm-notebook. Sigue las instrucciones del notebook y ejecuta las celdas para descargar el modelo YOLO26, empaquetarlo con el código de inferencia actualizado y subirlo a un bucket de Amazon S3. El notebook te guiará a través de la creación y la implementación de un endpoint de SageMaker para el modelo YOLO26.

Paso 6: Prueba tu implementación

Ahora que tu modelo YOLO26 está implementado, es importante probar su rendimiento y funcionalidad.

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

  • Ejecuta el notebook de prueba: Sigue las instrucciones dentro del notebook para probar el endpoint de SageMaker implementado. Esto incluye enviar una imagen al endpoint y realizar inferencias. Luego, representarás la salida para visualizar el rendimiento y la precisión del modelo, como se muestra a continuación.

Testing Results YOLO26

  • Limpia los recursos: El notebook de prueba también te guiará a través del proceso de limpieza del endpoint y del modelo alojado. Este es un paso importante para gestionar los costes y los recursos de forma eficaz, especialmente si no planeas utilizar el modelo implementado inmediatamente.

Paso 7: Supervisión y gestión

Después de realizar las pruebas, la supervisión y gestión continuas de tu modelo implementado son fundamentales.

  • Supervisa con Amazon CloudWatch: Comprueba regularmente el rendimiento y el estado de tu endpoint de SageMaker utilizando Amazon CloudWatch.

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

Al completar estos pasos, habrás implementado y probado con éxito un modelo YOLO26 en Amazon SageMaker Endpoints. Este proceso no solo te proporciona experiencia práctica en el uso de servicios de AWS para la implementación de aprendizaje automático, sino que también sienta las bases para implementar otros modelos avanzados en el futuro.

Resumen

Esta guía te ha llevado paso a paso a través de la implementación de YOLO26 en Amazon SageMaker Endpoints utilizando AWS CloudFormation y el AWS Cloud Development Kit (CDK). El proceso incluye clonar el repositorio de GitHub necesario, configurar el entorno de CDK, implementar el modelo utilizando los servicios de AWS y probar su rendimiento en SageMaker.

Para obtener más detalles técnicos, consulta este artículo en el 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 diferentes integraciones de YOLO26? Visita la página de la guía de integraciones de Ultralytics para descubrir herramientas y capacidades adicionales que pueden mejorar tus proyectos de aprendizaje automático.

Preguntas frecuentes

¿Cómo puedo implementar el modelo YOLO26 de Ultralytics en Amazon SageMaker Endpoints?

Para implementar el modelo YOLO26 de Ultralytics en Amazon SageMaker Endpoints, sigue estos pasos:

  1. Configura tu entorno de AWS: Asegúrate de tener una cuenta de AWS, roles de IAM con los permisos necesarios y la AWS CLI configurada. Instala AWS CDK si aún no lo has hecho (consulta las instrucciones de AWS CDK).
  2. Clona el repositorio de SageMaker de YOLO26:
    git clone https://github.com/aws-samples/host-yolov8-on-sagemaker-endpoint.git
    cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk
  3. Configura el entorno de CDK: Crea un entorno virtual de 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. Implementa usando AWS CDK: Sintetiza e implementa la pila de CloudFormation, arranca el entorno.
    cdk synth
    cdk bootstrap
    cdk deploy

Para obtener más detalles, revisa la sección de documentación.

¿Cuáles son los requisitos previos para implementar YOLO26 en Amazon SageMaker?

Para implementar YOLO26 en Amazon SageMaker, asegúrate de cumplir los siguientes requisitos previos:

  1. Cuenta de AWS: Cuenta de AWS activa (regístrate aquí).
  2. Roles de IAM: Roles de IAM configurados con permisos para SageMaker, CloudFormation y Amazon S3.
  3. AWS CLI: AWS Command Line Interface instalada y configurada (guía de instalación de AWS CLI).
  4. AWS CDK: AWS Cloud Development Kit instalado (guía de configuración de CDK).
  5. Cuotas de servicio: Cuotas suficientes para instancias ml.m5.4xlarge tanto para el endpoint como para el uso del notebook (solicitar un aumento de cuota).

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

¿Por qué debería usar YOLO26 de Ultralytics en Amazon SageMaker?

Usar YOLO26 de Ultralytics en Amazon SageMaker ofrece varias ventajas:

  1. Escalabilidad y gestión: SageMaker proporciona un entorno gestionado con funciones como el escalado automático, que ayuda en las necesidades de inferencia en tiempo real.
  2. Integración con servicios de AWS: Integra perfectamente con otros servicios de AWS, como S3 para el almacenamiento de datos, CloudFormation para infraestructura como código y CloudWatch para la supervisión.
  3. Facilidad de implementación: Configuración simplificada mediante scripts de AWS CDK y procesos de implementación optimizados.
  4. Rendimiento: Aprovecha la infraestructura de alto rendimiento de Amazon SageMaker para ejecutar tareas de inferencia a gran escala de forma eficiente.

Descubre más sobre las ventajas de usar SageMaker en la sección de introducción.

¿Puedo personalizar la lógica de inferencia para YOLO26 en Amazon SageMaker?

Sí, puedes personalizar la lógica de inferencia para YOLO26 en Amazon SageMaker:

  1. Modifica inference.py: Localiza y personaliza la función output_fn en el archivo 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. Implementa el modelo actualizado: Asegúrate de volver a implementar el modelo utilizando los notebooks de Jupyter proporcionados (1_DeployEndpoint.ipynb) para incluir estos cambios.

Consulta los pasos detallados para implementar el modelo modificado.

¿Cómo puedo probar el modelo YOLO26 implementado en Amazon SageMaker?

Para probar el modelo YOLO26 implementado en Amazon SageMaker:

  1. Abre el notebook de prueba: Localiza el notebook 2_TestEndpoint.ipynb en el entorno de Jupyter de SageMaker.
  2. Ejecuta el notebook: Sigue las instrucciones del notebook 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 de prueba exhaustivas, visita la sección de pruebas.

Comentarios