FastAPI vs Flask | Ist FastAPI der richtige Ersatz für Flaschen?

Inhalt

Sobald Sie mit der Modellerstellung und der richtigen Hyperparameter-Abstimmung fertig sind, Der nächste Schritt in Data Science-Projekten ist Endergebnisse anzeigen An die breite Öffentlichkeit. Es ist wichtig, dies auf diese Weise zu tun, da nicht jeder daran interessiert ist, den Code zu sehen und mehr am Endergebnis interessiert ist. Es hilft auch Data-Science-Möchtegern, Bauen Sie ein Projekt von Anfang bis Ende auf was ihnen einen Vorteil gegenüber anderen verschafft und ihnen eine Vorliebe für andere Technologien gibt.

Die Bereitstellung von Modellen für maschinelles Lernen kann je nach Plattform, auf der Sie das Modell bereitstellen möchten, unterschiedliche Wege nehmen. das Weboberfläche ist die gängigste Methode ein Model zu posten, aber es ist nicht beschränkt auf Android- und IOS-Apps oder ein IOT-Gerät wie Raspberry Pi. Wenn Sie dies im Detail untersuchen, also ist eine Frameüberschrift der Suchanfrage die Flaschenrahmen Dies ist eine minimalistische Anwendung zum schnellen Konfigurieren von Webservern, die jedoch vorhanden ist einige Fragen die sich nun zu einem kürzlich gestarteten Frame-Aufruf auflösen FastAPI was heutzutage sehr an Popularität gewinnt.

In diesem Artikel, Wir werden sehen, wie das FastAPI-Framework gegenüber Flask mit einigen Beispielcodes einen Vorteil hat, um die Dinge besser zu verstehen. Davor, wenn du interessiert bist Implementierung der Android-Anwendung dann kannst du meinen Artikel lesen Implementierung von ML in der Android-Anwendung.

Es ist ein Python-basiertes Framework, mit dem Sie Websites mit weniger Code verbinden können. Sie können eine erstellen kleine Website mit diesem, da es die Anpassung bei jedem Schritt ermöglicht. Ein minimalistisches Paket sein, nur Kernkomponenten sind enthalten und alle anderen Erweiterungen erfordern eine explizite Konfiguration. Viele Entwickler verwenden Flask, um ihre APIs zu hosten. API (Anwendungsprogrammschnittstelle) ist eine Schnittstelle, die die Kommunikation zwischen mehreren Vermittlern ermöglicht, was bedeutet, dass man mit jeder Technologie auf jede Art von Daten zugreifen kann. Zum Beispiel, Sie können mit Javascript auf eine API zugreifen, die mit Python erstellt werden könnte. Ein einfaches Programm in einer Flasche sieht so aus:

aus Flaschenimport Flasche, jsonify
app = Flasche(__Name__)
@app.route("/<Name>", Methoden=['WERDEN'])
auf jeden Fall zu Hause(Name):
    jsonify zurückgeben({"Botschaft": F"Hallo! {Name}"})
wenn __name__ == "__hauptsächlich__":
    app.run(debug=Wahr)

Durch Drücken der URL localhost / AnyNameHere, ein ähnliches JSON-Ergebnis wird angezeigt: (Ich verwende die Chrome-Erweiterung namens JSON-Viewer. Möglicherweise werden Sie anstelle dieser formatierten Ausgabe zur Eingabe von Nur-Text aufgefordert)

img_1-8741078

Probleme mit der Flasche

Das Problem bei diesem Ansatz ist, dass es keine Datenvalidierung, was bedeutet, dass wir jede Art von Daten übergeben können, seien es Ketten, Tupel, Zahlen oder ein beliebiges Zeichen. Dies kann das Programm oft unterbrechen und Sie können sich vorstellen, dass ein ML-Modell falsche Datentypen erhält, das Programm stürzt ab. Sie können einen Datenchecker erstellen, bevor Sie die Werte übergeben, aber ich würde zusätzliche Arbeit hinzufügen.

Fehlerseiten in Flask als einfache HTML-Seiten, die Decoderfehler generieren können, wenn die API in anderen Anwendungen aufgerufen wird. Es gibt andere Probleme mit Flask, wie langsame Natur, keine asynchroneund Web-Socket-Unterstützung, die Prozesse beschleunigen und, Schließlich, kein automatisiertes Dokumentengenerierungssystem. Sie müssen die Benutzeroberfläche für die API-Nutzung und Beispiele manuell entwerfen. All diese Probleme werden im neuen Framework gelöst.

FastAPI

Es ist ein modernes Framework, mit dem Sie APIs reibungslos und ohne viel Aufwand erstellen können. Hat die Fähigkeit, Servercode von Geschäftslogik trennen Verbesserung der Code-Wartbarkeit. Da der Name selbst schnell ist, es ist viel schneller als die Flasche, da es auf ASGI basiert (Asynchrone Server-Gateway-Schnittstelle) statt WSGI (Webserver-Gateway-Schnittstelle). Es verfügt über ein Datenvalidierungssystem, das erkennen kann jeder ungültige Datentyp zur Laufzeit und gibt den Grund für die falschen Eingaben nur im JSON-Format an den Benutzer zurück, was Entwickler davon befreit, diese Ausnahme explizit zu behandeln.

