Jedan aspekt scenarija je stvaranje modela strojnog 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 njihovo uključivanje u REST API.
S popularnom bibliotekom koja se zove FastAPI, to je upravo ono što ćemo danas postići.
Ali, što je FastAPI?
Web okvir FastAPI Python stvoren je od temelja kako bi se iskoristile suvremene mogućnosti Pythona.
Za asinkronu, konkurentnu komunikaciju s klijentima, pridržava se ASGI standarda, a također je sposoban koristiti WSGI.
Krajnje točke i rute mogu koristiti asinkrone funkcije. Dodatno, FastAPI omogućuje produktivnu izradu web-aplikacija u tipiziranom, čistom, suvremenom Python kodu.
Glavni slučaj upotrebe FastAPI-ja je, kao što ime sugerira, stvaranje API krajnjih točaka.
Korištenje standarda OpenAPI, koji uključuje interaktivno korisničko sučelje Swagger, ili pružanje podataka Python rječnika kao JSON su jednostavni načini da se to postigne. Međutim, FastAPI nije samo za API-je.
Može se koristiti za nuđenje standardnih web stranica pomoću Jinja2 predložaka i za posluživanje aplikacija koje koriste WebSockets, uz gotovo sve ostalo što web okvir može učiniti.
U ovom ćemo članku razviti jednostavan model strojnog učenja i zatim upotrijebiti FastAPI za njegovu implementaciju. Započnimo.
Instalacija FastAPI-ja i izrada prvog API-ja
Prvo je potrebno instalirati biblioteku i ASGI poslužitelj; ili Uvuicorn ili Hypercorn će raditi. Radi unošenjem sljedeće naredbe u terminal:
Sada kada je API stvoren, možete koristiti svoj željeni uređivač koda i pregledavati ga. Za početak izradite Python skriptu pod nazivom ml_model.py. Slobodno možete dati svome drugačije ime, ali za potrebe ovog posta ovu ću datoteku nazivati ml_model.py.
Za izradu jednostavnog API-ja s dvije krajnje točke morate izvršiti sljedeće zadatke:
- Uvezite biblioteke FastAPI i Uvicorn.
- Postavite instancu klase FastAPI.
- Deklarirajte prvu rutu, koja na stranici indeksa proizvodi jednostavan JSON objekt.
- Deklarirajte drugu rutu, koja pruža jednostavan JSON objekt s prilagođenom porukom. Parametar imena preuzet je izravno iz URL-a (na primjer, https://127.0.0.1:8000/Jay).
- Upotrijebite Uvicorn za pokretanje API-ja.
Implementacija ovih pet faza prikazana je u sljedećem dijelu koda, tj. stvaranje jednostavnog API-ja
Gotovo! Odmah pokrenimo naš API. Otvorite prozor terminala pored datoteke ml model.py da biste to postigli. Zatim unesite sljedeće:
tipku Enter. Prije nego krenemo dalje, raskrinkajmo ovu tvrdnju. Prva aplikacija koristi samo naziv Python datoteke, bez ekstenzije. Druga aplikacija mora imati isti naziv kao vaša instanca FastAPI.
Korištenjem -reload kažete API-ju da želite da se automatski ponovno učitava kada spremite datoteku, a ne da počinje ispočetka.
Sada pokrenite preglednik i idite na https://127.0.0.1:8000; rezultat bi trebao biti sljedeći:
Sada razumijete kako stvoriti jednostavan API koristeći FastAPI.
Izgradnja i obuka modela strojnog učenja
Bez prikupljanja ili analiziranja podataka, samo ćemo trenirati jednostavan model. Oni nisu povezani s implementacijom modela i nisu bitni za temu o kojoj se radi.
Model temeljen na skupu podataka Iris može se instalirati koristeći isti neuronska mreža način ugradnje.
I učinit ćemo upravo to: preuzeti Skup podataka šarenice i osposobiti model. To neće biti jednostavno. Za početak napravite datoteku pod nazivom jaysmlmodel.py.
U njemu ćete učiniti sljedeće:
- Uvozi — Trebat će vam pandas, scikit-RandomForecastClassifier, learn's pydantic's BaseModel (otkrit ćete zašto u sljedećem koraku) i joblib za pohranu i učitavanje modela.
- Deklarirajte klasu IrisSpecies koja nasljeđuje osnovni model. Ova klasa sadrži samo polja potrebna za predviđanje jedne cvjetne vrste (više o tome u sljedećem odjeljku)
- Stvorite razred. IrisModel je alat za obuku modela i predviđanje.
- Deklarirajte metodu pod nazivom _train model unutar IrisModel. Koristi se za obuku modela pomoću tehnike nasumičnih šuma. Postupkom se vraća istrenirani model.
- Deklarirajte funkciju predviđene vrste unutar IrisModela. Koristi se za predviđanje na temelju 4 ulazna faktora (mjerenja cvijeta). Algoritam vraća i prognozu (vrsta cvijeća) i vjerojatnost predviđanja.
- Promijenite konstruktor u IrisModelu tako da učitava skup podataka Iris i obučava model ako nedostaje u mapi. Ovo rješava problem stalnog uvježbavanja novih modela. Knjižnica joblib koristi se za učitavanje i spremanje modela.
Ovdje je cijeli kod:
Nadam se da su gornji popis i komentari olakšali razumijevanje iako je ovo bila pozamašna količina koda za izradu. Sada kada je ovaj model razvijen, objavimo njegove mogućnosti predviđanja preko a REST API.
Izrada potpunog REST API-ja
Vratite se na datoteku ml_model.py i obrišite sve podatke. Predložak će biti u biti isti kao i prije, ali bismo trebali početi ispočetka s praznom datotekom.
Ovaj put ćete definirati samo jednu krajnju točku, a to je ona koja se koristi za određivanje vrste cvijeta. IrisModel.predict species(), koji je deklariran u prethodnom odjeljku, poziva ova krajnja točka da izvrši predviđanje.
Vrsta zahtjeva je druga velika promjena. Kako biste prenijeli parametre u JSON-u, a ne u URL-u, preporučuje se da koristite POST kada koristite stroj za učenje Apis.
Gornja rečenica možda je zvučala kao besmislica ako ste znanstvenik 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 malobrojni i jednostavni:
- Morate uvesti sljedeće iz prethodno stvorene datoteke jaymlmodel.py: uvicorn, FastAPI, IrisModel i IrisSpecies.
- Stvorite instance FastAPI i IrisModel.
- Deklarirajte funkciju na https://127.0.0.1:8000/predict da napravite predviđanja.
- Metoda IrisModel.predict species() prima objekt tipa IrisSpecies, pretvara ga u rječnik i zatim ga vraća. Prinosi su očekivana klasa i predviđena vjerojatnost.
- Koristite uvicorn za izvođenje API-ja.
Opet, ovdje je cijeli kod datoteke zajedno s komentarima:
To je sve što trebate učiniti. U sljedećem koraku testirajmo API.
Testiranje API-ja
Ponovno unesite sljedeći redak u Terminal da biste izvršili API: uvicorn ml_model:app –reload
Ovako se pojavljuje stranica s dokumentacijom:
To je to za danas. U dijelu nakon ovoga, da zaključimo.
Zaključak
Danas ste naučili što je FastAPI i kako ga koristiti, koristeći i jednostavan API primjer i jednostavan primjer strojnog učenja. Također ste naučili kako izraditi i pregledati API dokumentaciju, kao i kako je testirati.
To je puno za jedan komad, pa se nemojte iznenaditi ako je potrebno nekoliko čitanja da biste ga ispravno razumjeli.
Sretno kodiranje.
Ostavi odgovor