Jedan aspekt scenarija je kreiranje modela mašinskog učenja. Mora biti upotrebljiv u stvarnom svijetu i dostupan potrošačima i programerima.
Najjednostavniji i najpopularniji način za implementaciju modela strojnog učenja je da ih zatvorite u REST API.
Sa popularnom bibliotekom pod nazivom FastAPI, to je upravo ono što ćemo danas postići.
Ali šta je FastAPI?
FastAPI Python web framework kreiran je od temelja kako bi se iskoristile prednosti savremenih Python mogućnosti.
Za asinhronu, istovremenu komunikaciju sa klijentima, pridržava se ASGI standarda, a može koristiti i WSGI.
Krajnje točke i rute mogu koristiti asinhronizirane funkcije. Dodatno, FastAPI omogućava produktivno kreiranje web aplikacija u čistom, suvremenom Python kodu s nagovještajem tipova.
Glavni slučaj upotrebe FastAPI-ja je, kao što ime govori, kreiranje API krajnjih tačaka.
Korištenje OpenAPI standarda, koji uključuje interaktivni Swagger UI, ili pružanje podataka Python rječnika kao JSON su jednostavna načina da se to postigne. Međutim, FastAPI nije samo za API-je.
Može se koristiti za ponudu standardnih web stranica pomoću Jinja2 šablonskog mehanizma i za posluživanje aplikacija koje koriste WebSockets, pored gotovo svega ostalog što web framework može učiniti.
U ovom članku ćemo razviti jednostavan model strojnog učenja, a zatim ćemo koristiti FastAPI da ga implementiramo. Počnimo.
Instalacija FastAPI-ja i kreiranje prvog API-ja
Prvo je potrebna instalacija biblioteke i ASGI servera; ili Uvuicorn ili Hypercorn će raditi. Radi unošenjem sljedeće naredbe u terminal:
Sada kada je API kreiran, možete koristiti željeni uređivač koda i pretraživati ga. Kreirajte Python skriptu pod nazivom ml_model.py da započnete. Slobodno možete da date svom drugačijem nazivu, ali radi ovog posta ja ću ovu datoteku zvati ml_model.py.
Da biste kreirali jednostavan API s dvije krajnje točke, morate izvršiti sljedeće zadatke:
- Uvezite FastAPI i Uvicorn biblioteke.
- Postavite instancu klase FastAPI.
- Deklarirajte prvu rutu, koja na indeksnoj stranici proizvodi jednostavan JSON objekat.
- Deklarirajte drugu rutu, koja pruža jednostavan JSON objekat sa prilagođenom porukom. Parametar imena se uzima direktno iz URL-a (na primjer, https://127.0.0.1:8000/Jay).
- Koristite Uvicorn za pokretanje API-ja.
Implementacija ovih pet faza je prikazana u sljedećem bitu koda, tj. kreiranje jednostavnog API-ja
Sve završeno! Pokrenimo naš API odmah. Otvorite prozor terminala pored datoteke ml model.py da biste to postigli. Zatim unesite sljedeće:
taster Enter. Prije nego krenemo dalje, hajde da opovrgnemo ovu tvrdnju. Prva aplikacija koristi samo ime Python datoteke, bez ekstenzije. Druga aplikacija mora imati isto ime kao vaša FastAPI instanca.
Koristeći -reload, kažete API-ju da želite da se automatski ponovo učitava kada snimite datoteku, a ne da počne od nule.
Sada pokrenite pretraživač i idite na https://127.0.0.1:8000; ishod bi trebao izgledati kako slijedi:
Sada razumete kako da kreirate jednostavan API koristeći FastAPI.
Izgradnja i obuka modela mašinskog učenja
Bez prikupljanja ili analize bilo kakvih podataka, mi ćemo samo trenirati jednostavan model. Oni nisu povezani s primjenom modela i nisu bitni za predmetnu temu.
Model baziran na skupu podataka Iris može se instalirati koristeći isti neuronska mreža način instalacije.
A mi ćemo učiniti upravo to: preuzmite Skup podataka o šarenici i obučiti model. To neće biti jednostavno. Za početak napravite datoteku pod nazivom jaysmlmodel.py.
U njemu ćete uraditi sljedeće:
- Imports — Trebat će vam pande, scikit-RandomForecastClassifier, Learn's pydantic BaseModel (u sljedećem koraku ćete otkriti zašto) i joblib za pohranjivanje i učitavanje modela.
- Deklarirajte klasu IrisSpecies koja nasljeđuje od osnovnog modela. Ova klasa sadrži samo polja potrebna za predviđanje jedne vrste cvijeća (više o tome u sljedećem odjeljku)
- Kreirajte klasu. IrisModel je alat za obuku i predviđanje modela.
- Deklarirajte metodu pod nazivom _train model unutar IrisModel-a. Koristi se za obuku modela koristeći tehniku Random Forests. Obučeni model se vraća procedurom.
- Deklarirajte predviđenu funkciju vrste unutar IrisModela. Koristi se za predviđanje na osnovu 4 ulazna faktora (mjera cvijeta). Algoritam vraća i prognozu (vrsta cvijeća) i vjerovatnoću predviđanja.
- Promijenite konstruktor u IrisModel-u tako da učita Iris skup podataka i trenira model ako nedostaje u mapi. Ovo rješava problem stalnog obučavanja novih modela. Joblib biblioteka se koristi za učitavanje i spremanje modela.
Evo cijelog koda:
Nadam se da je gornja lista i komentari olakšali razumijevanje iako je ovo bila velika količina koda za kreiranje. Sada kada je ovaj model razvijen, hajde da objavimo njegove mogućnosti predviđanja preko a REST API.
Izrada punog REST API-ja
Vratite se u datoteku ml_model.py i obrišite sve podatke. Šablon će biti u suštini isti kao što ste imali ranije, ali bi trebali početi ispočetka s praznim fajlom.
Ovaj put ćete definirati samo jednu krajnju tačku, a to je ona koja se koristi za određivanje vrste cvijeta. IrisModel.predict species(), koji je deklarisan u prethodnom odeljku, poziva se od strane ove krajnje tačke da izvrši predviđanje.
Tip zahtjeva je druga velika promjena. Da biste prenijeli parametre u JSON-u, a ne u URL-u, preporučuje se da koristite POST prilikom korištenja mašinsko učenje API-ji.
Gornja rečenica je možda zvučala kao besmislica ako ste a naučnik podataka, ali to je u redu. Da biste dizajnirali i implementirali modele, ne morate nužno biti stručnjak za HTTP zahtjeve i REST API-je.
Zadaci za ml model.py su nekoliko i jednostavni:
- Iz prethodno kreirane datoteke jaymlmodel.py morate uvesti sljedeće: uvicorn, FastAPI, IrisModel i IrisSpecies.
- Kreirajte instance FastAPI i IrisModel.
- Deklarirajte funkciju na https://127.0.0.1:8000/predict za predviđanje.
- Metoda IrisModel.predict species() prima objekat tipa IrisSpecies, transformiše ga u rečnik, a zatim ga vraća. Povrati su očekivana klasa i predviđena vjerovatnoća.
- Koristite uvicorn da izvršite API.
Još jednom, ovdje je cijeli kod datoteke zajedno sa komentarima:
To je sve što treba da uradite. U sljedećem koraku testirajmo API.
Testiranje API-ja
Ponovo unesite sljedeći red u Terminal da izvršite API: uvicorn ml_model:app –reload
Ovako se pojavljuje stranica sa dokumentacijom:
To je to za danas. U dijelu nakon ovoga, da zaključimo.
zaključak
Danas ste naučili šta je FastAPI i kako ga koristiti, koristeći i jednostavan primjer API-ja i jednostavan primjer strojnog učenja. Takođe ste naučili kako da kreirate i pregledate API dokumentaciju, kao i kako da je testirate.
To je mnogo za jedan komad, pa se nemojte iznenaditi ako je potrebno nekoliko čitanja da biste pravilno razumjeli.
Sretno kodiranje.
Ostavite odgovor