Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Visualice los resultados del AI/ML modelo con Flask y AWS Elastic Beanstalk
Chris Caudill y Durga Sury, Amazon Web Services
Resumen
La visualización de los resultados de los servicios de inteligencia artificial y machine learning (IA/ML) suele requerir llamadas complejas a la API, que los desarrolladores e ingenieros deben personalizar. Esto puede ser un inconveniente si sus analistas desean explorar rápidamente un nuevo conjunto de datos.
Para mejorar la accesibilidad de sus servicios y ofrecer una forma de análisis de datos más interactiva puede utilizar una interfaz de usuario (UI) basada en la web que permite a los usuarios cargar sus propios datos y visualizar los resultados del modelo en un panel de control.
Este patrón utiliza Flask
Requisitos previos y limitaciones
Requisitos previos
Un activo Cuenta de AWS.
AWS Command Line Interface (AWS CLI), instalado y configurado en su máquina local. Para obtener más información al respecto, consulte Conceptos básicos de configuración en la AWS CLI documentación. También puede usar un entorno de desarrollo AWS Cloud9 integrado (IDE); para obtener más información al respecto, consulte el tutorial de Python para AWS Cloud9 obtener una vista previa de las aplicaciones en ejecución en el AWS Cloud9 IDE en la AWS Cloud9 documentación.
Aviso: ya no AWS Cloud9 está disponible para nuevos clientes. Los clientes actuales de AWS Cloud9 pueden seguir utilizando el servicio con normalidad. Más información
Comprensión de la estructura de aplicaciones web de Flask. Para obtener más información acerca de Flask, consulte Quickstart
en la documentación de Flask. Python 3.6 o una versión posterior, instalada y configurada. Puede instalar Python siguiendo las instrucciones de Configuración del entorno de desarrollo de Python en la AWS Elastic Beanstalk documentación.
Interfaz de la línea de comandos de Elastic Beanstalk (CLI de EB), instalada y configurada. Para obtener más información al respecto, consulte Instalación de la CLI de EB y Configuración de la CLI de EB en la documentación de Elastic Beanstalk.
Limitaciones
La aplicación Flask de este patrón está diseñada para funcionar con archivos .csv que utilizan una sola columna de texto y están limitados a 200 filas. El código de la aplicación se puede adaptar para gestionar otros tipos de archivos y volúmenes de datos.
La aplicación no tiene en cuenta la retención de datos y continúa agregando los archivos de usuario cargados hasta que se eliminan manualmente. Puede integrar la aplicación con Amazon Simple Storage Service (Amazon S3) para el almacenamiento persistente de objetos o utilizar una base de datos como Amazon DynamoDB para el almacenamiento de valores clave sin servidor.
La aplicación solo tiene en cuenta documentos en inglés. Sin embargo, puede utilizar Amazon Comprehend para detectar el idioma principal de un documento. Para obtener más información acerca de los idiomas admitidos para cada acción, consulte la Referencia de la API en la documentación de Amazon Comprehend.
Arquitectura
Arquitectura de aplicaciones Flask
Flask es una estructura ligera para desarrollar aplicaciones web en Python. Está diseñada para combinar el potente procesamiento de datos de Python con una interfaz de usuario web enriquecida. La aplicación Flask del patrón muestra cómo crear una aplicación web que permita a los usuarios cargar datos, enviar los datos a Amazon Comprehend para su inferencia y, a continuación, visualizar los resultados. La aplicación tiene la estructura siguiente:
static— Contiene todos los archivos estáticos que admiten la interfaz de usuario web (por ejemplo JavaScript, CSS e imágenes)templates– Contiene todas las páginas HTML de la aplicaciónuserData– Almacena los datos cargados por el usuarioapplication.py– El archivo de la aplicación Flaskcomprehend_helper.py– Funciones para realizar llamadas de API a Amazon Comprehendconfig.py– Archivo de configuración de la aplicaciónrequirements.txt– Las dependencias de Python que requiere la aplicación
El script application.py contiene la funcionalidad principal de la aplicación web, que consta de cuatro rutas de Flask. En el diagrama siguiente se muestran estas rutas de Flask.

/es la raíz de la aplicación y dirige a los usuarios a la páginaupload.html(almacenada en el directoriotemplates)./saveFilees una ruta que se invoca después de que un usuario cargue un archivo. Esta ruta recibe una solicitudPOSTa través de un formulario HTML, que contiene el archivo cargado por el usuario. El archivo se guarda en el directoriouserDatay la ruta redirige a los usuarios a la ruta/dashboard./dashboardenvía a los usuarios a la páginadashboard.html. En el HTML de esta página, ejecuta el JavaScript códigostatic/js/core.jsque lee los datos de la/dataruta y, a continuación, crea visualizaciones para la página./dataes una API de JSON que presenta los datos que se van a visualizar en el panel de control. Esta ruta lee los datos proporcionados por el usuario y utiliza las funciones encomprehend_helper.pypara enviar los datos del usuario a Amazon Comprehend para el análisis de opiniones y el reconocimiento de entidades nombradas (NER). La respuesta de Amazon Comprehend se formatea y se devuelve como un objeto JSON.
Arquitectura de implementación

