Close

Introducción a Atlassian ImageLabeller


ImageLabeller es una sencilla aplicación de demostración que utiliza el aprendizaje automático para aplicar etiquetas a las imágenes. Utiliza AWS Lambda, AWS DynamoDB, AWS S3, AWS SageMaker, AWS API Gateway, AWS CloudWatch y AWS CloudFormation, y está escrita en Go y Python. Esta guía explica cómo utilizar las herramientas Open DevOps de Atlassian para implementar y monitorizar un subconjunto de estos componentes.

Arquitectura de ImageLabeller

Diagrama

Funcionamiento

Un usuario invoca la AWS Lambda de SubmitImage y pasa una URL de imagen válida como parámetro. SubmitImage descarga la imagen, la sube a la open-devops-images- de un compartimento AWS S3, inserta una nueva tupla en una tabla ImageLabels de AWS DynamoDB y devuelve un token de identificación de imagen al usuario. El token de identificación de la imagen se utiliza para correlacionar la imagen en open-devops-images- y la tupla de ImageLabels.

La AWS Lambda de InvokeLabeller tiene un desencadenador de eventos de AWS DynamoDB. InvokeLabeller descarga la imagen correspondiente de open-devops-images-, llama a un modelo Inception V3 de AWS SageMaker previamente entrenado para generar etiquetas de imagen y actualiza la tupla de ImageLabels cuando se inserta una nueva tupla en ImageLabels.

El usuario invoca la AWS Lambda de GetImageLabel y pasa el token de identificación de la imagen como parámetro. GetImageLabel busca las etiquetas asociadas al token de identificación de la imagen en ImageLabels y se las devuelve al usuario. El usuario recibe una etiqueta NOT_CLASSIFIED si el modelo de AWS SageMaker no ha terminado de procesar una imagen.

ImageLabeller se implementa en cinco entornos: un entorno de pruebas en us-west-1, un entorno de ensayo en us-east-2 y tres entornos de producción en us-west-2, us-east-1 y ca-central-1 en este ejemplo.

Componentes

Los compartimentos de AWS S3 y las tablas de AWS DynamoDB que forman parte de ImageLabeller se implementan mediante plantillas de AWS CloudFormation. Esta guía proporciona información de configuración de CI/CD sobre cómo implementar los compartimentos de AWS S3. El proceso de implementación de las tablas de AWS DynamoDB es casi idéntico y se deja como un ejercicio que puedes completar por tu cuenta.

Hay tres AWS Lambda en ImageLabeller: SubmitImage, InvokeLabeller y getImageLabel. Esta guía proporciona información de configuración de CI/CD sobre cómo implementar SubmitImage. El proceso de implementación de GetImageLabel es casi idéntico y también lo tienes que completar por tu cuenta.

InvokeLabeller es una AWS Lambda basada en Python y requiere una actualización menor antes de poder publicarse. Concretamente, InvokeLabeller depende de la configuración de AWS SageMaker, que se realiza a través de la consola de AWS.

Las pruebas del sistema incluidas en el proyecto ImageLabeller ponen a prueba ImageLabeller en su conjunto. Las pruebas no se realizarán correctamente si algún componente de ImageLabeller no está presente o no funciona como se esperaba. Todas las implementaciones de SubmitImage, GetImageLabel e InvokeLabeller ejecutan las pruebas del sistema como parte de sus respectivos canales de CI/CD.

Para la implementación inicial de SubmitImage, GetImageLabel e InvokeLabeller, tienes que comentar los pasos de ejecución de las pruebas del sistema. Cuando las implementaciones se hayan ejecutado correctamente una vez, puedes descomentar los pasos de ejecución de las pruebas del sistema y volver a implementarlos.

Orden para la implementación de componentes

Implementa el modelo previamente entrenado de AWS SageMaker manualmente a través de la consola de AWS

Implementa repositorios de infraestructura de AWS

  1. s3_infra
  2. dynamodb_infra

Implementa las AWS Lambdas

  1. SubmitImage
  2. GetImageLabel
  3. InvokeLabeller

Implementar SystemTests

Implementar CloudWatchAlarms

Configurar el modelo previamente entrenado de AWS SageMaker

Detalles sobre cómo configurar el modelo previamente entrenado de AWS SageMaker.

Integración de Jira con CI/CD

Conecta tus herramientas de planificación, repositorio, CI/CD y monitorización con Atlassian Open DevOps.

Warren Marusiak
Warren Marusiak

Warren is a Canadian developer from Vancouver, BC with over 10 years of experience. He came to Atlassian from AWS in January of 2021.


Compartir este artículo

Lecturas recomendadas

Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.

Ilustración de Devops

La comunidad de DevOps

Ilustración de Devops

Ruta de aprendizaje de DevOps

Ilustración de un mapa

Pruébalo gratis

Suscríbete para recibir el boletín de DevOps

Thank you for signing up