Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Visualisieren Sie KI/ML-Modellergebnisse mit Flask und Elastic Beanstalk AWS
Erstellt von Chris Caudill (AWS) und Durga Sury () AWS
Umgebung: PoC oder Pilotprojekt | Technologien: Maschinelles Lernen und KI; Analytik DevOps; Web- und mobile Apps | Arbeitslast: Open Source |
AWSDienste: Amazon Comprehend; AWS Elastic Beanstalk |
Übersicht
Die Visualisierung der Ergebnisse von Diensten für künstliche Intelligenz und maschinelles Lernen (KI/ML) erfordert oft komplexe API Aufrufe, die von Ihren Entwicklern und Technikern individuell angepasst werden müssen. Dies kann ein Nachteil sein, wenn Ihre Analysten schnell einen neuen Datensatz untersuchen möchten.
Sie können die Zugänglichkeit Ihrer Dienste verbessern und eine interaktivere Form der Datenanalyse bereitstellen, indem Sie eine webbasierte Benutzeroberfläche (UI) verwenden, über die Benutzer ihre eigenen Daten hochladen und die Modellergebnisse in einem Dashboard visualisieren können.
Dieses Muster verwendet Flask
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktives AWS-Konto.
AWSBefehlszeilenschnittstelle (AWSCLI), auf Ihrem lokalen Computer installiert und konfiguriert. Weitere Informationen dazu finden Sie in der AWS CLI Dokumentation unter Grundlagen der Konfiguration. Sie können auch eine integrierte AWS Cloud9-Entwicklungsumgebung (IDE) verwenden. Weitere Informationen dazu finden Sie unter Python-Tutorial für AWS Cloud9 und Vorschau laufender Anwendungen in der AWS Cloud9 IDE in der Cloud9-Dokumentation. AWS
Hinweis: AWS Cloud9 ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS Cloud9 können den Service weiterhin wie gewohnt nutzen. Weitere Informationen
Ein Verständnis des Webanwendungs-Frameworks von Flask. Weitere Informationen zu Flask finden Sie im Schnellstart
in der Flask-Dokumentation. Python Version 3.6 oder höher, installiert und konfiguriert. Sie können Python installieren, indem Sie den Anweisungen unter Einrichten Ihrer Python-Entwicklungsumgebung in der AWS Elastic Beanstalk Beanstalk-Dokumentation folgen.
Elastic Beanstalk Command Line Interface (EBCLI), installiert und konfiguriert. Weitere Informationen dazu finden Sie in der AWS Elastic Beanstalk Beanstalk-Dokumentation unter Installieren des EB CLI CLI und Konfigurieren des EB.
Einschränkungen
Die Flask-Anwendung dieses Musters wurde für die Arbeit mit CSV-Dateien entwickelt, die eine einzige Textspalte verwenden und auf 200 Zeilen beschränkt sind. Der Anwendungscode kann an andere Dateitypen und Datenmengen angepasst werden.
Die Anwendung berücksichtigt keine Datenspeicherung und aggregiert weiterhin hochgeladene Benutzerdateien, bis sie manuell gelöscht werden. Sie können die Anwendung mit Amazon Simple Storage Service (Amazon S3) für persistenten Objektspeicher integrieren oder eine Datenbank wie Amazon DynamoDB für die serverlose Speicherung von Schlüsselwerten verwenden.
Die Anwendung berücksichtigt nur Dokumente in englischer Sprache. Sie können Amazon Comprehend jedoch verwenden, um die Hauptsprache eines Dokuments zu ermitteln. Weitere Informationen zu den unterstützten Sprachen für jede Aktion finden Sie in der APIReferenz in der Amazon Comprehend Comprehend-Dokumentation.
Eine Liste zur Fehlerbehebung, die häufig auftretende Fehler und deren Lösungen enthält, finden Sie im Abschnitt Zusätzliche Informationen.
Architektur
Die Architektur der Flask-Anwendung
Flask ist ein leichtes Framework für die Entwicklung von Webanwendungen in Python. Es wurde entwickelt, um die leistungsstarke Datenverarbeitung von Python mit einer umfangreichen Weboberfläche zu kombinieren. Die Flask-Anwendung des Musters zeigt Ihnen, wie Sie eine Webanwendung erstellen, mit der Benutzer Daten hochladen, die Daten zur Inferenz an Amazon Comprehend senden und dann die Ergebnisse visualisieren können. Die Anwendung hat die folgende Struktur:
static
— Enthält alle statischen Dateien, die die Weboberfläche unterstützen (z. B. JavaScript,CSS, und Bilder)templates
— Enthält alle HTML Seiten der AnwendunguserData
— Speichert hochgeladene Benutzerdatenapplication.py
— Die Flask-Anwendungsdateicomprehend_helper.py
— Funktionen zum API Aufrufen von Amazon Comprehendconfig.py
— Die Konfigurationsdatei der Anwendungrequirements.txt
— Die von der Anwendung benötigten Python-Abhängigkeiten
Das application.py
Skript enthält die Kernfunktionalität der Webanwendung, die aus vier Flask-Routen besteht. Das folgende Diagramm zeigt diese Flask-Routen.
/
ist das Stammverzeichnis der Anwendung und leitet Benutzer auf dieupload.html
Seite weiter (die imtemplates
Verzeichnis gespeichert ist)./saveFile
ist eine Route, die aufgerufen wird, nachdem ein Benutzer eine Datei hochgeladen hat. Diese Route empfängt einePOST
Anfrage über ein HTML Formular, das die vom Benutzer hochgeladene Datei enthält. Die Datei wird imuserData
Verzeichnis gespeichert und die Route leitet Benutzer zur/dashboard
Route weiter./dashboard
sendet Benutzer auf diedashboard.html
Seite. Auf dieser Seite wird der JavaScript Code ausgeführtHTML, der Daten aus der/data
Route liest und dann Visualisierungen für die Seite erstellt.static/js/core.js
/data
ist eine JSONAPI, die die zu visualisierenden Daten im Dashboard präsentiert. Diese Route liest die vom Benutzer bereitgestellten Daten und verwendet die Funktionen, um die Benutzerdatencomprehend_helper.py
zur Stimmungsanalyse und zur Erkennung benannter Entitäten () an Amazon Comprehend zu senden. NER Die Antwort von Amazon Comprehend ist formatiert und wird als Objekt zurückgegeben. JSON
Architektur der Bereitstellung
Weitere Informationen zu Designüberlegungen für Anwendungen, die mit Elastic Beanstalk in der AWS Cloud bereitgestellt werden, finden Sie in der AWS Elastic Beanstalk Beanstalk-Dokumentation.
Technologie-Stack
Amazon Comprehend
Elastic Beanstalk
Flask
Automatisierung und Skalierung
Elastic Beanstalk Beanstalk-Bereitstellungen werden automatisch mit Load Balancern und Auto Scaling-Gruppen eingerichtet. Weitere Konfigurationsoptionen finden Sie unter Konfiguration von Elastic Beanstalk Beanstalk-Umgebungen in der AWS Elastic Beanstalk Beanstalk-Dokumentation.
Tools
AWSCommand Line Interface (AWSCLI) ist ein einheitliches Tool, das eine konsistente Oberfläche für die Interaktion mit allen Teilen von bietet. AWS
Amazon Comprehend verwendet natürliche Sprachverarbeitung (NLP), um Erkenntnisse über den Inhalt von Dokumenten zu gewinnen, ohne dass eine spezielle Vorverarbeitung erforderlich ist.
AWSElastic Beanstalk hilft Ihnen dabei, Anwendungen schnell in der AWS Cloud bereitzustellen und zu verwalten, ohne sich mit der Infrastruktur vertraut machen zu müssen, auf der diese Anwendungen ausgeführt werden.
Elastic Beanstalk CLI (EBCLI) ist eine Befehlszeilenschnittstelle für AWS Elastic Beanstalk, die interaktive Befehle bereitstellt, um das Erstellen, Aktualisieren und Überwachen von Umgebungen aus einem lokalen Repository zu vereinfachen.
Das Flask-Framework
führt Datenverarbeitung und API Aufrufe mit Python durch und bietet interaktive Webvisualisierung mit Plotly.
Code
Der Code für dieses Muster ist im Repository GitHub Visualize AI/ML Model results using Flask and AWS Elastic
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Klonen Sie das GitHub Repository. | Rufen Sie den Anwendungscode aus den GitHub Visualize AI/ML-Modellergebnissen mithilfe des Flask- und AWS Elastic Beanstalk Beanstalk-Repositorys
Hinweis: Stellen Sie sicher, dass Sie Ihre Schlüssel mit konfigurieren. SSH GitHub | Developer |
Installieren Sie die Python-Module. | Nachdem Sie das Repository geklont haben, wird ein neues lokales
| Python-Entwickler |
Testen Sie die Anwendung lokal. | Starten Sie den Flask-Server, indem Sie den folgenden Befehl ausführen:
Dies gibt Informationen über den laufenden Server zurück. Sie sollten auf die Anwendung zugreifen können, indem Sie einen Browser öffnen und http://localhost:5000 aufrufen Hinweis: Wenn Sie die Anwendung in einer AWS Cloud9 ausführenIDE, müssen Sie den
Sie müssen diese Änderung vor der Bereitstellung rückgängig machen. | Python-Entwickler |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Starten Sie die Elastic Beanstalk Beanstalk-Anwendung. | Um Ihr Projekt als Elastic Beanstalk Beanstalk-Anwendung zu starten, führen Sie den folgenden Befehl im Stammverzeichnis Ihrer Anwendung aus:
Wichtig
Führen Sie den | Architekt, Entwickler |
Stellen Sie die Elastic Beanstalk Beanstalk-Umgebung bereit. | Führen Sie den folgenden Befehl im Stammverzeichnis der Anwendung aus:
Hinweis: | Architekt, Entwickler |
Autorisieren Sie Ihre Bereitstellung für die Verwendung von Amazon Comprehend. | Obwohl Ihre Anwendung möglicherweise erfolgreich bereitgestellt wurde, sollten Sie Ihrer Bereitstellung auch Zugriff auf Amazon Comprehend gewähren. Hängen Sie die
Wichtig: | Entwickler, Sicherheitsarchitekt |
Besuchen Sie Ihre bereitgestellte Anwendung. | Nachdem Ihre Anwendung erfolgreich bereitgestellt wurde, können Sie sie aufrufen, indem Sie den Sie können den | Architekt, Entwickler |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Autorisieren Sie Elastic Beanstalk, auf das neue Modell zuzugreifen. | Stellen Sie sicher, dass Elastic Beanstalk über die erforderlichen Zugriffsberechtigungen für Ihren neuen Modellendpunkt verfügt. Wenn Sie beispielsweise einen SageMaker Amazon-Endpunkt verwenden, benötigt Ihre Bereitstellung die Erlaubnis, den Endpunkt aufzurufen. Weitere Informationen dazu finden Sie InvokeEndpointin der SageMaker Amazon-Dokumentation. | Entwickler, Sicherheitsarchitekt |
Senden Sie die Benutzerdaten an ein neues Modell. | Um das zugrunde liegende ML-Modell in dieser Anwendung zu ändern, müssen Sie die folgenden Dateien ändern:
| Data Scientist |
Aktualisieren Sie die Dashboard-Visualisierungen. | In der Regel bedeutet die Integration eines neuen ML-Modells, dass die Visualisierungen aktualisiert werden müssen, um die neuen Ergebnisse widerzuspiegeln. Diese Änderungen werden in den folgenden Dateien vorgenommen:
| Web-Entwickler |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Aktualisieren Sie die Anforderungsdatei Ihrer Bewerbung. | Bevor Sie Änderungen an Elastic Beanstalk senden, aktualisieren Sie die
| Python-Entwickler |
Stellen Sie die Elastic Beanstalk Beanstalk-Umgebung erneut bereit. | Um sicherzustellen, dass Ihre Anwendungsänderungen in Ihrem Elastic Beanstalk-Deployment widergespiegelt werden, navigieren Sie zum Stammverzeichnis Ihrer Anwendung und führen Sie den folgenden Befehl aus:
Dadurch wird die neueste Version des Anwendungscodes an Ihr vorhandenes Elastic Beanstalk-Deployment gesendet. | Systemadministrator, Architekt |
Zugehörige Ressourcen
Zusätzliche Informationen
Liste der Problemlösungen
Im Folgenden finden Sie sechs häufig auftretende Fehler und deren Lösungen.
Fehler 1
Unable to assume role "arn:aws:iam::xxxxxxxxxx:role/aws-elasticbeanstalk-ec2-role". Verify that the role exists and is configured correctly.
Lösung: Wenn dieser Fehler bei der Ausführung auftritteb create
, erstellen Sie eine Beispielanwendung auf der Elastic Beanstalk Beanstalk-Konsole, um das Standard-Instance-Profil zu erstellen. Weitere Informationen dazu finden Sie in der Elastic Beanstalk Beanstalk-Dokumentation unter Erstellen einer Elastic Beanstalk Beanstalk-Umgebung. AWS
Fehler 2
Your WSGIPath refers to a file that does not exist.
Lösung: Dieser Fehler tritt in den Bereitstellungsprotokollen auf, weil Elastic Beanstalk erwartet, dass der Flask-Code benannt wird. application.py
Wenn Sie einen anderen Namen gewählt haben, führen Sie den aus eb config
und bearbeiten Sie ihn WSGIPath wie im folgenden Codebeispiel gezeigt:
aws:elasticbeanstalk:container:python: NumProcesses: '1' NumThreads: '15' StaticFiles: /static/=static/ WSGIPath: application.py
Stellen Sie sicher, dass Sie es application.py
durch Ihren Dateinamen ersetzen.
Sie können auch Gunicorn und ein Profil nutzen. Weitere Informationen zu diesem Ansatz finden Sie unter Konfiguration des WSGI Servers mit einer Profildatei in der AWS Elastic Beanstalk Beanstalk-Dokumentation.
Fehler 3
Target WSGI script '/opt/python/current/app/application.py' does not contain WSGI application 'application'.
Lösung: Elastic Beanstalk erwartet, dass die Variable, die Ihre Flask-Anwendung repräsentiert, benannt wird. application
Stellen Sie sicher, dass die application.py
Datei application
als Variablennamen verwendet:
application = Flask(__name__)
Fehler 4
The EB CLI cannot find your SSH key file for keyname
Lösung: Verwenden Sie EBCLI, um anzugeben, welches key pair verwendet werden soll, oder um ein key pair für die EC2 Instances Ihrer Bereitstellung zu erstellen. Um den Fehler zu beheben, führen Sie den Befehl aus eb init -i
und eine der Optionen wird Sie fragen:
Do you want to set up SSH for your instances?
Antworten Sie mitY
, um entweder ein key pair zu erstellen oder ein vorhandenes key pair anzugeben.
Fehler 5
Ich habe meinen Code aktualisiert und erneut bereitgestellt, aber meine Bereitstellung spiegelt meine Änderungen nicht wider.
Lösung: Wenn du ein Git-Repository mit deiner Bereitstellung verwendest, stelle sicher, dass du deine Änderungen hinzufügst und festschreibst, bevor du sie erneut bereitstellst.
Fehler 6
Sie sehen sich eine Vorschau der Flask-Anwendung von einer AWS Cloud9 aus an IDE und stoßen auf Fehler.
Lösung: Weitere Informationen dazu finden Sie in der Cloud9-Dokumentation unter Vorschau laufender Anwendungen IDE in der AWS AWS Cloud9.
Verarbeitung natürlicher Sprache mit Amazon Comprehend
Wenn Sie sich für Amazon Comprehend entscheiden, können Sie benutzerdefinierte Entitäten in einzelnen Textdokumenten erkennen, indem Sie Echtzeitanalysen oder asynchrone Batch-Jobs ausführen. Mit Amazon Comprehend können Sie auch benutzerdefinierte Modelle zur Erkennung von Entitäten und zur Textklassifizierung trainieren, die in Echtzeit verwendet werden können, indem Sie einen Endpunkt erstellen.
Dieses Muster verwendet asynchrone Batch-Jobs, um Stimmungen und Entitäten aus einer Eingabedatei zu erkennen, die mehrere Dokumente enthält. Die in diesem Muster enthaltene Beispielanwendung ist für Benutzer konzipiert, um eine CSV-Datei hochzuladen, die eine einzelne Spalte mit einem Textdokument pro Zeile enthält. Die comprehend_helper.py
Datei im Repository GitHub Visualize AI/ML Model results using Flask and AWS Elastic Beanstalk
BatchDetectEntities
Amazon Comprehend untersucht den Text eines Stapels von Dokumenten auf benannte Entitäten und gibt die erkannte Entität, den Standort, den Entitätstyp und eine Bewertung zurück, die das Vertrauensniveau von Amazon Comprehend angibt. In einem API Anruf können maximal 25 Dokumente gesendet werden, wobei jedes Dokument kleiner als 5.000 Byte ist. Sie können die Ergebnisse filtern, sodass je nach Anwendungsfall nur bestimmte Entitäten angezeigt werden. Sie könnten beispielsweise den ‘quantity’
Entitätstyp überspringen und einen Schwellenwert für die erkannte Entität festlegen (z. B. 0,75). Wir empfehlen Ihnen, die Ergebnisse für Ihren speziellen Anwendungsfall zu untersuchen, bevor Sie einen Schwellenwert auswählen. Weitere Informationen dazu finden Sie BatchDetectEntitiesin der Amazon Comprehend Comprehend-Dokumentation.
BatchDetectSentiment
Amazon Comprehend prüft einen Stapel eingehender Dokumente und gibt die vorherrschende Stimmung für jedes Dokument zurück (POSITIVE
,NEUTRAL
, MIXED
oder). NEGATIVE
In einem API Anruf können maximal 25 Dokumente gesendet werden, wobei jedes Dokument eine Größe von weniger als 5.000 Byte hat. Die Stimmungsanalyse ist unkompliziert, und Sie wählen die Stimmung mit der höchsten Punktzahl aus, die in den Endergebnissen angezeigt werden soll. Weitere Informationen dazu finden Sie BatchDetectSentimentin der Amazon Comprehend Comprehend-Dokumentation.
Handhabung der Flask-Konfiguration
Flask-Server verwenden eine Reihe von Konfigurationsvariablen
In diesem Muster wird die Konfiguration definiert config.py
und darin vererbtapplication.py
.
config.py
enthält die Konfigurationsvariablen, die beim Start der Anwendung eingerichtet werden. In dieser Anwendung ist eineDEBUG
Variable definiert, die der Anwendung mitteilt, den Server im Debug-Modusauszuführen. Hinweis: Der Debug-Modus sollte nicht verwendet werden, wenn eine Anwendung in einer Produktionsumgebung ausgeführt wird. UPLOAD_FOLDER
ist eine benutzerdefinierte Variable, die so definiert ist, dass sie später in der Anwendung referenziert wird und sie darüber informiert, wo hochgeladene Benutzerdaten gespeichert werden sollen.application.py
initiiert die Flask-Anwendung und erbt die in definierten Konfigurationseinstellungen.config.py
Dies wird durch den folgenden Code ausgeführt:
application = Flask(__name__) application.config.from_pyfile('config.py')