Chimodzi mwa zochitikazo ndikupanga chitsanzo chophunzirira makina. Iyenera kugwiritsidwa ntchito mdziko lenileni komanso kupezeka kwa ogula ndi opanga.
Njira yosavuta komanso yotchuka kwambiri yotumizira zitsanzo zamakina ophunzirira ndikuzitsekera mu REST API.
Ndi laibulale yotchuka yotchedwa FastAPI, ndizomwe tikwaniritse lero.
Koma, ndi chiyani FastAPI?
Tsamba la FastAPI Python linapangidwa kuchokera pansi kuti ligwiritse ntchito luso lamakono la Python.
Kwa asynchronous, kulumikizana nthawi imodzi ndi makasitomala, imatsatira muyezo wa ASGI, pomwe imatha kugwiritsa ntchito WSGI.
Ma endpoints ndi njira zonse zingagwiritse ntchito ntchito za async. Kuphatikiza apo, FastAPI imathandizira kupanga mapulogalamu apaintaneti mu code ya Python yolembedwa, yoyera, yamakono.
Mlandu waukulu wa FastAPI ndi, monga momwe dzinalo likusonyezera, kupanga mapeto a API.
Kugwiritsa ntchito mulingo wa OpenAPI, womwe umaphatikizapo Swagger UI yolumikizana, kapena kupereka data ya Python mtanthauzira mawu monga JSON ndi njira zosavuta zochitira izi. Komabe, FastAPI si ya API yokha.
Itha kugwiritsidwa ntchito popereka masamba wamba pogwiritsa ntchito injini ya template ya Jinja2 ndikugwiritsa ntchito ma WebSockets, kuwonjezera pa chilichonse chomwe chimango cha intaneti chingachite.
M'nkhaniyi, tipanga njira yowongoka yophunzirira makina ndikugwiritsa ntchito FastAPI kuiyika. Tiyeni tiyambe.
Kuyika kwa FastAPI ndikupanga API yoyamba
Kuyika laibulale ndi seva ya ASGI ndikofunikira poyamba; mwina Uvuicorn kapena Hypercorn adzagwira ntchito. Zimagwira ntchito polowetsa lamulo ili mu Terminal:
Tsopano popeza API yapangidwa, mutha kugwiritsa ntchito code editor yomwe mumakonda ndikusakatula. Pangani script ya Python yotchedwa ml_model.py kuti muyambe. Ndinu olandiridwa kuti mupatse dzina lanu lina, koma chifukwa cha positiyi, nditchula fayiloyi ngati ml_model.py.
Kuti mupange API yowongoka yokhala ndi mathero awiri, muyenera kumaliza ntchito zotsatirazi:
- Lowetsani malaibulale a FastAPI ndi Uvicorn.
- Konzani chitsanzo cha kalasi ya FastAPI.
- Nenani njira yoyamba, yomwe, patsamba lolozera, imapanga chinthu chowongoka cha JSON.
- Nenani njira yachiwiri, yomwe imapereka chinthu chowongoka cha JSON chokhala ndi uthenga wokhazikika. Dzinali limatengedwa molunjika kuchokera ku URL (mwachitsanzo, https://127.0.0.1:8000/Jay).
- Gwiritsani ntchito Uvicorn kuyendetsa API.
Kukwaniritsa magawo asanuwa kukuwonetsedwa mu kachidindo kotsatirako. kupanga API yosavuta
Zonse zatheka! Tiyeni tiyambitse API yathu nthawi yomweyo. Tsegulani zenera la Terminal pafupi ndi fayilo ya ml model.py kuti mukwaniritse izi. Kenako, lowetsani zotsatirazi:
batani la Enter. Tisanapitirire, tiyeni titsutse mfundo imeneyi. Pulogalamu yoyamba imagwiritsa ntchito dzina la fayilo ya Python yokha, popanda kuwonjezera. Pulogalamu yachiwiri iyenera kukhala ndi dzina lofanana ndi chitsanzo chanu cha FastAPI.
Pogwiritsa ntchito -reload, mumauza API kuti mukufuna kuti iwonjezerenso mukasunga fayilo m'malo mongoyambira.
Tsopano yambitsani msakatuli ndikuyenda kupita ku https://127.0.0.1:8000; zotsatira zake ziyenera kuwoneka motere:
Tsopano mukumvetsa momwe mungapangire API yosavuta pogwiritsa ntchito FastAPI.
Kumanga ndi kuphunzitsa chitsanzo cha Machine Learning
Popanda kusonkhanitsa kapena kusanthula deta iliyonse, tidzangophunzitsa chitsanzo chosavuta. Izi sizikugwirizana ndi kutumizidwa kwa zitsanzo ndipo sizofunikira pamutu womwe uli nawo.
Chitsanzo chochokera pa dataset ya Iris chikhoza kukhazikitsidwa pogwiritsa ntchito zomwezo neural network unsembe njira.
Ndipo tichita izi: kukopera Iris dataset ndi kuphunzitsa chitsanzo. Izo sizikhala zophweka. Kuti muyambe, pangani fayilo yotchedwa jaysmlmodel.py.
M'menemo, muchita izi:
- Imports - Mufunika pandas, scikit-RandomForecastClassifier, phunzirani's pydantic's BaseModel (mupeza chifukwa chake mu sitepe yotsatira), ndi joblib yosungirako ndi kutsitsa zitsanzo.
- Fotokozerani gulu la IrisSpecies lomwe limachokera ku mtundu woyambira. Kalasi iyi ili ndi minda yokhayo yomwe ikufunika kulosera za mtundu umodzi wa maluwa (zambiri pagawo lotsatira)
- Pangani kalasi. IrisModel ndi chida chophunzitsira ndi kulosera zachitsanzo.
- Nenani njira yotchedwa _train model mkati mwa IrisModel. Amagwiritsidwa ntchito pophunzitsa zitsanzo pogwiritsa ntchito njira ya Random Forests. Chitsanzo chophunzitsidwa chimabwezeretsedwa ndi ndondomekoyi.
- Nenani zamoyo zomwe zanenedweratu zikugwira ntchito mkati mwa IrisModel. Amagwiritsidwa ntchito kulosera motengera zinthu 4 (miyezo ya maluwa). Zonse zoneneratu (mitundu yamaluwa) ndi mwayi wolosera zimabwezedwa ndi ndondomeko.
- Sinthani omanga mu IrisModel kuti akweze dataset ya Iris ndikuphunzitsa chitsanzo ngati sichikupezeka pafoda. Izi zimathetsa vuto la kuphunzitsa mobwerezabwereza zitsanzo zatsopano. Laibulale ya joblib imagwiritsidwa ntchito potsitsa ndi kusunga.
Nayi code yonse:
Ndikukhulupirira kuti mndandanda womwe uli pamwambapa ndi ndemanga zidapangitsa kuti zikhale zosavuta kuzimva ngakhale izi zinali zochulukirapo kuti mupange. Tsopano popeza chitsanzochi chapangidwa, tiyeni tifalitse luso lake lolosera pa a REST API.
Kupanga REST API yonse
Bwererani ku fayilo ya ml_model.py ndikuchotsani zonse. Boilerplate idzakhala yofanana ndi yomwe mudali nayo kale, koma tiyenera kuyamba ndi fayilo yopanda kanthu.
Mungotanthauzira pomalizira nthawiyi, yomwe ndi yomwe imagwiritsidwa ntchito kudziwa mtundu wa duwa. Mitundu ya IrisModel.predict (), yomwe idalengezedwa m'gawo lapitalo, imatchedwa ndi mapeto awa kuti akwaniritse zoloserazo.
Mtundu wa pempho ndikusintha kwina kwakukulu. Kuti mutumize magawo mu JSON m'malo mwa URL, tikulimbikitsidwa kuti mugwiritse ntchito POST mukamagwiritsa ntchito makina kuphunzira API.
Chiganizo pamwambapa chikhoza kumveka ngati gibberish ngati ndinu a wasayansi wazidziwitso, koma zili bwino. Kuti mupange ndi kutumiza zitsanzo, munthu safunikira kukhala katswiri pazopempha za HTTP ndi ma REST API.
Ntchito za ml model.py ndi zochepa komanso zosavuta:
- Muyenera kuitanitsa zotsatirazi kuchokera pa fayilo yomwe idapangidwa kale ya jaymlmodel.py: uvicorn, FastAPI, IrisModel, ndi IrisSpecies.
- Pangani zochitika za FastAPI ndi IrisModel.
- Lengezani ntchito pa https://127.0.0.1:8000/predict kuti mulosere.
- Njira ya IrisModel.predict species() imalandira chinthu chamtundu wa IrisSpecies, ndikuchisintha kukhala dikishonale, ndikuchibwezeretsanso. Kubweza ndi gulu lomwe likuyembekezeredwa komanso mwayi wonenedweratu.
- Gwiritsani ntchito uvicorn kuti mugwiritse ntchito API.
Apanso, nayi nambala yonse ya fayilo limodzi ndi ndemanga zake:
Ndizo zonse zomwe muyenera kuchita. Mu sitepe yotsatira, tiyeni tiyese API.
Kuyesa API
Lowetsaninso mzere wotsatirawu mu Terminal kuti mugwiritse ntchito API: uvicorn ml_model:app -reload
Umu ndi momwe tsamba lazolemba limawonekera:
Ndiye lero. Mu gawo lotsatira izi, tiyeni titsirize.
Kutsiliza
Lero, mwaphunzira zomwe FastAPI ndi momwe mungagwiritsire ntchito, pogwiritsa ntchito chitsanzo chosavuta cha API komanso chitsanzo chosavuta chophunzirira makina. Mwaphunziranso kupanga ndikuwona zolemba za API, komanso momwe mungayesere.
Ndizochuluka kwa chidutswa chimodzi, kotero musadabwe ngati pamafunika kuwerenga pang'ono kuti mumvetse bwino.
Wodala coding.
Siyani Mumakonda