Die Entwicklung von Webschnittstellen zur Interaktion mit einem Modell für maschinelles Lernen (ML) ist eine mühsame Aufgabe. Mit Stromlitist die Entwicklung von Demoanwendungen für Ihre ML-Lösung einfach. Stromlit ist eine Open-Source-Python-Bibliothek, die das Erstellen und Freigeben von Web-Apps für ML und Data Science vereinfacht. Als Data Scientist möchten Sie vielleicht Ihre Ergebnisse für ein Dataset präsentieren oder ein trainiertes Modell bereitstellen. Streamlit-Anwendungen sind nützlich, um Ihrem Team den Fortschritt eines Projekts zu präsentieren, Erkenntnisse zu gewinnen und mit Ihren Managern zu teilen und sogar Feedback von Kunden zu erhalten.
Mit der integrierten Entwicklungsumgebung (IDE) von Amazon SageMaker-Studio mit Jupyter-Lab 3können wir Streamlit-Web-Apps für Entwicklungszwecke in derselben Umgebung erstellen, ausführen und bereitstellen. In diesem Beitrag wird beschrieben, wie Sie Streamlit-Apps in Studio auf sichere und reproduzierbare Weise ohne zeitaufwändige Front-End-Entwicklung erstellen und hosten können. Als Beispiel verwenden wir eine benutzerdefinierte Amazon-Anerkennung Demo, die ein hochgeladenes Bild kommentiert und beschriftet. Dies dient als Ausgangspunkt und kann verallgemeinert werden, um jedes benutzerdefinierte ML-Modell zu demonstrieren. Den Code für diesen Blog finden Sie hier GitHub-Repository.
Lösungsüberblick
Das Folgende ist das Architekturdiagramm unserer Lösung.
Ein Benutzer greift zuerst über den Browser auf Studio zu. Der dem Benutzerprofil zugeordnete Jupyter-Server wird in der Studio Amazon Elastic Compute Cloud (Amazon EC2)-Instanz ausgeführt. Innerhalb der Studio EC2-Instanz gibt es den Beispielcode und die Liste der Abhängigkeiten. Der Benutzer kann die Streamlit-App app.py im Systemterminal ausführen. Studio führt die JupyterLab-Benutzeroberfläche in einem Jupyter-Server aus, der von den Notebook-Kernels entkoppelt ist. Der Jupyter-Server wird mit einem Proxy geliefert und ermöglicht uns den Zugriff auf unsere Streamlit-App. Sobald die App ausgeführt wird, kann der Benutzer eine separate Sitzung über den AWS Jupyter Proxy initiieren, indem er die URL anpasst.
Aus Sicherheitsaspekten wird der AWS Jupyter Proxy um die AWS-Authentifizierung erweitert. Solange ein Benutzer Zugriff auf das AWS-Konto, die Studio-Domänen-ID und das Benutzerprofil hat, kann er auf den Link zugreifen.
Erstellen Sie Studio mit JupyterLab 3.0
Studio mit JupyterLab 3 muss installiert sein, damit diese Lösung funktioniert. Ältere Versionen unterstützen möglicherweise nicht die in diesem Beitrag beschriebenen Funktionen. Weitere Informationen finden Sie unter Amazon SageMaker Studio und SageMaker Notebook Instance werden jetzt mit JupyterLab 3-Notebooks geliefert, um die Entwicklerproduktivität zu steigern. Standardmäßig wird Studio mit JupyterLab 3 geliefert. Sie sollten die Version überprüfen und ändern, wenn Sie eine ältere Version verwenden. Weitere Informationen finden Sie unter JupyterLab-Versionierung.
Sie können Studio mithilfe von einrichten AWS Cloud-Entwicklungskit (AWS-CDK); Weitere Informationen finden Sie unter Richten Sie Amazon SageMaker Studio mit Jupyter Lab 3 mithilfe des AWS CDK ein. Alternativ können Sie die Domäneneinstellungen über die SageMaker-Konsole ändern. Führen Sie die folgenden Schritte aus:
- Wählen Sie in der SageMaker-Konsole Domains im Navigationsbereich.
- Wählen Sie Ihre Domain aus und wählen Sie Bearbeiten.
- Aussichten für Standardversion von Jupyter Lab, vergewissern Sie sich, dass die Version auf eingestellt ist Jupyter-Lab 3.0.
(Optional) Erstellen Sie einen gemeinsamen Bereich
Wir können die SageMaker-Konsole oder die AWS CLI verwenden, um Unterstützung für gemeinsam genutzte Bereiche zu einer vorhandenen Domäne hinzuzufügen, indem wir die Schritte in der Dokumentation oder in diesem Blog befolgen. Das Erstellen eines gemeinsamen Bereichs in AWS hat die folgenden Vorteile:
- Zusammenarbeit: Ein gemeinsam genutzter Bereich ermöglicht es mehreren Benutzern oder Teams, an einem Projekt oder einer Reihe von Ressourcen zusammenzuarbeiten, ohne Daten oder Infrastruktur duplizieren zu müssen.
- Kosteneinsparungen: Anstatt dass jeder Benutzer oder jedes Team seine eigenen Ressourcen erstellt und verwaltet, kann ein gemeinsam genutzter Bereich kostengünstiger sein, da Ressourcen gepoolt und von mehreren Benutzern gemeinsam genutzt werden können.
- Vereinfachte Verwaltung: Mit einem gemeinsam genutzten Bereich können Administratoren Ressourcen zentral verwalten, anstatt mehrere Instanzen derselben Ressourcen für jeden Benutzer oder jedes Team verwalten zu müssen.
- Verbesserte Skalierbarkeit: Ein gemeinsam genutzter Bereich kann einfacher vergrößert oder verkleinert werden, um sich ändernden Anforderungen gerecht zu werden, da Ressourcen dynamisch zugewiesen werden können, um die Anforderungen verschiedener Benutzer oder Teams zu erfüllen.
- Erhöhte Sicherheit: Durch die Zentralisierung von Ressourcen in einem gemeinsam genutzten Bereich kann die Sicherheit verbessert werden, da Zugriffskontrollen und Überwachung einfacher und konsistenter angewendet werden können.
Installieren Sie Abhängigkeiten und klonen Sie das Beispiel in Studio
Als nächstes starten wir Studio und öffnen das Systemterminal. Wir verwenden die SageMaker-IDE, um unser Beispiel zu klonen, und das Systemterminal, um unsere App zu starten. Den Code für diesen Blog finden Sie hier GitHub-Repository. Wir beginnen mit dem Klonen des Repositorys:
Als nächstes öffnen wir das Systemterminal.
Installieren Sie nach dem Klonen im Systemterminal Abhängigkeiten, um unseren Beispielcode auszuführen, indem Sie den folgenden Befehl ausführen. Dadurch werden zuerst die Abhängigkeiten per Pip installiert, indem sie ausgeführt werden pip install --no-cache-dir -r requirements.txt
dem „Vermischten Geschmack“. Seine no-cache-dir
Flag deaktiviert den Cache. Caching hilft beim Speichern der Installationsdateien (.whl
) der Module, die Sie über pip installieren. Es speichert auch die Quelldateien (.tar.gz
), um ein erneutes Herunterladen zu vermeiden, wenn sie noch nicht abgelaufen sind. Wenn auf unserer Festplatte kein Platz vorhanden ist oder wir ein Docker-Image so klein wie möglich halten möchten, können wir dieses Flag verwenden, damit der Befehl mit minimalem Speicherverbrauch vollständig ausgeführt wird. Als nächstes installiert das Skript Pakete iproute
und jq
, die im folgenden Schritt verwendet wird.sh setup.sh
Führen Sie die Streamlit-Demo aus und erstellen Sie einen teilbaren Link
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob alle Abhängigkeiten erfolgreich installiert wurden, und um die Amazon Rekognition-Demo anzuzeigen:
Die Portnummer, auf der die App gehostet wird, wird angezeigt.
Beachten Sie, dass es während der Entwicklung hilfreich sein kann, das Skript automatisch erneut auszuführen, wenn app.py
wird auf der Festplatte geändert. Dazu können wir die runOnSave ändern Konfigurationsmöglichkeit durch Hinzufügen der --server.runOnSave true
Flagge zu unserem Befehl:
Der folgende Screenshot zeigt ein Beispiel dafür, was auf dem Terminal angezeigt werden soll.
Aus dem obigen Beispiel sehen wir die Portnummer, die Domänen-ID und die Studio-URL, auf der wir unsere App ausführen. Schließlich können wir die URL sehen, die wir verwenden müssen, um auf unsere Streamlit-App zuzugreifen. Dieses Skript ändert die Studio-URL und ersetzt lab?
mit proxy/[PORT NUMBER]/
. Die Rekognition Object Detection Demo wird angezeigt, wie im folgenden Screenshot gezeigt.
Jetzt, da die Streamlit-App funktioniert, können wir diese URL mit jedem teilen, der Zugriff auf diese Studio-Domain-ID und dieses Benutzerprofil hat. Um das Teilen dieser Demos zu vereinfachen, können wir den Status überprüfen und alle laufenden Streamlit-Apps auflisten, indem wir den folgenden Befehl ausführen: sh status.sh
Wir können Lebenszyklusskripte oder gemeinsam genutzte Bereiche verwenden, um diese Arbeit zu erweitern. Anstatt die Shell-Skripte manuell auszuführen und Abhängigkeiten zu installieren, verwenden Sie Lebenszyklus-Skripte um diesen Prozess zu rationalisieren. Um diese App mit einem Team zu entwickeln und zu erweitern und Dashboards mit Kollegen zu teilen, verwenden Sie geteilte Räume. Durch das Erstellen gemeinsam genutzter Bereiche in Studio können Benutzer im gemeinsam genutzten Bereich zusammenarbeiten, um eine Streamlit-App in Echtzeit zu entwickeln. Alle Ressourcen in einem gemeinsam genutzten Bereich werden gefiltert und gekennzeichnet, was es einfacher macht, sich auf ML-Projekte zu konzentrieren und Kosten zu verwalten. Verwenden Sie den folgenden Code, um Ihre eigenen Anwendungen in Studio zu erstellen.
Aufräumen
Sobald wir mit der Verwendung der App fertig sind, möchten wir die Listening-Ports freigeben. Um alle Prozesse streamlit laufen zu lassen und sie für die Verwendung freizugeben, können wir unser Bereinigungsskript ausführen: sh cleanup.sh
Zusammenfassung
In diesem Beitrag haben wir ein End-to-End-Beispiel für das Hosten einer Streamlit-Demo für eine Objekterkennungsaufgabe mit Amazon Rekognition gezeigt. Wir haben die Beweggründe für das Erstellen schneller Webanwendungen, Sicherheitsüberlegungen und die erforderliche Einrichtung zum Ausführen unserer eigenen Streamlit-App in Studio detailliert beschrieben. Schließlich haben wir das URL-Muster in unserem Webbrowser geändert, um eine separate Sitzung über den AWS Jupyter Proxy zu initiieren.
Mit dieser Demo können Sie beliebige Bilder hochladen und die Ausgaben von Amazon Rekognition visualisieren. Die Ergebnisse werden ebenfalls verarbeitet, und Sie können eine CSV-Datei mit allen Begrenzungsrahmen über die App herunterladen. Sie können diese Arbeit erweitern, um Ihr eigenes Dataset zu kommentieren und zu beschriften, oder den Code ändern, um Ihr benutzerdefiniertes Modell zu präsentieren!
Über die Autoren
Dipika Khullar ist ein ML-Ingenieur in der Amazon ML-Lösungslabor. Sie hilft Kunden bei der Integration von ML-Lösungen zur Lösung ihrer Geschäftsprobleme. Zuletzt hat sie Trainings- und Inferenz-Pipelines für Medienkunden und Vorhersagemodelle für das Marketing entwickelt.
Marcelo Aberle ist ein ML-Ingenieur in der AWS-KI-Organisation. Er leitet die MLOps-Bemühungen bei der Amazon ML-Lösungslabor, unterstützt Kunden bei der Entwicklung und Implementierung skalierbarer ML-Systeme. Seine Mission ist es, Kunden auf ihrer Enterprise-ML-Reise zu begleiten und ihren ML-Weg zur Produktion zu beschleunigen.
Jasch Schah ist Wissenschaftsmanagerin in der Amazon ML-Lösungslabor. Er und sein Team aus angewandten Wissenschaftlern und ML-Ingenieuren arbeiten an einer Reihe von ML-Anwendungsfällen aus den Bereichen Gesundheitswesen, Sport, Automobil und Fertigung.
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- Platoblockkette. Web3-Metaverse-Intelligenz. Wissen verstärkt. Hier zugreifen.
- Quelle: https://aws.amazon.com/blogs/machine-learning/build-streamlit-apps-in-amazon-sagemaker-studio/
- :Ist
- $UP
- 100
- 7
- a
- oben
- beschleunigen
- Zugang
- Konto
- über
- Administratoren
- AI
- Alle
- zugeordnet
- erlaubt
- Amazon
- Amazon EC2
- Amazon-Anerkennung
- Amazon Sage Maker
- Amazon SageMaker-Studio
- und
- jemand
- App
- Anwendungen
- angewandt
- Apps
- Architektur
- SIND
- AS
- Aussehen
- damit verbundenen
- At
- Authentifizierung
- Im Prinzip so, wie Sie es von Google Maps kennen.
- Automobilindustrie
- AWS
- BE
- Vorteile
- Blog
- Auftrieb
- Boxen
- Browser
- bauen
- Building
- erbaut
- Geschäft
- by
- Cache-Speicher
- CAN
- Fälle
- Übernehmen
- Ändern
- aus der Ferne überprüfen
- Auswählen
- Cloud
- Code
- zusammenarbeiten
- wie die
- abschließen
- Abschluss
- Berechnen
- Überlegungen
- Konsul (Console)
- Steuerung
- kostengünstiger
- Kosten
- erstellen
- Erstellen
- Original
- Kunden
- technische Daten
- Datenwissenschaft
- Datenwissenschaftler
- Standard
- Anforderungen
- Demos
- einsetzen
- Design
- detailliert
- Entdeckung
- entwickeln
- Entwickler:in / Unternehmen
- Entwicklung
- Entwicklung
- anders
- Docker
- Domain
- nach unten
- herunterladen
- Antrieb
- dynamisch
- jeder
- einfacher
- leicht
- Bemühungen
- End-to-End
- Ingenieur
- Ingenieure
- Unternehmen
- Arbeitsumfeld
- Sogar
- Beispiel
- vorhandenen
- existiert
- erweitern
- Eigenschaften
- Feedback
- Reichen Sie das
- Mappen
- Endlich
- Vorname
- Setzen Sie mit Achtsamkeit
- Folgende
- Aussichten für
- gefunden
- Frei
- für
- gewinnen
- bekommen
- bekommen
- Guide
- hart
- Festplatte
- Haben
- mit
- Gesundheitswesen
- hilfreich
- Unternehmen
- hilft
- Gastgeber
- Hosting
- Ultraschall
- Hilfe
- HTML
- HTTPS
- ID
- Image
- implementieren
- verbessert
- in
- Information
- Infrastruktur
- initiieren
- Einblicke
- installieren
- installiert
- Installieren
- Instanz
- beantragen müssen
- integrieren
- integriert
- interagieren
- Schnittstellen
- IT
- Reise
- jpg
- Behalten
- Labor
- Label
- starten
- führenden
- lernen
- Bibliothek
- Lebenszyklus
- LINK
- Liste
- Hören
- Lang
- Maschine
- Maschinelles Lernen
- um
- MACHT
- Making
- verwalten
- Management
- Manager
- Manager
- flächendeckende Gesundheitsprogramme
- Weise
- manuell
- Herstellung
- Marketing
- Kann..
- Medien
- Triff
- Memory
- könnte
- minimal
- Ziel
- ML
- MLOps
- Modell
- für
- geändert
- ändern
- Module
- Überwachung
- mehr
- vor allem warme
- Motivationen
- mehrere
- Navigation
- Need
- Bedürfnisse
- weiter
- Notizbuch
- Anzahl
- Objekt
- Objekterkennung
- of
- on
- XNUMXh geöffnet
- Open-Source-
- Organisation
- skizzierte
- Umrissen
- besitzen
- Pakete
- Brot
- Weg
- Schnittmuster
- Plato
- Datenintelligenz von Plato
- PlatoData
- Points
- möglich
- Post
- Probleme
- Prozessdefinierung
- Verarbeitet
- anpassen
- Produktion
- Profil
- Fortschritt
- Projekt
- Projekte
- Stellvertreter
- Zwecke
- Python
- Direkt
- Angebot
- lieber
- echt
- Echtzeit
- kürzlich
- Quelle
- falls angefordert
- Voraussetzungen:
- Downloads
- Die Ergebnisse
- Führen Sie
- Laufen
- sagemaker
- gleich
- Ersparnisse
- Skalierbarkeit
- skalierbaren
- Wissenschaft
- Wissenschaftler
- Wissenschaftler
- Skripte
- Verbindung
- Sicherheitdienst
- getrennte
- brauchen
- Sitzung
- kompensieren
- Einstellungen
- Setup
- Teilen
- von Locals geführtes
- ,,teilen"
- Schale
- sollte
- Vitrine
- gezeigt
- Konzerte
- klein
- So
- Lösung
- Lösungen
- LÖSEN
- Quelle
- Raumfahrt
- Räume
- Sports
- Anfang
- Beginnen Sie
- Status
- Schritt
- Shritte
- speichern
- Läden
- rationalisieren
- Studio Adressen
- Erfolgreich
- Support
- System
- Systeme und Techniken
- Aufgabe
- Team
- Teams
- Terminal
- zur Verbesserung der Gesundheitsgerechtigkeit
- Das
- Die Quelle
- ihr
- Sie
- Diese
- Durch
- Zeit
- Zeitaufwendig
- zu
- trainiert
- Ausbildung
- ui
- hochgeladen
- URL
- us
- Anwendungsbereich
- -
- Mitglied
- Nutzer
- überprüfen
- Version
- Anzeigen
- Netz
- Web Applikationen
- Web-Browser
- Was
- welche
- während
- WHO
- werden wir
- mit
- .
- ohne
- Arbeiten
- arbeiten,
- Du
- Ihr
- Zephyrnet