Für Datenwissenschaftler stellt die Verlagerung von Machine-Learning-Modellen (ML) vom Proof-of-Concept in die Produktion oft eine große Herausforderung dar. Eine der größten Herausforderungen kann darin bestehen, ein leistungsstarkes, lokal trainiertes Modell in der Cloud bereitzustellen, um daraus Rückschlüsse zu ziehen und in anderen Anwendungen zu verwenden. Die Verwaltung des Prozesses kann mühsam sein, aber mit dem richtigen Tool können Sie den erforderlichen Aufwand deutlich reduzieren.
Amazon SageMaker-Schlussfolgerung, das im April 2022 allgemein verfügbar gemacht wurde, erleichtert Ihnen die Bereitstellung von ML-Modellen in der Produktion, um Vorhersagen in großem Maßstab zu treffen, und bietet eine breite Auswahl an ML-Infrastruktur- und Modellbereitstellungsoptionen, um alle Arten von ML-Inferenzanforderungen zu erfüllen. Sie können verwenden SageMaker Serverless Inference-Endpunkte für Arbeitslasten, die zwischen Verkehrsschüben Leerlaufzeiten aufweisen und Kaltstarts tolerieren können. Die Endpunkte skalieren automatisch basierend auf dem Datenverkehr und machen die undifferenzierte schwere Arbeit bei der Auswahl und Verwaltung von Servern überflüssig. Darüber hinaus können Sie verwenden AWS Lambda direkt, um Ihre Modelle verfügbar zu machen und Ihre ML-Anwendungen mithilfe Ihres bevorzugten Open-Source-Frameworks bereitzustellen, das sich als flexibler und kostengünstiger erweisen kann.
FastAPI ist ein modernes, leistungsstarkes Webframework zum Erstellen von APIs mit Python. Es zeichnet sich aus, wenn es um die Entwicklung serverloser Anwendungen mit RESTful-Microservices und Anwendungsfällen geht, die ML-Inferenz in großem Maßstab über mehrere Branchen hinweg erfordern. Seine Benutzerfreundlichkeit und integrierte Funktionen wie die automatische API-Dokumentation machen es zu einer beliebten Wahl unter ML-Ingenieuren für die Bereitstellung leistungsstarker Inferenz-APIs. Sie können Ihre Routen mithilfe der sofort einsatzbereiten Funktionen von FastAPI definieren und organisieren, um die wachsende Geschäftslogik nach Bedarf zu skalieren und zu verwalten, sie lokal zu testen und auf Lambda zu hosten und sie dann über ein einziges API-Gateway verfügbar zu machen, was Ihnen dies ermöglicht Bringen Sie ein Open-Source-Web-Framework zu Lambda, ohne dass Sie Ihre Codes aufwändig bearbeiten oder umgestalten müssen.
In diesem Beitrag erfahren Sie, wie Sie serverlose ML-Inferenz einfach bereitstellen und ausführen können, indem Sie Ihr ML-Modell mithilfe von FastAPI, Docker, Lambda usw. als Endpunkt verfügbar machen Amazon API-Gateway. Wir zeigen Ihnen auch, wie Sie die Bereitstellung mit dem automatisieren AWS Cloud-Entwicklungskit (AWS-CDK).
Lösungsüberblick
Das folgende Diagramm zeigt die Architektur der Lösung, die wir in diesem Beitrag bereitstellen.
Voraussetzungen:
Folgende Voraussetzungen müssen Sie mitbringen:
- Python3 installiert, zusammen mit
virtualenv
zum Erstellen und Verwalten virtueller Umgebungen in Python - aws-cdk v2 auf Ihrem System installiert, um die AWS CDK CLI nutzen zu können
- Docker ist auf Ihrem lokalen Computer installiert und wird ausgeführt
Testen Sie, ob die gesamte erforderliche Software installiert ist:
- Das AWS-Befehlszeilenschnittstelle (AWS CLI) ist erforderlich. Melden Sie sich bei Ihrem Konto an und wählen Sie die Region aus, in der Sie die Lösung bereitstellen möchten.
- Verwenden Sie den folgenden Code, um Ihre Python-Version zu überprüfen:
- Überprüfen Sie, ob
virtualenv
wird zum Erstellen und Verwalten virtueller Umgebungen in Python installiert. Streng genommen ist dies keine zwingende Anforderung, aber sie wird Ihnen das Leben erleichtern und Ihnen dabei helfen, diesem Beitrag leichter zu folgen. Verwenden Sie den folgenden Code: - Überprüfen Sie, ob cdk installiert ist. Dies wird zur Bereitstellung unserer Lösung verwendet.
- Überprüfen Sie, ob Docker installiert ist. Unsere Lösung macht Ihr Modell über ein Docker-Image für Lambda zugänglich. Um dieses Image lokal zu erstellen, benötigen wir Docker.
- Stellen Sie sicher, dass Docker mit dem folgenden Code läuft:
So strukturieren Sie Ihr FastAPI-Projekt mit AWS CDK
Wir verwenden die folgende Verzeichnisstruktur für unser Projekt (wobei wir einige Standard-AWS-CDK-Codes ignorieren, die im Kontext dieses Beitrags unerheblich sind):
Das Verzeichnis folgt dem Empfohlene Struktur von AWS CDK-Projekten für Python.
Der wichtigste Teil dieses Repositorys ist der fastapi_model_serving
Verzeichnis. Es enthält den Code, der den AWS CDK-Stack und die Ressourcen definiert, die für die Modellbereitstellung verwendet werden.
Das fastapi_model_serving
Verzeichnis enthält die model_endpoint
Unterverzeichnis, das alle notwendigen Assets enthält, die unseren serverlosen Endpunkt bilden, nämlich die Docker-Datei zum Erstellen des Docker-Images, das Lambda verwenden wird, den Lambda-Funktionscode, der FastAPI verwendet, um Inferenzanfragen zu verarbeiten und sie an den richtigen Endpunkt weiterzuleiten, und das Modell Artefakte des Modells, das wir bereitstellen möchten. model_endpoint
enthält außerdem Folgendes:
Docker
– Dieses Unterverzeichnis enthält Folgendes:Dockerfile
– Dies wird verwendet, um das Image für die Lambda-Funktion mit allen Artefakten (Lambda-Funktionscode, Modellartefakte usw.) an der richtigen Stelle zu erstellen, damit sie problemlos verwendet werden können.serving.api.tar.gz
– Dies ist ein Tarball, der alle Assets aus dem Laufzeitordner enthält, die zum Erstellen des Docker-Images erforderlich sind. Wir besprechen, wie man das erstellt.tar.gz
Datei später in diesem Beitrag.runtime
– Dieses Unterverzeichnis enthält Folgendes:serving_api
– Der Code für die Lambda-Funktion und ihre Abhängigkeiten, die in der Datei „requirements.txt“ angegeben sind.custom_lambda_utils
– Dazu gehört ein Inferenzskript, das die notwendigen Modellartefakte lädt, damit das Modell an den übergeben werden kannserving_api
Dadurch wird es dann als Endpunkt verfügbar gemacht.
Darüber hinaus verfügen wir über das Vorlagenverzeichnis, das eine Vorlage für Ordnerstrukturen und Dateien bereitstellt, in der Sie Ihre benutzerdefinierten Codes und APIs gemäß dem zuvor durchgegangenen Beispiel definieren können. Das Vorlagenverzeichnis enthält Dummy-Code, den Sie zum Erstellen neuer Lambda-Funktionen verwenden können:
dummy
– Enthält den Code, der die Struktur einer gewöhnlichen Lambda-Funktion mithilfe der Python-Laufzeit implementiertapi
– Enthält den Code, der eine Lambda-Funktion implementiert, die einen FastAPI-Endpunkt um ein vorhandenes API-Gateway wickelt
Stellen Sie die Lösung bereit
Standardmäßig wird der Code innerhalb der Region eu-west-1 bereitgestellt. Wenn Sie die Region ändern möchten, können Sie die Kontextvariable DEPLOYMENT_REGION in ändern cdk.json
Datei.
Beachten Sie jedoch, dass die Lösung versucht, eine Lambda-Funktion auf der arm64-Architektur bereitzustellen und dass diese Funktion möglicherweise nicht in allen Regionen verfügbar ist. In diesem Fall müssen Sie den Architekturparameter im ändern fastapi_model_serving_stack.py
Datei sowie die erste Zeile der Docker-Datei im Docker-Verzeichnis, um diese Lösung auf der x86-Architektur zu hosten.
Führen Sie die folgenden Schritte aus, um die Lösung bereitzustellen:
- Führen Sie den folgenden Befehl aus, um das GitHub-Repository zu klonen:
git clone https://github.com/aws-samples/lambda-serverless-inference-fastapi
Da wir zeigen möchten, dass die Lösung mit Modellartefakten funktionieren kann, die Sie lokal trainieren, enthalten wir ein Beispielmodellartefakt eines vorab trainierten Modells DestillierBERT Modell auf dem Hugging Face-Modellhub für eine Frage-Antwort-Aufgabe imserving_api.tar.gz
Datei. Die Downloadzeit kann etwa 3–5 Minuten dauern. Nun richten wir die Umgebung ein. - Laden Sie das vorab trainierte Modell herunter, das vom Hugging Face-Modell-Hub bereitgestellt wird
./model_endpoint/runtime/serving_api/custom_lambda_utils/model_artifacts
Verzeichnis. Außerdem wird eine virtuelle Umgebung erstellt und alle erforderlichen Abhängigkeiten installiert. Sie müssen diesen Befehl nur einmal ausführen:make prep
. Dieser Befehl kann etwa 5 Minuten dauern (abhängig von Ihrer Internetbandbreite), da die Modellartefakte heruntergeladen werden müssen. - Verpacken Sie die Modellartefakte in einem
.tar.gz
Archiv, das im Docker-Image verwendet wird, das im AWS CDK-Stack erstellt wird. Sie müssen diesen Code jedes Mal ausführen, wenn Sie Änderungen an den Modellartefakten oder der API selbst vornehmen, damit immer die aktuellste Version Ihres Bereitstellungsendpunkts gepackt ist:make package_model
. Die Artefakte sind alle vorhanden. Jetzt können wir den AWS CDK-Stack in Ihrem AWS-Konto bereitstellen. - Führen Sie cdk bootstrap aus, wenn Sie zum ersten Mal eine AWS CDK-App in einer Umgebung bereitstellen (Kombination aus Konto und Region):
Dieser Stapel enthält Ressourcen, die für den Betrieb des Toolkits benötigt werden. Der Stack umfasst beispielsweise einen Amazon Simple Storage Service (Amazon S3)-Bucket, der zum Speichern von Vorlagen und Assets während des Bereitstellungsprozesses verwendet wird.
Da wir in dieser AWS CDK-Bereitstellung Docker-Images lokal erstellen, müssen wir sicherstellen, dass der Docker-Daemon ausgeführt wird, bevor wir diesen Stack über die AWS CDK-CLI bereitstellen können.
- Um zu überprüfen, ob der Docker-Daemon auf Ihrem System ausgeführt wird, verwenden Sie den folgenden Befehl:
Wenn Sie keine Fehlermeldung erhalten, sollten Sie bereit sein, die Lösung bereitzustellen.
- Stellen Sie die Lösung mit dem folgenden Befehl bereit:
Dieser Schritt kann aufgrund der Erstellung und Übertragung des Docker-Images etwa 5 bis 10 Minuten dauern.
Problemlösung
Wenn Sie ein Mac-Benutzer sind, kann es beim Anmelden zu einem Fehler kommen Amazon Elastic Container-Registrierung (Amazon ECR) mit dem Docker-Login, z Error saving credentials ... not implemented
. Zum Beispiel:
Bevor Sie Lambda zusätzlich zu Docker-Containern im AWS CDK verwenden können, müssen Sie möglicherweise das ändern ~/docker/config.json
Datei. Genauer gesagt müssen Sie möglicherweise den credsStore-Parameter in ändern ~/.docker/config.json
zu osxkeychain. Dadurch werden Amazon ECR-Anmeldeprobleme auf einem Mac behoben.
Führen Sie eine Echtzeit-Inferenz durch
Nach ihrem AWS CloudFormation Nachdem der Stack erfolgreich bereitgestellt wurde, gehen Sie zu Ausgänge Klicken Sie auf die Registerkarte für Ihren Stack in der AWS CloudFormation-Konsole und öffnen Sie die Endpunkt-URL. Jetzt ist unser Modell über die Endpunkt-URL zugänglich und wir können Echtzeitinferenzen ausführen.
Navigieren Sie zur URL, um zu sehen, ob die Nachricht „Hallo Welt“ angezeigt wird, und fügen Sie sie hinzu /docs
Gehen Sie zur Adresse, um zu sehen, ob Sie die interaktive Swagger-UI-Seite erfolgreich sehen können. Da es möglicherweise etwas Kaltstartzeit gibt, müssen Sie möglicherweise ein paar Mal warten oder eine Aktualisierung durchführen.
Nachdem Sie sich auf der Landingpage der FastAPI-Swagger-UI-Seite angemeldet haben, können Sie sie über das Root ausführen /
oder über /question
.
Aus /
, könnten Sie die API ausführen und die „Hallo Welt“-Nachricht erhalten.
Aus /question
, könnten Sie die API ausführen und ML-Inferenz auf dem Modell ausführen, das wir für einen Frage-Antwort-Fall bereitgestellt haben. Wir verwenden zum Beispiel die Frage: „Welche Farbe hat mein Auto jetzt?“ und der Kontext ist: Mein Auto war früher blau, aber ich habe es rot lackiert.
Wenn Sie wählen AusführenBasierend auf dem gegebenen Kontext beantwortet das Modell die Frage mit einer Antwort, wie im folgenden Screenshot gezeigt.
Im Antworttext können Sie die Antwort mit dem Konfidenzwert des Modells sehen. Sie können auch mit anderen Beispielen experimentieren oder die API in Ihre bestehende Anwendung einbetten.
Alternativ können Sie die Inferenz auch per Code ausführen. Hier ist ein in Python geschriebenes Beispiel unter Verwendung von requests
Bibliothek:
Der Code gibt eine Zeichenfolge ähnlich der folgenden aus:
Wenn Sie mehr über die Bereitstellung generativer KI und großer Sprachmodelle auf AWS erfahren möchten, schauen Sie hier vorbei:
- Stellen Sie serverlose generative KI auf AWS Lambda mit OpenLLaMa bereit
- Stellen Sie große Sprachmodelle auf AWS Inferentia2 mit großen Modell-Inferenz-Containern bereit
Aufräumen
Führen Sie im Stammverzeichnis Ihres Repositorys den folgenden Code aus, um Ihre Ressourcen zu bereinigen:
Zusammenfassung
In diesem Beitrag haben wir vorgestellt, wie Sie Lambda verwenden können, um Ihr trainiertes ML-Modell mithilfe Ihres bevorzugten Webanwendungs-Frameworks wie FastAPI bereitzustellen. Wir haben ein detailliertes Code-Repository bereitgestellt, das Sie bereitstellen können, und Sie behalten die Flexibilität, zu den trainierten Modellartefakten zu wechseln, die Sie verarbeiten. Die Leistung kann davon abhängen, wie Sie das Modell implementieren und bereitstellen.
Sie können es gerne selbst ausprobieren und wir freuen uns über Ihr Feedback!
Über die Autoren
Tingyi Li ist ein Enterprise Solutions Architect von AWS mit Sitz in Stockholm, Schweden, der die nordischen Kunden unterstützt. Es macht ihr Spaß, Kunden bei der Architektur, dem Design und der Entwicklung von Cloud-optimierten Infrastrukturlösungen zu unterstützen. Sie ist auf KI und maschinelles Lernen spezialisiert und daran interessiert, Kunden mit Intelligenz in ihren KI/ML-Anwendungen auszustatten. In ihrer Freizeit ist sie nebenberuflich als Illustratorin tätig, schreibt Romane und spielt Klavier.
Demir Catovic ist ein Machine Learning Engineer von AWS mit Sitz in Zürich, Schweiz. Er arbeitet mit Kunden zusammen und hilft ihnen bei der Implementierung skalierbarer und voll funktionsfähiger ML-Anwendungen. Er ist begeistert von der Entwicklung und Produktion von Anwendungen für maschinelles Lernen für Kunden und ist stets daran interessiert, neue Trends und Spitzentechnologien in der KI/ML-Welt zu erkunden.
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- PlatoData.Network Vertikale generative KI. Motiviere dich selbst. Hier zugreifen.
- PlatoAiStream. Web3-Intelligenz. Wissen verstärkt. Hier zugreifen.
- PlatoESG. Automobil / Elektrofahrzeuge, Kohlenstoff, CleanTech, Energie, Umwelt, Solar, Abfallwirtschaft. Hier zugreifen.
- BlockOffsets. Modernisierung des Eigentums an Umweltkompensationen. Hier zugreifen.
- Quelle: https://aws.amazon.com/blogs/machine-learning/deploy-a-serverless-ml-inference-endpoint-of-large-language-models-using-fastapi-aws-lambda-and-aws-cdk/
- :Ist
- :nicht
- :Wo
- $UP
- 1
- 10
- 100
- 13
- 2022
- 7
- 9
- a
- Fähig
- LiveBuzz
- zugänglich
- Konto
- über
- hinzufügen
- zusätzlich
- Adresse
- AI
- AI / ML
- Alle
- erlaubt
- entlang
- ebenfalls
- immer
- Amazon
- Amazon Web Services
- unter
- an
- und
- beantworten
- jedem
- Bienen
- APIs
- App
- Anwendung
- Anwendungen
- April
- Architektur
- Archiv
- SIND
- um
- AS
- Details
- At
- automatisieren
- automatische
- Im Prinzip so, wie Sie es von Google Maps kennen.
- verfügbar
- ein Weg
- AWS
- AWS CloudFormation
- AWS Lambda
- Backend
- Bandbreite
- basierend
- BE
- weil
- Bevor
- zwischen
- Blau
- Körper
- Bootstrap
- bringen
- breit
- bauen
- Building
- erbaut
- eingebaut
- Geschäft
- aber
- by
- CAN
- Auto
- Häuser
- Fälle
- challenges
- Herausforderungen
- Übernehmen
- Änderungen
- aus der Ferne überprüfen
- Wahl
- Auswählen
- Cloud
- Code
- Codes
- Kälte
- Farbe
- Kombination
- kommt
- abschließen
- konzept
- Vertrauen
- Vernetz Dich
- Verbindung
- Konsul (Console)
- enthalten
- Container
- Behälter
- enthält
- Kontext
- und beseitigen Muskelschwäche
- kostengünstiger
- könnte
- erstellen
- schafft
- Erstellen
- Referenzen
- Kunden
- maßgeschneiderte
- innovativ, auf dem neuesten Stand
- technische Daten
- Standard
- Abhängig
- einsetzen
- Einsatz
- Bereitstellen
- Einsatz
- Design
- detailliert
- Entwicklung
- Entwicklung
- Direkt
- diskutieren
- Docker
- Dokumentation
- Nicht
- herunterladen
- zwei
- im
- Früher
- erleichtern
- einfacher
- leicht
- Einfache
- Anstrengung
- einbetten
- Empowerment
- Ende
- Endpunkt
- greift ein
- Ingenieur
- Ingenieure
- gewährleisten
- Unternehmen
- Arbeitsumfeld
- Umgebungen
- Fehler
- Beispiel
- Beispiele
- aufgeregt
- ausführen
- vorhandenen
- Beenden
- Experiment
- ERKUNDEN
- Gesicht
- Merkmal
- wenige
- Reichen Sie das
- Mappen
- Vorname
- erstes Mal
- Flexibilität
- flexibel
- folgen
- Folgende
- folgt
- Aussichten für
- Unser Ansatz
- für
- Funktion
- Funktionsumfang
- Funktionen
- Tor
- allgemein
- generativ
- Generative KI
- bekommen
- GitHub
- gegeben
- Go
- gehen
- persönlichem Wachstum
- Griff
- hart
- Haben
- he
- hören
- schwer
- schweres Heben
- Hilfe
- Unternehmen
- hilft
- hier (auf dänisch)
- hier
- Hohe Leistungsfähigkeit
- Gastgeber
- Ultraschall
- Hilfe
- aber
- HTML
- http
- HTTPS
- Nabe
- i
- Leerlauf
- if
- Image
- Bilder
- implementieren
- implementiert
- wichtig
- in
- In anderen
- Dazu gehören
- Branchen
- Infrastruktur
- innerhalb
- installiert
- Intelligenz
- interaktive
- interessiert
- Internet
- in
- eingeführt
- Probleme
- IT
- SEINE
- selbst
- JSON
- Scharf
- Wissend
- Landung
- Sprache
- grosse
- später
- lernen
- Bibliothek
- Lebensdauer
- Facelift
- Gefällt mir
- Line
- Belastungen
- aus einer regionalen
- örtlich
- Log
- Protokollierung
- Logik
- login
- mac
- Maschine
- Maschinelles Lernen
- gemacht
- Main
- um
- MACHT
- verwalten
- flächendeckende Gesundheitsprogramme
- Kann..
- Triff
- Nachricht
- Microservices
- könnte
- Geist / Bewusstsein
- Minuten
- ML
- Modell
- für
- modern
- mehr
- vor allem warme
- ziehen um
- mehrere
- sollen
- my
- nämlich
- notwendig,
- Need
- erforderlich
- Bedürfnisse
- Neu
- jetzt an
- of
- vorgenommen,
- on
- einmal
- EINEM
- einzige
- XNUMXh geöffnet
- Open-Source-
- Betrieb
- Optionen
- or
- Auftrag
- gewöhnlich
- Andere
- UNSERE
- verpackt
- Seite
- Parameter
- Teil
- Bestanden
- leidenschaftlich
- Leistung
- Zeiträume
- Ort
- Plato
- Datenintelligenz von Plato
- PlatoData
- spielt
- Beliebt
- Post
- Prognosen
- bevorzugt
- Voraussetzungen
- Geschenke
- Prozessdefinierung
- Produktion
- Projekt
- Projekte
- Beweis
- Proof of Concept
- Belegen
- vorausgesetzt
- bietet
- Bereitstellung
- Schieben
- Python
- Frage
- bereit
- Echtzeit
- Rot
- Veteran
- Region
- Regionen
- Quelle
- Zugriffe
- falls angefordert
- Anforderung
- Voraussetzungen:
- Downloads
- Antwort
- Folge
- behalten
- Recht
- Wurzel
- Straße
- Routen
- Führen Sie
- Laufen
- sagemaker
- Einsparung
- skalierbaren
- Skalieren
- Wissenschaftler
- Umfang
- Ergebnis
- sehen
- Auswahl
- Auswahl
- Serverlos
- Fertige Server
- Lösungen
- Dienst
- kompensieren
- sie
- sollte
- erklären
- Vitrine
- gezeigt
- Konzerte
- signifikant
- bedeutend
- ähnlich
- Einfacher
- Single
- So
- Software
- Lösung
- Lösungen
- Löst
- einige
- Sprechen
- spezialisiert
- speziell
- angegeben
- Stapel
- steht
- Anfang
- beginnt
- Status
- Schritt
- Shritte
- Lagerung
- speichern
- Speicherung
- Schnur
- Struktur
- Erfolgreich
- so
- Unterstützung
- Schweden
- Schweiz
- System
- Nehmen
- Aufgabe
- Technologies
- Vorlage
- Vorlagen
- Test
- zur Verbesserung der Gesundheitsgerechtigkeit
- Das
- ihr
- Sie
- dann
- Dort.
- vom Nutzer definierten
- fehlen uns die Worte.
- Durch
- Zeit
- mal
- zu
- Werkzeug
- Top
- der Verkehr
- Training
- trainiert
- Trends
- versuchen
- ui
- Unix
- auf dem neusten Stand
- URL
- -
- benutzt
- Mitglied
- verwendet
- Verwendung von
- Version
- Assistent
- warten
- wollen
- wurde
- we
- Netz
- Internetanwendung
- Web-Services
- willkommen
- GUT
- ging
- Was
- Was ist
- wann
- sobald
- ob
- welche
- WHO
- werden wir
- mit
- ohne
- Arbeiten
- weltweit wie ausgehandelt und gekauft ausgeführt wird.
- geschrieben
- Du
- Ihr
- sich selbst
- Zephyrnet
- Zürich