Ingxenye eyodwa yalesi simo ukudala imodeli yokufunda yomshini. Kufanele isetshenziswe emhlabeni wangempela futhi itholakale kubathengi nabathuthukisi.
Indlela elula nedume kakhulu yokuphakela amamodeli okufunda ngomshini ukuwafaka ku-REST API.
Ngomtapo wolwazi odumile obizwa nge-FastAPI, yilokho kanye esizokufeza namuhla.
Kodwa, yini FastAPI?
Uhlaka lwewebhu lwe-FastAPI Python lwadalwa kusukela phansi ukuze lusebenzise amakhono e-Contemporary Python.
Ngokuxhumana okungavumelaniyo, okuhambisanayo namakhasimende, inamathela kuzinga le-ASGI, kuyilapho ikwazi nokusebenzisa i-WSGI.
Amaphoyinti okugcina nemizila kokubili kungasebenzisa imisebenzi ye-async. Ukwengeza, i-FastAPI inika amandla ukudalwa okukhiqizayo kwezinhlelo zokusebenza zewebhu ngekhodi yePython ehlotshisiwe, ehlanzekile, yesimanje.
Icala lokusetshenziswa eliyinhloko le-FastAPI, njengoba igama liphakamisa, ukudala ama-API endpoints.
Ukusebenzisa izinga le-OpenAPI, elihlanganisa i-Swagger UI esebenzisanayo, noma ukuhlinzeka ngedatha yesichazamazwi se-Python njenge-JSON zombili izindlela ezilula zokufeza lokhu. Kodwa-ke, i-FastAPI akuyona eyama-API kuphela.
Ingasetshenziselwa ukunikeza amakhasi ewebhu ajwayelekile kusetshenziswa injini yesifanekiso ye-Jinja2 kanye nokunikeza izinhlelo zokusebenza ezisebenzisa i-WebSockets, ngaphezu kwakho konke okunye uhlaka lwewebhu olungayenza.
Kulesi sihloko, sizothuthukisa imodeli yokufunda yomshini eqondile bese sisebenzisa i-FastAPI ukuyiphakela. Ake siqale.
Ukufakwa kwe-FastAPI nokudalwa kwe-API yokuqala
Ukufaka umtapo wolwazi kanye neseva ye-ASGI kuyadingeka kuqala; kungaba i-Uvuicorn noma iHypercorn izosebenza. Isebenza ngokufaka umyalo olandelayo kuTheminali:
Manje njengoba i-API isidaliwe, ungasebenzisa umhleli wekhodi owuthandayo futhi upheqa ngayo. Dala umbhalo wePython obizwa ngokuthi ml_model.py ukuze uqalise. Wamukelekile ukunikeza elakho igama elehlukile, kodwa ngenxa yalokhu okuthunyelwe, ngizobhekisela kuleli fayela ngokuthi ml_model.py.
Ukuze udale i-API eqondile enamaphuzu amabili okugcina, kufanele uqedele le misebenzi elandelayo:
- Ngenisa imitapo yolwazi ye-FastAPI ne-Uvicorn.
- Setha isibonelo sekilasi le-FastAPI.
- Memezela umzila wokuqala, othi, ekhasini lenkomba, ukhiqize into eqondile ye-JSON.
- Memezela umzila wesibili, ohlinzeka ngento eqondile ye-JSON ngomlayezo owenziwe ngokwezifiso. Ipharamitha yegama ithathwe ngokuqondile ku-URL (ngokwesibonelo, https://127.0.0.1:8000/Jay).
- Sebenzisa i-Uvicorn ukuze usebenzise i-API.
Ukusebenzisa lezi zigaba ezinhlanu kukhonjiswe encanyana elandelayo yekhodi okungukuthi. ukudala i-API elula
Konke kwenziwe! Masiqalise i-API yethu ngokushesha. Vula iwindi letheminali eduze kwefayela le-ml model.py ukuze ufeze lokhu. Okulandelayo, faka okulandelayo:
ukhiye u-Enter. Ngaphambi kokuba siqhubekele phambili, ake siphikisane nalokhu kugomela. Uhlelo lokusebenza lokuqala lusebenzisa igama lefayela lePython kuphela, ngaphandle kwesandiso. Uhlelo lokusebenza lwesibili kufanele libe negama elifanayo njengesibonelo sakho se-FastAPI.
Ngokusebenzisa -reload, utshela i-API ukuthi ufuna ukuthi ilayishe kabusha ngokuzenzakalelayo lapho ulondoloza ifayela kunokuba iqale ekuqaleni.
Manje vula isiphequluli bese uzulazulela ku-https://127.0.0.1:8000; umphumela kufanele uvele kanje:
Manje usuyaqonda ukuthi ungayenza kanjani i-API elula usebenzisa i-FastAPI.
Ukwakha nokuqeqesha imodeli Yokufunda Ngomshini
Ngaphandle kokuqoqa noma ukuhlaziya noma iyiphi idatha, sizovele siqeqeshe imodeli elula. Lezi azihlobene nokuthunyelwa kwamamodeli futhi azibalulekile esihlokweni okukhulunywa ngaso.
Imodeli esuselwe kudathasethi ye-Iris ingafakwa kusetshenziswa okufanayo inethiwekhi ye-neural indlela yokufaka.
Futhi sizokwenza lokho kanye: download the Idatha ye-Iris futhi uqeqeshe imodeli. Lokho ngeke kube lula. Ukuze uqale, yenza ifayela elinegama elithi jaysmlmodel.py.
Kuyo, uzokwenza okulandelayo:
- Okungeniswayo - Uzodinga ama-panda, i-scikit-RandomForecastClassifier, i-BaseModel ye-pydantic (uzothola ukuthi kungani esinyathelweni esilandelayo), kanye nomsebenzilib wokugcina nokulayisha amamodeli.
- Memezela ikilasi le-IrisSpecies elizuza njengefa kumodeli yesisekelo. Leli klasi liqukethe kuphela izinkambu ezidingekayo ukuze kubikezelwe uhlobo lwembali eyodwa (ngaphezulu kwalokho esigabeni esilandelayo)
- Dala ikilasi. I-IrisModel iyimodeli yokuqeqeshwa kanye nethuluzi lokubikezela.
- Memezela indlela ebizwa ngokuthi _train model ngaphakathi kwe-IrisModel. Isetshenziselwa ukuqeqesha amamodeli kusetshenziswa indlela ye-Random Forests. Imodeli eqeqeshiwe ibuyiswa ngenqubo.
- Memezela umsebenzi wezinhlobo ezibikezelwe ngaphakathi kwe-IrisModel. Isetshenziselwa ukubikezela ngokusekelwe ezintweni ezingu-4 zokufaka (izilinganiso zembali). Kokubili isibikezelo (izinhlobo zezimbali) kanye namathuba okuqagela kubuyiselwa nge-algorithm.
- Shintsha umakhi ku-IrisModel ukuze ilayishe idathasethi ye-Iris futhi iqeqeshe imodeli uma ingekho kufolda. Lokhu kuxazulula inkinga yokuqeqesha ngokuphindaphindiwe amamodeli amasha. Umtapo wezincwadi we-joblib usetshenziselwa ukulayisha nokugcina amamodeli.
Nansi yonke ikhodi:
Ngethemba ukuthi uhlu olungenhla kanye namazwana akwenze kwaba lula ukuliqonda nakuba lokhu kwakuyinani elikhulu lekhodi ongalidala. Manje njengoba le modeli isithuthukisiwe, ake sishicilele amandla ayo okuqagela nge-a I-REST API.
Ukwakha i-REST API ephelele
Buyela kufayela le-ml_model.py bese ususa yonke idatha. I-boilerplate empeleni izofana naleyo owawunayo ngaphambili, kodwa kufanele siqale kabusha ngefayela elingenalutho.
Uzochaza isiphetho esisodwa kuphela ngalesi sikhathi, okuyisona esisetshenziswa ukunquma uhlobo lwembali. Uhlobo lwe-IrisModel.predict(), olwamenyezelwa esigabeni esandulele, lubizwa yilo mkhakha wokugcina ukuze kwenziwe ukubikezela.
Uhlobo lwesicelo olunye ushintsho olukhulu. Ukuze udlulise amapharamitha ku-JSON kune-URL, kuyanconywa ukuthi usebenzise i-POST uma usebenzisa ukufunda imishini Ama-API.
Umusho ongenhla ungahle uzwakale njengokukhuluma nje uma u-a usosayensi wedatha, kodwa kulungile. Ukuze udizayine futhi usebenzise amamodeli, umuntu akudingekile ukuthi abe uchwepheshe wezicelo ze-HTTP nama-REST API.
Imisebenzi ye-ml model.py mincane futhi iqondile:
- Kufanele ungenise okulandelayo kusuka efayeleni le-jaymlmodel.py elakhiwe ngaphambilini: uvicorn, FastAPI, IrisModel, kanye ne-IrisSpecies.
- Dala izimo ze-FastAPI ne-IrisModel.
- Memezela umsebenzi kokuthi https://127.0.0.1:8000/predict ukuze wenze izibikezelo.
- Indlela ye-IrisModel.predict species() ithola into yohlobo lwe-IrisSpecies, iyiguqule ibe kusichazamazwi, bese iyibuyisela. Ukubuyisela kuyisigaba esilindelekile kanye namathuba abikezelwe.
- Sebenzisa i-uvicorn ukuze usebenzise i-API.
Futhi, nansi yonke ikhodi yefayela kanye namazwana alo:
Yilokho kuphela okudingeka ukwenze. Esinyathelweni esilandelayo, ake sihlole i-API.
Ihlola i-API
Faka kabusha umugqa olandelayo kuTheminali ukuze usebenzise i-API: uvicorn ml_model:app -reload
Ikhasi lamadokhumenti livela kanje:
Yilokho okwanamuhla. Engxenyeni engemva kwalokhu, ake siphethe.
Isiphetho
Namuhla, ufunde ukuthi iyini i-FastAPI nokuthi ungayisebenzisa kanjani, usebenzisa kokubili isibonelo esilula se-API kanye nesibonelo esilula sokufunda umshini. Ufunde nokuthi ungawakha kanjani futhi ubuke amadokhumenti e-API, kanye nendlela yokuwahlola.
Lokho kuningi ngesiqephu esisodwa, ngakho-ke ungamangali uma kuthatha ukufundwa okumbalwa ukuqonda kahle.
Ukubhala amakhodi okujabulisayo.
shiya impendulo