Consideraciones sobre el diseño
Para obtener más información sobre las consideraciones de diseño de las aplicaciones implementadas con Elastic Beanstalk Nube de AWS en el, consulte la documentación. AWS Elastic Beanstalk
Pila de tecnología
Amazon Comprehend
Elastic Beanstalk
Flask
Automatización y escala
Las implementaciones de Elastic Beanstalk se configuran automáticamente con equilibradores de carga y grupos de escalado automático. Para obtener más opciones de configuración, consulte Configuración de entornos de Elastic Beanstalk en la documentación de Elastic Beanstalk.
Tools (Herramientas)
AWS Command Line Interface (AWS CLI) es una herramienta unificada que proporciona una interfaz coherente para interactuar con todas las partes de AWS.
Amazon Comprehend: utiliza el procesamiento de lenguaje natural (NLP) para extraer información sobre el contenido de los documentos, sin necesitar procesamiento especial.
AWS Elastic Beanstalkle ayuda a implementar y administrar aplicaciones rápidamente Nube de AWS sin tener que conocer la infraestructura en la que se ejecutan esas aplicaciones.
La CLI de Elastic Beanstalk (EB CLI) es una AWS Elastic Beanstalk interfaz de línea de comandos que proporciona comandos interactivos para simplificar la creación, la actualización y la supervisión de los entornos desde un repositorio local.
El marco de Flask
hace el procesamiento de datos y las llamadas a la API mediante Python y ofrece una visualización web interactiva con Plotly.
Repositorio de código
El código de este patrón está disponible en los resultados del AI/ML modelo de GitHub Visualize mediante Flask
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Clona el GitHub repositorio. | Extraiga el código de la aplicación de los resultados del AI/ML modelo de GitHub Visualize mediante Flask y
notaAsegúrese de configurar sus claves SSH con. GitHub | Desarrollador |
Instale los módulos de Python. | Una vez clonado el repositorio, se crea un nuevo directorio
| Python developer |
Pruebe la aplicación localmente. | Ejecute el siguiente comando para iniciar el servidor de Flask:
Esto devuelve información sobre el servidor en ejecución. Debería poder acceder a la aplicación si abre un navegador y visita http://localhost:5000 notaSi ejecutas la aplicación en un AWS Cloud9 IDE, debes reemplazar el
Debe revertir este cambio antes de la implementación. | Python developer |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Inicie la aplicación Elastic Beanstalk. | Para lanzar el proyecto como una aplicación de Elastic Beanstalk, ejecute el comando siguiente desde el directorio raíz de la aplicación:
importante
Ejecute el comando | Arquitecto, desarrollador |
Implemente el entorno de Elastic Beanstalk. | Ejecute el comando siguiente desde el directorio raíz de la aplicación:
nota
| Arquitecto, desarrollador |
Autorice su implementación para usar Amazon Comprehend. | Si bien es posible que su aplicación se haya implementado correctamente, también debe proporcionar a su implementación acceso a Amazon Comprehend. Adjunte la política
importante
| Desarrollador, arquitecto de seguridad |
Visite su aplicación implementada. | Una vez que la aplicación se haya implementado correctamente, puede visitarla mediante la ejecución del comando También puede ejecutar el comando | Arquitecto, desarrollador |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Autorice que Elastic Beanstalk acceda al nuevo modelo. | Asegúrese de que Elastic Beanstalk tenga los permisos de acceso necesarios para el nuevo modelo de punto de conexión. Por ejemplo, si utilizas un punto de conexión de Amazon SageMaker AI, tu implementación debe tener permiso para invocar el punto de conexión. Para obtener más información al respecto, consulte InvokeEndpointla documentación de Amazon SageMaker AI. | Desarrollador, arquitecto de seguridad |
Envíe los datos del usuario a un nuevo modelo. | Para cambiar el modelo de ML subyacente en esta aplicación, debe cambiar los archivos siguientes:
| Científico de datos |
Actualice las visualizaciones del panel de control. | Por lo general, la incorporación de un nuevo modelo de ML significa que las visualizaciones deben actualizarse para reflejar los nuevos resultados. Se han realizado estos cambios en los archivos siguientes:
| Desarrollador web |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Actualice el archivo de requisitos de su solicitud. | Antes de enviar los cambios a Elastic Beanstalk, actualice el archivo
| Python developer |
Vuelva a implementar el entorno de Elastic Beanstalk. | Para asegurarse de que los cambios en la aplicación se reflejen en la implementación de Elastic Beanstalk, navegue hasta el directorio raíz de la aplicación y ejecute el comando siguiente:
Esto envía la versión más reciente del código de la aplicación a la implementación de Elastic Beanstalk existente. | Administrador de sistemas, arquitecto |
Resolución de problemas
| Problema | Solución |
|---|---|
| Si este error se produce al ejecutar |
| Este error se produce en los registros de implementación porque Elastic Beanstalk espera que se nombre el código de Flask.
Asegúrese de reemplazar También puede aprovechar Gunicorn y un Procfile. Para obtener más información sobre este enfoque, consulte Configurar el servidor WSGI con un Procfile en la AWS Elastic Beanstalk documentación. |
| Elastic Beanstalk espera que se nombre la variable que representa la aplicación Flask.
|
| Utilice la CLI de EB para especificar qué par de claves usar o para crear un par de claves para las instancias Amazon EC2 de la implementación. Para resolver el error, ejecute
Responda |
He actualizado mi código y lo he vuelto a implementar, pero mi implementación no refleja mis cambios. | Si utilizas un repositorio de Git con tu implementación, asegúrate de añadir y confirmar los cambios antes de volver a implementarlos. |
Estás previsualizando la aplicación Flask desde un AWS Cloud9 IDE y te encuentras con errores. | Para obtener más información al respecto, consulte la documentación sobre cómo obtener una vista previa de las aplicaciones en ejecución en el AWS Cloud9 IDE. AWS Cloud9 |
Recursos relacionados
Información adicional
Uso de Amazon Comprehend para el procesamiento de lenguaje natural
Al elegir Amazon Comprehend, puede detectar entidades personalizadas en documentos de texto individuales mediante la ejecución de análisis en tiempo real o trabajos por lotes asíncronos. Amazon Comprehend también le permite entrenar modelos personalizados de reconocimiento de entidades y clasificación de texto que se pueden utilizar en tiempo real mediante la creación de un punto de conexión.
Este patrón utiliza trabajos por lotes asíncronos para detectar opiniones y entidades en un archivo de entrada que contiene varios documentos. La aplicación de ejemplo que proporciona este patrón está diseñada para que los usuarios carguen un archivo .csv que contenga una sola columna con un documento de texto por fila. El comprehend_helper.py archivo del AI/ML modelo GitHub Visualize muestra los resultados con Flask y
BatchDetectEntities
Amazon Comprehend inspecciona el texto de un lote de documentos en busca de entidades nombradas y devuelve la entidad detectada, la ubicación, el tipo de entidad y una puntuación que indica el nivel de confianza de Amazon Comprehend. Se puede enviar un máximo de 25 documentos en una llamada de API, y cada documento tiene un tamaño inferior a 5000 bytes. Puede filtrar los resultados para mostrar solo determinadas entidades en función del caso de uso. Así, por ejemplo, puede omitir el tipo de entidad ‘quantity’ y establecer una puntuación límite para la entidad detectada (por ejemplo, 0,75). Le recomendamos que explore los resultados para su caso de uso específico antes de elegir un valor umbral. Para obtener más información al respecto, consulte BatchDetectEntitiesla documentación de Amazon Comprehend.
BatchDetectSentiment
Amazon Comprehend inspecciona un lote de documentos entrantes y devuelve la opinión predominante para cada documento (POSITIVE, NEUTRAL, MIXED o NEGATIVE). Se puede enviar un máximo de 25 documentos en una llamada de API, y cada documento tiene un tamaño inferior a 5000 bytes. Analizar la opinión es sencillo y se puede elegir aquella que tiene la puntuación más alta para que aparezca en los resultados finales. Para obtener más información al respecto, consulte BatchDetectSentimentla documentación de Amazon Comprehend.
Manejo de la configuración de Flask
Los servidores Flask utilizan una serie de variables de configuración
En este patrón, la configuración se define config.py y se hereda dentro de application.py.
config.pycontiene las variables de configuración que se configuran al iniciar la aplicación. En esta aplicación, se define una variableDEBUGpara indicar a la aplicación que ejecute el servidor en modo de depuración. nota
El modo de depuración no debe utilizarse cuando se ejecuta una aplicación en un entorno de producción.
UPLOAD_FOLDERes una variable personalizada que se define para hacer referencia a ella más adelante en la aplicación e indicarle dónde deben almacenarse los datos de usuario cargados.application.pyinicia la aplicación Flask y hereda los ajustes de configuración definidos enconfig.py. Esto se lleva a cabo mediante el código siguiente:
application = Flask(__name__) application.config.from_pyfile('config.py')