Dass erstellt die Dokumentation unterwegs, wenn Sie die API entwickeln, die von allen Entwicklern am häufigsten nachgefragt wird. Dokumentation ist eine großartige Möglichkeit für andere Entwickler, an einem Projekt zusammenzuarbeiten, da es alles präsentiert, was mit den notwendigen Anweisungen gemacht werden kann. Es erzeugt auch a gute GUI das löst alles, was in der Flasche gefehlt hat.

Es macht all diese Dinge mit den OpenAI- und Swagger-Spezifikationen, um diese Spezifikationen zu implementieren. Als ein Entwickler, es konzentriert sich nur auf den logischen Konstruktionsteil und der Rest wird von FastAPI verwaltet. Sehen wir uns das gleiche Beispiel an, das mit Flask erstellt wurde und jetzt in FastAPI implementiert ist:

uvicorn importieren
aus fastapi importieren FastAPI
app = FastAPI()
@app.get("/")
auf jeden Fall zu Hause(Name: str):
    Rückkehr {"Botschaft": F"Hallo! {Name}"}
wenn __name__ == "__hauptsächlich__":
    uvicorn.run(App, Gastgeber="127.0.0.1", Port=8000, debug=Wahr)

Durch Drücken der URL localhost /? Name = AnyNameHere, Sie werden nach einem Ergebnis gefragt wie:

img_2-7383572

Sie können sehen, dass der Code dem Kolben sehr ähnlich ist, aber hier verwenden wir uvicorn server, Was ist eine ASGI-Implementierung?. Was ist mehr, hier sind wir ohne Routing von Endpunkten und erstellen Sie sie direkt mit Dekorateuren, was macht am meisten sinn. Die Funktion hier nimmt die erforderlichen Argumente einfach weiter als macht das Anfrageobjekt überflüssig heißen.

img_3-9515011

Es gibt einen weiteren Dokumentationsgenerator, der in FastAPI enthalten ist, nämlich, ReDoc, das auch eine schöne Dokumentation mit allen aufgeführten Endpunkten erstellt hat. Es kann durch Drücken des Endpunkts aufgerufen werden / redoc:

25693Temperatur-4256177

So konfigurieren Sie die Datenvalidierung, Wir können einfach die Datentypklasse erstellen, die von der geerbten Pydantische Basismodell. Es ist eine Bibliothek, die Datenvalidierung durch Anmerkungen vom Typ Python bietet. Wir können die Beschreibung der Entitäten hinzufügen und das benutzerdefinierte Beispiel zur Anzeige in den Dokumenten bereitstellen.

ML FastAPI-Beispiel

Ich möchte ein Beispiel teilen, in dem ein ML DecisionTree-Klassifikatormodell mit FastAPI implementiert wurde. Die Problemstellung hierfür ist a Klassifizierer für Musikgenres wo basierend auf technischen Aspekten der Musik wie Tempo, die valencia, die Musik ist Rock oder Hip-Hop. Ich habe einen Musikkurs gemacht, um die Daten zu validieren, die an das Modell übergeben werden, das so aussieht:

aus pydantic importieren BaseModel
Klasse Musik(Basismodell):
    Akustik: schweben
    Tanzbarkeit: schweben
    Energie: schweben
    Instrumentalität: schweben
    Lebendigkeit: schweben
    Redegewandtheit: schweben
    Tempo: schweben
    Wertigkeit: schweben

img_4-1385000

Wenn Sie den vollständigen Code sehen möchten, gehe zu diesem GitHub-Repository.

Fazit: Was soll man wählen?

Nach all dieser Diskussion, die frage bleibt unbeantwortet, Wer gewinnt? Basierend auf allen Faktoren, Ich würde Ich schlage vor, FastAPI über Flask zu übernehmen. Ist sehr einfach zu konfigurieren, Die Migration eines alten Kolbenprojekts auf dieses wird nicht lange dauern, asynchron, Web-Sockets ja Funktion zur automatischen Dokumentengenerierung es ist das Sahnehäubchen.

Das kann man wählen Kolbenrahmen zur Konfiguration des gesamten Webinterface (Frontend und Backend) aber in Bezug auf ML, wo das Hauptziel darin besteht zu überprüfen, ob das Modell in der Produktionsumgebung funktioniert oder nicht, Das Erstellen einer API ist sinnvoller, da der Rest von anderen Entwicklerteams verwaltet werden kann und ihnen die Verwendung des von Ihnen entwickelten Programms klar erklärt wird, FastAPI Auto Docs ist eine gute Lösung.

Verbinden Sie sich mit dem Autor

Du kannst dich mit mir verbinden unter Linkedin diskutieren alles, was mit Python-Entwicklung und Data Science zu tun hat, GitHub zu siehe meine Projekte oder du kannst lese meine Artikel in der Mitte.

Kaustubh – Halb

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.