Eden od vidikov scenarija je ustvarjanje modela strojnega učenja. Biti mora uporaben v resničnem svetu in na voljo potrošnikom in razvijalcem.
Najenostavnejši in najbolj priljubljen način za uvajanje modelov strojnega učenja je, da jih vključite v REST API.
S priljubljeno knjižnico, imenovano FastAPI, bomo danes dosegli točno to.
Ampak, kaj je FastAPI?
Spletno ogrodje FastAPI Python je bilo ustvarjeno od začetka, da bi izkoristilo sodobne zmogljivosti Pythona.
Za asinhrono, sočasno komunikacijo z odjemalci se drži standarda ASGI, zmožna pa je tudi uporabe WSGI.
Končne točke in poti lahko uporabljajo asinhrone funkcije. Poleg tega FastAPI omogoča produktivno ustvarjanje spletnih aplikacij v čisti in sodobni kodi Python s tipskimi namigi.
Glavni primer uporabe FastAPI je, kot že ime pove, ustvarjanje končnih točk API.
Uporaba standarda OpenAPI, ki vključuje interaktivni uporabniški vmesnik Swagger, ali zagotavljanje podatkov slovarja Python kot JSON sta preprosta načina za dosego tega. Vendar pa FastAPI ni samo za API-je.
Uporablja se lahko za ponujanje standardnih spletnih strani z uporabo mehanizma predloge Jinja2 in za streženje aplikacij, ki uporabljajo WebSockets, poleg skoraj vsega drugega, kar lahko naredi spletno ogrodje.
V tem članku bomo razvili preprost model strojnega učenja in nato uporabili FastAPI za njegovo uvedbo. Začnimo.
Namestitev FastAPI in izdelava prvega API-ja
Najprej je potrebna namestitev knjižnice in strežnika ASGI; bo deloval Uvuicorn ali Hypercorn. Deluje tako, da v terminal vnesete naslednji ukaz:
Zdaj, ko je API ustvarjen, lahko uporabite želeni urejevalnik kode in brskate po njem. Za začetek ustvarite skript Python z imenom ml_model.py. Svojemu lahko daste drugačno ime, vendar bom zaradi te objave to datoteko imenoval ml_model.py.
Če želite ustvariti preprost API z dvema končnima točkama, morate opraviti naslednje naloge:
- Uvozite knjižnici FastAPI in Uvicorn.
- Nastavite primerek razreda FastAPI.
- Deklarirajte prvo pot, ki na indeksni strani ustvari preprost objekt JSON.
- Navedite drugo pot, ki zagotavlja preprost objekt JSON s prilagojenim sporočilom. Parameter imena je vzet neposredno iz URL-ja (na primer https://127.0.0.1:8000/Jay).
- Za zagon API-ja uporabite Uvicorn.
Izvedba teh petih stopenj je prikazana v naslednjem delčku kode, tj. ustvarjanje preprostega API-ja
Končano! Takoj zaženimo naš API. Odprite okno terminala poleg datoteke ml model.py, da to dosežete. Nato vnesite naslednje:
tipko Enter. Preden gremo naprej, razkrijemo to trditev. Prva aplikacija uporablja samo ime datoteke Python, brez pripone. Druga aplikacija mora imeti isto ime kot vaš primerek FastAPI.
Z uporabo -reload sporočite API-ju, da želite, da se samodejno znova naloži, ko shranite datoteko, namesto da začnete od začetka.
Zdaj zaženite brskalnik in se pomaknite do https://127.0.0.1:8000; rezultat bi moral izgledati takole:
Zdaj razumete, kako ustvariti preprost API z uporabo FastAPI.
Gradnja in usposabljanje modela strojnega učenja
Brez zbiranja ali analiziranja kakršnih koli podatkov bomo le usposobili preprost model. Ti niso povezani z uvajanjem modelov in niso bistveni za obravnavano temo.
Model, ki temelji na naboru podatkov Iris, je mogoče namestiti z istim nevronska mreža način namestitve.
In storili bomo prav to: prenesli Nabor podatkov šarenice in usposobiti model. To ne bo preprosto. Za začetek naredite datoteko z imenom jaysmlmodel.py.
V njem boste storili naslednje:
- Uvozi — za shranjevanje in nalaganje modelov boste potrebovali pandas, scikit-RandomForecastClassifier, learn's pydantic's BaseModel (v naslednjem koraku boste odkrili, zakaj) in joblib.
- Deklarirajte razred IrisSpecies, ki podeduje osnovni model. Ta razred vsebuje samo polja, ki so potrebna za napovedovanje ene vrste cvetja (več o tem v naslednjem razdelku)
- Ustvarite razred. IrisModel je orodje za usposabljanje in napovedovanje modela.
- V IrisModel deklarirajte metodo z imenom _train model. Uporablja se za usposabljanje modelov s tehniko naključnih gozdov. Izurjeni model se vrne po postopku.
- Deklarirajte funkcijo predvidene vrste znotraj IrisModel. Uporablja se za napovedovanje na podlagi 4 vhodnih faktorjev (meritve cvetov). Algoritem vrne tako napoved (vrsta rož) kot verjetnost napovedi.
- Spremenite konstruktor v IrisModel, tako da naloži nabor podatkov Iris in uri model, če manjka v mapi. To rešuje problem ponavljajočega se usposabljanja novih modelov. Knjižnica joblib se uporablja za nalaganje in shranjevanje modela.
Tukaj je celotna koda:
Upam, da so zgornji seznam in komentarji olajšali razumevanje, čeprav je bilo treba ustvariti precejšnjo količino kode. Zdaj, ko je bil ta model razvit, objavimo njegove zmožnosti napovedovanja nad a REST API.
Izdelava polnega API-ja REST
Vrnite se v datoteko ml_model.py in počistite vse podatke. Predlagana plošča bo v bistvu enaka tisti, ki ste jo imeli prej, vendar bi morali začeti znova s prazno datoteko.
Tokrat boste določili samo eno končno točko, ki je tista, ki se uporablja za določitev vrste rože. IrisModel.predict species(), ki je bil deklariran v prejšnjem razdelku, pokliče ta končna točka za izvedbo napovedi.
Vrsta zahteve je druga velika sprememba. Za prenos parametrov v JSON namesto v URL-ju je priporočljivo, da pri uporabi uporabite POST strojno učenje API-ji.
Zgornji stavek je morda zvenel kot bedarija, če ste podatkovni znanstvenik, ampak to je v redu. Za načrtovanje in uvajanje modelov ni nujno, da ste strokovnjak za zahteve HTTP in API-je REST.
Nalog za ml model.py je malo in enostavnih:
- Iz predhodno ustvarjene datoteke jaymlmodel.py morate uvoziti naslednje: uvicorn, FastAPI, IrisModel in IrisSpecies.
- Ustvarite primerke FastAPI in IrisModel.
- Deklarirajte funkcijo na https://127.0.0.1:8000/predict, da naredite napovedi.
- Metoda IrisModel.predict species() prejme objekt tipa IrisSpecies, ga pretvori v slovar in ga nato vrne. Donosi so pričakovani razred in predvidena verjetnost.
- Uporabite uvicorn za izvedbo API-ja.
Še enkrat, tukaj je celotna koda datoteke skupaj s komentarji:
To je vse, kar morate storiti. V naslednjem koraku preizkusimo API.
Testiranje API-ja
Za izvedbo API-ja znova vnesite naslednjo vrstico v terminal: uvicorn ml_model:app –reload
Stran z dokumentacijo se prikaže tako:
To je to za danes. V delu za tem pa zaključimo.
zaključek
Danes ste se naučili, kaj je FastAPI in kako ga uporabljati, na preprostem primeru API-ja in preprostem primeru strojnega učenja. Naučili ste se tudi, kako ustvariti in si ogledati dokumentacijo API-ja ter kako jo preizkusiti.
To je veliko za en kos, zato ne bodite presenečeni, če bo za pravilno razumevanje potrebnih nekaj branj.
Veselo kodiranje.
Pustite Odgovori