Ein Aspekt des Szenarios ist das Erstellen eines Modells für maschinelles Lernen. Es muss in der realen Welt nutzbar und für Verbraucher und Entwickler verfügbar sein.
Die einfachste und beliebteste Methode zum Bereitstellen von Modellen für maschinelles Lernen besteht darin, sie in eine REST-API einzuschließen.
Mit einer beliebten Bibliothek namens FastAPI werden wir genau das heute erreichen.
Aber was ist FastAPI?
Das FastAPI-Python-Webframework wurde von Grund auf neu entwickelt, um die Vorteile moderner Python-Funktionen zu nutzen.
Für die asynchrone, gleichzeitige Kommunikation mit Clients hält es sich an den ASGI-Standard, kann aber auch WSGI verwenden.
Sowohl Endpunkte als auch Routen können asynchrone Funktionen verwenden. Darüber hinaus ermöglicht FastAPI die produktive Erstellung von Web-Apps in typhinterlegtem, sauberem, zeitgemäßem Python-Code.
Der Hauptanwendungsfall von FastAPI ist, wie der Name schon sagt, das Erstellen von API-Endpunkten.
Die Verwendung des OpenAPI-Standards, der eine interaktive Swagger-Benutzeroberfläche enthält, oder die Bereitstellung von Python-Wörterbuchdaten als JSON sind beides einfache Möglichkeiten, dies zu erreichen. FastAPI ist jedoch nicht nur für APIs.
Es kann verwendet werden, um Standard-Webseiten mit der Jinja2-Vorlagen-Engine anzubieten und Apps mit WebSockets bereitzustellen, zusätzlich zu so ziemlich allem, was ein Web-Framework tun kann.
In diesem Artikel entwickeln wir ein einfaches Modell für maschinelles Lernen und verwenden dann FastAPI, um es bereitzustellen. Lass uns anfangen.
Installation von FastAPI und Erstellung der ersten API
Zuerst müssen die Bibliothek und ein ASGI-Server installiert werden; Entweder Uvuicorn oder Hypercorn funktionieren. Es funktioniert, indem Sie den folgenden Befehl in das Terminal eingeben:
Nachdem die API erstellt wurde, können Sie Ihren bevorzugten Code-Editor verwenden und ihn durchsuchen. Erstellen Sie zunächst ein Python-Skript namens ml_model.py. Sie können Ihrer Datei gerne einen anderen Namen geben, aber für diesen Beitrag werde ich diese Datei als ml_model.py bezeichnen.
Um eine einfache API mit zwei Endpunkten zu erstellen, müssen Sie die folgenden Aufgaben ausführen:
- Importieren Sie die FastAPI- und Uvicorn-Bibliotheken.
- Richten Sie eine FastAPI-Klasseninstanz ein.
- Deklarieren Sie die erste Route, die auf der Indexseite ein einfaches JSON-Objekt erzeugt.
- Deklarieren Sie die zweite Route, die ein einfaches JSON-Objekt mit einer benutzerdefinierten Nachricht bereitstellt. Der Namensparameter wird direkt aus der URL übernommen (z. B. https://127.0.0.1:8000/Jay).
- Verwenden Sie Uvicorn, um die API auszuführen.
Die Implementierung dieser fünf Stufen wird im folgenden Code-Bit gezeigt, dh. Erstellung einer einfachen API
Alles erledigt! Lassen Sie uns sofort unsere API starten. Öffnen Sie dazu ein Terminalfenster neben der Datei ml model.py. Als nächstes geben Sie Folgendes ein:
die Eingabetaste. Bevor wir fortfahren, lassen Sie uns diese Behauptung widerlegen. Die erste App verwendet nur den Python-Dateinamen ohne die Erweiterung. Die zweite App muss denselben Namen wie Ihre FastAPI-Instanz haben.
Durch die Verwendung von -reload teilen Sie der API mit, dass sie beim Speichern der Datei automatisch neu geladen werden soll, anstatt von vorne zu beginnen.
Starten Sie nun einen Browser und navigieren Sie zu https://127.0.0.1:8000; Das Ergebnis sollte wie folgt aussehen:
Sie verstehen jetzt, wie Sie mit FastAPI eine einfache API erstellen.
Erstellen und Trainieren des Modells für maschinelles Lernen
Ohne Daten zu sammeln oder zu analysieren, trainieren wir nur ein einfaches Modell. Diese beziehen sich nicht auf den Einsatz von Modellen und sind für das vorliegende Thema nicht wesentlich.
Ein auf dem Iris-Datensatz basierendes Modell kann damit installiert werden neuronale Netzwerk Installationsmethode.
Und genau das tun wir: Laden Sie die herunter Iris-Datensatz und trainieren Sie das Modell. Das wird nicht einfach. Erstellen Sie zunächst eine Datei mit dem Namen jaysmlmodel.py.
Darin werden Sie Folgendes tun:
- Importe — Sie benötigen pandas, scikit-RandomForecastClassifier, das BaseModel von Learn's pydantic (Sie werden im folgenden Schritt erfahren, warum) und joblib zum Speichern und Laden von Modellen.
- Deklarieren Sie eine IrisSpecies-Klasse, die vom Basismodell erbt. Diese Klasse enthält nur Felder, die zur Vorhersage einer einzelnen Blumenart benötigt werden (mehr dazu im nächsten Abschnitt).
- Erstellen Sie eine Klasse. IrisModel ist ein Modelltrainings- und Vorhersagetool.
- Deklarieren Sie in IrisModel eine Methode namens _train model. Es wird verwendet, um Modelle mit der Random-Forests-Technik zu trainieren. Das trainierte Modell wird von der Prozedur zurückgegeben.
- Deklarieren Sie eine vorhergesagte Artenfunktion in IrisModel. Es wird verwendet, um basierend auf 4 Eingabefaktoren (Blütenmessungen) zu prognostizieren. Sowohl die Vorhersage (Blumenarten) als auch die Vorhersagewahrscheinlichkeit werden vom Algorithmus zurückgegeben.
- Ändern Sie den Konstruktor in IrisModel so, dass er das Iris-Dataset lädt und das Modell trainiert, wenn es im Ordner fehlt. Dadurch wird das Problem des wiederholten Anlernens neuer Modelle gelöst. Die Joblib-Bibliothek wird zum Laden und Speichern von Modellen verwendet.
Hier ist der gesamte Code:
Ich hoffe, die obige Liste und die Kommentare haben es leicht verständlich gemacht, obwohl dies eine beträchtliche Menge an zu erstellendem Code war. Nachdem dieses Modell nun entwickelt wurde, veröffentlichen wir seine Vorhersagefähigkeiten über a REST API.
Erstellen einer vollständigen REST-API
Kehren Sie zur Datei ml_model.py zurück und löschen Sie alle Daten. Der Textbaustein ist im Wesentlichen derselbe wie zuvor, aber wir sollten mit einer leeren Datei von vorne beginnen.
Sie definieren dieses Mal nur einen Endpunkt, der zur Bestimmung der Blumenart verwendet wird. IrisModel.predict Spezies(), das im vorherigen Abschnitt deklariert wurde, wird von diesem Endpunkt aufgerufen, um die Vorhersage durchzuführen.
Der Anfragetyp ist die andere große Änderung. Um Parameter in JSON statt in der URL zu übertragen, wird empfohlen, bei der Verwendung POST zu verwenden Maschinelles Lernen APIs.
Der obige Satz mag wie Kauderwelsch geklungen haben, wenn Sie a sind Datenwissenschaftler, aber das ist in Ordnung. Um Modelle zu entwerfen und bereitzustellen, muss man nicht unbedingt ein Experte für HTTP-Anforderungen und REST-APIs sein.
Die Aufgaben für ml model.py sind wenige und unkompliziert:
- Sie müssen Folgendes aus der zuvor erstellten jaymlmodel.py-Datei importieren: uvicorn, FastAPI, IrisModel und IrisSpecies.
- Erstellen Sie Instanzen von FastAPI und IrisModel.
- Deklarieren Sie eine Funktion unter https://127.0.0.1:8000/predict, um Vorhersagen zu treffen.
- Die IrisModel.predict-species()-Methode empfängt ein Objekt vom Typ IrisSpecies, wandelt es in ein Wörterbuch um und gibt es dann zurück. Renditen sind die erwartete Klasse und die vorhergesagte Wahrscheinlichkeit.
- Verwenden Sie uvicorn, um die API auszuführen.
Hier ist noch einmal der gesamte Code der Datei zusammen mit ihren Kommentaren:
Das ist alles, was Sie tun müssen. Lassen Sie uns im nächsten Schritt die API testen.
Testen der API
Geben Sie die folgende Zeile erneut in das Terminal ein, um die API auszuführen: uvicorn ml_model:app –reload
So erscheint die Dokumentationsseite:
Das war es also für heute. Lassen Sie uns im Teil danach schließen.
Zusammenfassung
Heute haben Sie anhand eines einfachen API-Beispiels und eines einfachen Beispiels für maschinelles Lernen gelernt, was FastAPI ist und wie es verwendet wird. Sie haben auch gelernt, wie Sie API-Dokumentation erstellen und anzeigen und testen.
Das ist viel für ein einzelnes Stück, also wundern Sie sich nicht, wenn Sie ein paar Lesungen brauchen, um es richtig zu verstehen.
Viel Spaß beim Codieren.
Hinterlassen Sie uns einen Kommentar