Een Aspekt vum Szenario ass e Maschinnléiermodell ze kreéieren. Et muss an der realer Welt benotzbar sinn a fir Konsumenten an Entwéckler verfügbar sinn.
Deen einfachsten a populärste Wee fir Maschinnléiermodeller z'installéieren ass se an enger REST API anzeschléissen.
Mat enger populärer Bibliothéik mam Numm FastAPI, dat ass genau dat wat mir haut wäerte erreechen.
Awer, wat ass FastAPI?
De FastAPI Python Web Framework gouf vun Ufank un erstallt fir vun zäitgenëssesche Python Fäegkeeten ze profitéieren.
Fir asynchron, gläichzäiteg Kommunikatioun mat Clienten, hält et dem ASGI Standard, wärend et och fäeg ass WSGI ze benotzen.
Endpunkter a Strecke kënne béid Async Funktiounen benotzen. Zousätzlech erméiglecht FastAPI déi produktiv Kreatioun vu Webapps an typesch ugedeitten, propperen, zäitgenëssesche Python Code.
Dem FastAPI säin Haapt Benotzungsfall ass, wéi den Numm et scho seet, API Endpunkte erstellen.
Den OpenAPI Standard ze benotzen, deen en interaktiven Swagger UI enthält, oder Python Wierderbuchdaten als JSON liwweren si béid einfach Weeër fir dëst z'erreechen. Wéi och ëmmer, FastAPI ass net nëmme fir APIen.
Et kann benotzt ginn fir Standard Websäiten mat dem Jinja2 Templatemotor ze bidden an Apps ze servéieren déi WebSockets benotzen, zousätzlech zu bal alles wat e Web Kader ka maachen.
An dësem Artikel wäerte mir en einfache Maschinnléieremodell entwéckelen an dann FastAPI benotzen fir et z'installéieren. Loosst eis ufänken.
Installatioun vu FastAPI a Schafung vun der éischter API
D'Bibliothéik an en ASGI Server z'installéieren ass als éischt erfuerderlech; entweder Uvuicorn oder Hypercorn wäert schaffen. Et funktionnéiert andeems Dir de folgende Kommando an den Terminal gitt:
Elo datt d'API erstallt gouf, kënnt Dir Äre gewënschte Code Editor benotzen an duerch se kucken. Erstellt e Python Skript mam Numm ml_model.py fir unzefänken. Dir sidd häerzlech wëllkomm ären en aneren Numm ze ginn, awer fir d'Wuel vun dësem Post wäert ech dës Datei als ml_model.py bezeechnen.
Fir eng einfach API mat zwee Endpunkte ze kreéieren, musst Dir déi folgend Aufgaben ausfëllen:
- Import de FastAPI an Uvicorn Bibliothéiken.
- Ariichten eng FastAPI Klass Instanz.
- Deklaréiert den éischte Wee, deen op der Index Säit en einfachen JSON Objet produzéiert.
- Deklaréiert déi zweet Streck, déi en einfachen JSON Objet mat engem personaliséierte Message ubitt. Den Nummparameter gëtt direkt vun der URL geholl (zum Beispill https://127.0.0.1:8000/Jay).
- Benotzt Uvicorn fir d'API ze lafen.
D'Ëmsetzung vun dëse fënnef Etappe gëtt am folgende Bit Code gewisen, dh. eng einfach API schafen
Alles fäerdeg! Loosst eis eis API direkt starten. Öffnen eng Terminalfenster nieft der ml model.py Datei fir dëst z'erreechen. Als nächst gitt déi folgend:
den Enter Schlëssel. Ier mer weidergoen, loosst eis dës Behaaptung debunkéieren. Déi éischt App benotzt de Python Dateinumm eleng, ouni d'Extensioun. Déi zweet App muss deeselwechten Numm hunn wéi Är FastAPI Instanz.
Andeems Dir -reload benotzt, sot Dir der API datt Dir wëllt datt se automatesch nei lued wann Dir d'Datei späichert anstatt vun Null unzefänken.
Elo lancéiert e Browser a navigéiert op https://127.0.0.1:8000; d'Resultat soll wéi follegt ausgesinn:
Dir verstitt elo wéi Dir eng einfach API erstellt mat FastAPI.
Bauen an trainéieren de Machine Learning Modell
Ouni Daten ze sammelen oder ze analyséieren, trainéiere mir just en einfache Modell. Dës sinn net am Zesummenhang mat der Installatioun vu Modeller a sinn net wesentlech fir d'Thema op der Hand.
E Modell baséiert op der Iris Dataset kann mat der selwechter installéiert ginn neural Netz Installatioun Method.
A mir wäerten dat maachen: download de Iris Dataset an trainéiert de Modell. Dat wäert net einfach sinn. Fir unzefänken, maacht e Fichier mam Numm jaysmlmodel.py.
An et wäert Dir déi folgend maachen:
- Importer - Dir braucht Pandas, scikit-RandomForecastClassifier, Léiert's Pydantic's BaseModel (Dir wäert entdecken firwat an de folgende Schrëtt), an Joblib fir Modeller ze späicheren an ze lueden.
- Deklaréiert eng IrisSpecies Klass déi vum Basismodell ierft. Dës Klass enthält nëmme Felder déi néideg sinn fir eng eenzeg Blummenaart ze prognostizéieren (méi doriwwer an der nächster Sektioun)
- Schafen eng Klass. IrisModel ass e Modell Training a Prediction Tool.
- Deklaréiert eng Method mam Numm _train Modell bannent IrisModel. Et gëtt benotzt fir Modeller mat der Random Forests Technik ze trainéieren. Den trainéierte Modell gëtt vun der Prozedur zréckginn.
- Deklaréiert eng virausgesot Artenfunktioun am IrisModel. Et gëtt benotzt fir ze prognostizéieren baséiert op 4 Inputfaktoren (Blummenmiessungen). Souwuel d'Prognose (Blummenarten) wéi och d'Prognosewahrscheinlechkeet ginn vum Algorithmus zréck.
- Ännert de Konstruktor am IrisModel sou datt et d'Iris-Datasaz lued an de Modell trainéiert wann et am Dossier fehlt. Dëst léist de Problem vun ëmmer erëm Training nei Modeller. D'Joblib-Bibliothéik gëtt benotzt fir Modeller ze lueden an ze späicheren.
Hei ass de ganze Code:
Ech hoffen déi uewe genannte Lëscht an d'Kommentaren hunn et einfach ze begräifen, och wann dëst e wesentleche Betrag u Code war fir ze kreéieren. Elo datt dëse Modell entwéckelt gouf, loosst eis seng Prognosefäegkeeten iwwer a publizéieren Rescht API.
Konstruktioun vun enger voller REST API
Zréck op d'ml_model.py Datei a purgéiert all d'Donnéeën. D'Boilerplate wäert am Wesentlechen d'selwecht sinn wéi dat wat Dir virdru hat, awer mir sollten iwwer eng eidel Datei ufänken.
Dir wäert dës Kéier nëmmen een Endpunkt definéieren, dat ass deen deen benotzt gëtt fir d'Blummenart ze bestëmmen. IrisModel.predict species(), déi an der viregter Sektioun deklaréiert gouf, gëtt vun dësem Endpunkt genannt fir d'Prognose auszeféieren.
Den Ufrotyp ass déi aner grouss Ännerung. Fir Parameteren an JSON anstatt URL ze vermëttelen, ass et recommandéiert POST ze benotzen wann Dir benotzt Maschinn léieren APIen.
De Saz uewendriwwer huet vläicht wéi Gibberish geklongen wann Dir e sidd daten Wëssenschaftler, mee dat ass ok. Fir Modeller ze designen an z'installéieren, brauch een net onbedéngt en Expert op HTTP Ufroen a REST APIs ze sinn.
D'Aufgaben fir ml model.py sinn wéineg an einfach:
- Dir musst déi folgend aus der virdrun erstallt jaymlmodel.py Datei importéieren: uvicorn, FastAPI, IrisModel, an IrisSpecies.
- Erstellt Instanzen vu FastAPI an IrisModel.
- Deklaréiert eng Funktioun op https://127.0.0.1:8000/predict fir Prognosen ze maachen.
- D'IrisModel.predict species() Method kritt en Objet vum Typ IrisSpecies, transforméiert en an e Wierderbuch, a gëtt et dann zréck. Retouren sinn déi erwaart Klass a virausgesot Probabilitéit.
- Benotzt uvicorn fir d'API auszeféieren.
Nach eng Kéier, hei ass de ganze Code vum Fichier zesumme mat senge Kommentaren:
Dat ass alles wat Dir maache musst. Am nächste Schrëtt, loosst eis d'API testen.
Testen der API
Gitt déi folgend Zeil an den Terminal erëm an fir d'API auszeféieren: uvicorn ml_model:app -reload
Dëst ass wéi d'Dokumentatiounssäit erschéngt:
Also dat ass et fir haut. Am Deel duerno, loosse mer ofschléissen.
Konklusioun
Haut hutt Dir geléiert wat FastAPI ass a wéi Dir et benotzt, souwuel mat engem einfachen API Beispill an engem einfache Maschinnléiere Beispill. Dir hutt och geléiert wéi Dir API Dokumentatioun erstellt an kuckt, wéi och wéi Dir se testen.
Dat ass vill fir een eenzegt Stéck, also sidd net iwwerrascht wann et e puer Liesunge brauch fir richteg ze verstoen.
Glécklech Kodéierung.
Hannerlooss eng Äntwert