Innholdsfortegnelse[Gjemme seg][Forestilling]
Et aspekt ved scenariet er å lage en maskinlæringsmodell. Den må være brukbar i den virkelige verden og tilgjengelig for forbrukere og utviklere.
Den enkleste og mest populære måten å distribuere maskinlæringsmodeller på er å legge dem inn i en REST API.
Med et populært bibliotek kalt FastAPI, er det akkurat det vi vil oppnå i dag.
Men, hva er FastAPI?
FastAPI Python-nettrammeverket ble laget fra grunnen av for å dra nytte av moderne Python-funksjoner.
For asynkron, samtidig kommunikasjon med klienter, følger den ASGI-standarden, mens den også er i stand til å bruke WSGI.
Endepunkter og ruter kan begge bruke asynkrone funksjoner. I tillegg muliggjør FastAPI produktiv oppretting av nettapper i typeantydet, ren, moderne Python-kode.
FastAPIs viktigste brukstilfelle er, som navnet antyder, å lage API-endepunkter.
Å bruke OpenAPI-standarden, som inkluderer et interaktivt Swagger-grensesnitt, eller å gi Python-ordbokdata som JSON er begge enkle måter å oppnå dette på. FastAPI er imidlertid ikke bare for APIer.
Den kan brukes til å tilby standard nettsider ved hjelp av Jinja2-malmotoren og til å betjene apper som bruker WebSockets, i tillegg til stort sett alt annet et nettrammeverk kan gjøre.
I denne artikkelen vil vi utvikle en enkel maskinlæringsmodell og deretter bruke FastAPI til å distribuere den. La oss begynne.
Installasjon av FastAPI og opprettelse av første API
Installering av biblioteket og en ASGI-server kreves først; enten Uvuicorn eller Hypercorn vil fungere. Det fungerer ved å skrive inn følgende kommando i terminalen:
Nå som API-en er opprettet, kan du bruke din foretrukne kodeeditor og bla gjennom den. Lag et Python-skript kalt ml_model.py for å komme i gang. Du må gjerne gi ditt et annet navn, men av hensyn til dette innlegget vil jeg referere til denne filen som ml_model.py.
For å lage en enkel API med to endepunkter, må du fullføre følgende oppgaver:
- Importer FastAPI- og Uvicorn-bibliotekene.
- Sett opp en FastAPI-klasseinstans.
- Deklarer den første ruten, som på indekssiden produserer et enkelt JSON-objekt.
- Deklarer den andre ruten, som gir et enkelt JSON-objekt med en tilpasset melding. Navneparameteren er tatt rett fra URL-en (for eksempel https://127.0.0.1:8000/Jay).
- Bruk Uvicorn til å kjøre API.
Implementering av disse fem trinnene vises i følgende kodebit, dvs. lage et enkelt API
Ferdig! La oss starte vår API umiddelbart. Åpne et terminalvindu ved siden av filen ml model.py for å gjøre dette. Deretter skriver du inn følgende:
Enter-tasten. Før vi går videre, la oss avkrefte denne påstanden. Den første appen bruker Python-filnavnet alene, uten utvidelsen. Den andre appen må ha samme navn som FastAPI-forekomsten.
Ved å bruke -reload forteller du APIen at du vil at den automatisk skal lastes inn på nytt når du lagrer filen i stedet for å begynne fra bunnen av.
Start nå en nettleser og naviger til https://127.0.0.1:8000; resultatet skal se ut som følger:
Du forstår nå hvordan du lager et enkelt API ved hjelp av FastAPI.
Bygging og opplæring av Machine Learning-modellen
Uten å samle inn eller analysere noen data, trener vi bare en enkel modell. Disse er ikke relatert til distribusjon av modeller og er ikke avgjørende for emnet som er foreløpig.
En modell basert på Iris-datasettet kan installeres ved å bruke det samme nevrale nettverket installasjonsmetode.
Og vi gjør nettopp det: last ned Iris datasett og trene modellen. Det vil ikke være enkelt. For å begynne, lag en fil som heter jaysmlmodel.py.
I den skal du gjøre følgende:
- Importer — Du trenger pandaer, scikit-RandomForecastClassifier, Lær's pydantics BaseModel (du vil finne ut hvorfor i neste trinn), og joblib for lagring og lasting av modeller.
- Erklær en IrisSpecies-klasse som arver fra basismodellen. Denne klassen inneholder bare felt som trengs for å forutsi en enkelt blomsterart (mer om det i neste avsnitt)
- Lag en klasse. IrisModel er et modelltrenings- og prediksjonsverktøy.
- Deklarer en metode kalt _train-modell i IrisModel. Den brukes til å trene modeller ved hjelp av Random Forests-teknikken. Den trente modellen returneres av prosedyren.
- Erklær en forutsagt artsfunksjon inne i IrisModel. Den brukes til å prognoser basert på 4 innsatsfaktorer (blomstermålinger). Både prognosen (blomsterart) og prediksjonssannsynligheten returneres av algoritmen.
- Endre konstruktøren i IrisModel slik at den laster inn Iris-datasettet og trener modellen hvis den mangler i mappen. Dette løser problemet med gjentatt opplæring av nye modeller. Joblib-biblioteket brukes for modelllasting og lagring.
Her er hele koden:
Jeg håper listen ovenfor og kommentarene gjorde det enkelt å forstå selv om dette var en betydelig mengde kode å lage. Nå som denne modellen er utviklet, la oss publisere dens prediksjonsfunksjoner over en REST API.
Konstruerer et fullstendig REST API
Gå tilbake til filen ml_model.py og tøm alle dataene. Kjeleplaten vil i hovedsak være den samme som du hadde før, men vi bør starte på nytt med en tom fil.
Du vil bare definere ett endepunkt denne gangen, som er det som brukes til å bestemme typen blomst. IrisModel.predict species(), som ble deklarert i den foregående delen, kalles opp av dette endepunktet for å utføre prediksjonen.
Forespørselstypen er den andre store endringen. For å overføre parametere i JSON i stedet for URL, anbefales det at du bruker POST når du bruker maskinlæring APIer.
Setningen ovenfor kan ha hørtes ut som vrøvl hvis du er en dataforsker, men det er greit. For å designe og distribuere modeller trenger man ikke nødvendigvis å være ekspert på HTTP-forespørsler og REST APIer.
Oppgavene for ml model.py er få og enkle:
- Du må importere følgende fra den tidligere opprettede filen jaymlmodel.py: uvicorn, FastAPI, IrisModel og IrisSpecies.
- Lag forekomster av FastAPI og IrisModel.
- Erklær en funksjon på https://127.0.0.1:8000/predict for å lage spådommer.
- Metoden IrisModel.predict species() mottar et objekt av typen IrisSpecies, transformerer det til en ordbok og returnerer det deretter. Avkastning er forventet klasse og predikert sannsynlighet.
- Bruk uvicorn for å kjøre API.
Nok en gang, her er hele filens kode sammen med kommentarene:
Det er alt du trenger å gjøre. I neste trinn, la oss teste API.
Tester API
Skriv inn følgende linje på nytt i terminalen for å kjøre API: uvicorn ml_model:app –reload
Slik ser dokumentasjonssiden ut:
Så det var det for i dag. I delen etter dette, la oss konkludere.
konklusjonen
I dag lærte du hva FastAPI er og hvordan du bruker det, ved å bruke både et enkelt API-eksempel og et enkelt maskinlæringseksempel. Du har også lært hvordan du oppretter og viser API-dokumentasjon, samt hvordan du tester den.
Det er mye for et enkelt stykke, så ikke bli overrasket om det tar noen lesninger å forstå.
Glad koding.
Legg igjen en kommentar