Stsenaariumi üks aspekt on masinõppemudeli loomine. See peab olema reaalses maailmas kasutatav ning tarbijatele ja arendajatele kättesaadav.
Lihtsaim ja populaarseim viis masinõppemudelite juurutamiseks on lisada need REST API-sse.
Tänu populaarsele teegile nimega FastAPI saavutame just selle täna.
Aga, mis on FastAPI?
FastAPI Pythoni veebiraamistik loodi algusest peale, et kasutada ära tänapäevaseid Pythoni võimalusi.
Asünkroonseks, samaaegseks suhtlemiseks klientidega järgib see ASGI standardit, samas on see võimeline kasutama ka WSGI-d.
Nii lõpp-punktid kui ka marsruudid võivad kasutada asünkroonimisfunktsioone. Lisaks võimaldab FastAPI produktiivselt luua veebirakendusi tüübivihjega, puhtas ja kaasaegses Pythoni koodis.
FastAPI peamine kasutusjuhtum on, nagu nimigi ütleb, API lõpp-punktide loomine.
OpenAPI standardi kasutamine, mis sisaldab interaktiivset Swaggeri kasutajaliidest, või Pythoni sõnastiku andmete esitamine JSON-vormingus on mõlemad lihtsad viisid selle saavutamiseks. Kuid FastAPI pole mõeldud ainult API-de jaoks.
Seda saab kasutada standardsete veebilehtede pakkumiseks Jinja2 mallimootori abil ja WebSocketsi kasutavate rakenduste teenindamiseks, lisaks peaaegu kõigele muule, mida veebiraamistik teha saab.
Selles artiklis töötame välja lihtsa masinõppe mudeli ja kasutame selle juurutamiseks FastAPI-d. Alustagem.
FastAPI installimine ja esimese API loomine
Esmalt tuleb installida raamatukogu ja ASGI server; kas Uvuicorn või Hypercorn töötavad. See toimib, kui sisestate terminali järgmise käsu:
Nüüd, kui API on loodud, saate kasutada eelistatud koodiredaktorit ja seda sirvida. Alustamiseks looge Pythoni skript nimega ml_model.py. Võite anda omale teistsuguse nime, kuid selle postituse huvides viitan sellele failile kui ml_model.py.
Kahe lõpp-punktiga lihtsa API loomiseks peate täitma järgmised toimingud.
- Importige FastAPI ja Uvicorni teegid.
- Seadistage FastAPI klassi eksemplar.
- Deklareerige esimene marsruut, mis registrilehel loob lihtsa JSON-objekti.
- Deklareerige teine marsruut, mis pakub kohandatud sõnumiga otsest JSON-objekti. Nimeparameeter võetakse otse URL-ist (näiteks https://127.0.0.1:8000/Jay).
- API käitamiseks kasutage Uvicorni.
Nende viie etapi rakendamine on näidatud järgmises koodibitis, st. lihtsa API loomine
Kõik tehtud! Käivitame kohe oma API. Selle tegemiseks avage faili ml model.py kõrval terminali aken. Järgmisena sisestage järgmine:
sisestusklahvi. Enne edasiliikumist lükkame selle väite ümber. Esimene rakendus kasutab ainult Pythoni failinime, ilma laiendita. Teisel rakendusel peab olema sama nimi, mis teie FastAPI eksemplaril.
Kasutades -reload, ütlete API-le, et soovite, et see laadiks faili salvestamisel automaatselt uuesti, mitte ei alusta nullist.
Nüüd käivitage brauser ja liikuge aadressile https://127.0.0.1:8000; tulemus peaks välja nägema järgmine:
Nüüd saate aru, kuidas FastAPI abil lihtsat API-d luua.
Masinõppe mudeli loomine ja koolitamine
Ilma andmeid kogumata või analüüsimata koolitame lihtsalt välja lihtsa mudeli. Need ei ole mudelite kasutuselevõtuga seotud ega ole käsitletava teema jaoks olulised.
Iirise andmestikul põhineva mudeli saab installida sama kasutades Närvivõrgus paigaldusmeetod.
Ja me teeme just seda: laadime alla Iirise andmestik ja treenige modelli. See ei saa olema lihtne. Alustuseks looge fail nimega jaysmlmodel.py.
Selles teete järgmist.
- Impordid – mudelite salvestamiseks ja laadimiseks vajate pandasid, scikit-RandomForecastClassifieri, learning's pydanticu BaseModeli (selle põhjuse saate teada järgmises etapis).
- Deklareerige klass IrisSpecies, mis pärib baasmudelist. See klass sisaldab ainult ühe lilleliigi prognoosimiseks vajalikke välju (sellest lähemalt järgmises jaotises)
- Loo klass. IrisModel on mudelkoolituse ja ennustamise tööriist.
- Deklareerige IrisModelis meetod nimega _train model. Seda kasutatakse mudelite koolitamiseks Random Forests tehnikas. Koolitatud mudel tagastatakse protseduuriga.
- Deklareerige IrisModelis ennustatud liigifunktsioon. Seda kasutatakse prognoosimiseks, mis põhineb 4 sisendteguril (lillemõõtmised). Algoritm tagastab nii prognoosi (lilleliik) kui ka ennustuse tõenäosuse.
- Muutke IrisModelis konstruktorit nii, et see laadiks Irise andmestiku ja treeniks mudelit, kui see kaustast puudub. See lahendab uute mudelite korduva koolitamise probleemi. Joblib teeki kasutatakse mudeli laadimiseks ja salvestamiseks.
Siin on kogu kood:
Loodan, et ülaltoodud loend ja kommentaarid tegid sellest hõlpsasti aru, kuigi see oli märkimisväärne kogus koodi luua. Nüüd, kui see mudel on välja töötatud, avaldame selle ennustusvõimalused üle a REST API.
Täieliku REST API loomine
Naaske faili ml_model.py ja tühjendage kõik andmed. Katlaplaat on sisuliselt sama, mis teil varem oli, kuid me peaksime alustama tühja failiga.
Seekord määrate ainult ühe lõpp-punkti, mida kasutatakse lilletüübi määramiseks. Eelmises jaotises deklareeritud IrisModel.predict species() kutsub see lõpp-punkt ennustuse läbiviimiseks.
Taotluse tüüp on teine suur muudatus. Parameetrite edastamiseks JSON-is, mitte URL-is, on soovitatav kasutada POST-i masinõpe API-d.
Ülaltoodud lause võis kõlada jaburana, kui olete a andmeteadlane, aga see on korras. Mudelite kavandamiseks ja juurutamiseks ei pea tingimata olema HTTP-päringute ja REST API-de ekspert.
Rakenduse ml model.py ülesandeid on vähe ja need on lihtsad:
- Peate importima varem loodud failist jaymlmodel.py järgmised: uvicorn, FastAPI, IrisModel ja IrisSpecies.
- Looge FastAPI ja IrisModeli eksemplarid.
- Prognooside tegemiseks deklareerige funktsioon aadressil https://127.0.0.1:8000/predict.
- Meetod IrisModel.predict species() võtab vastu IrisSpecies tüüpi objekti, teisendab selle sõnaraamatuks ja tagastab selle seejärel. Tootlused on eeldatav klass ja prognoositav tõenäosus.
- Kasutage API käivitamiseks uvicorni.
Jällegi on siin kogu faili kood koos kommentaaridega:
See on kõik, mida pead tegema. Järgmises etapis testime API-t.
API testimine
API käivitamiseks sisestage terminali uuesti järgmine rida: uvicorn ml_model:app –reload
Dokumentatsioonileht kuvatakse järgmiselt:
Tänaseks siis kõik. Sellele järgnevas osas teeme järelduse.
Järeldus
Täna õppisite, mis on FastAPI ja kuidas seda kasutada, kasutades nii lihtsat API-näidet kui ka lihtsat masinõppe näidet. Samuti olete õppinud, kuidas luua ja vaadata API dokumentatsiooni ning kuidas seda testida.
Seda on ühe teose kohta palju, nii et ärge üllatuge, kui õigeks mõistmiseks kulub paar lugemist.
Head kodeerimist.
Jäta vastus