Un agwedd ar y senario yw creu model dysgu peirianyddol. Rhaid iddo fod yn ddefnyddiadwy yn y byd go iawn ac ar gael i ddefnyddwyr a datblygwyr.
Y ffordd symlaf a mwyaf poblogaidd o ddefnyddio modelau dysgu peirianyddol yw eu hamgáu mewn API REST.
Gyda llyfrgell boblogaidd o'r enw FastAPI, dyna'n union y byddwn yn ei gyflawni heddiw.
Ond, beth yw FastAPI?
Crëwyd fframwaith gwe FastAPI Python o'r gwaelod i fyny i fanteisio ar alluoedd Python cyfoes.
Ar gyfer cyfathrebu asyncronig, cydamserol â chleientiaid, mae'n cadw at safon ASGI, tra ei fod hefyd yn gallu defnyddio WSGI.
Gall pwyntiau terfyn a llwybrau ddefnyddio swyddogaethau async. Yn ogystal, mae FastAPI yn galluogi creu apiau gwe yn gynhyrchiol mewn cod Python glân, cyfoes wedi'i awgrymu'n fath.
Prif achos defnydd FastAPI, fel y mae'r enw'n ei awgrymu, yw creu pwyntiau terfyn API.
Mae defnyddio safon OpenAPI, sy'n cynnwys UI Swagger rhyngweithiol, neu ddarparu data geiriadur Python fel JSON yn ffyrdd syml o gyflawni hyn. Fodd bynnag, nid yw FastAPI ar gyfer APIs yn unig.
Gellir ei ddefnyddio i gynnig tudalennau gwe safonol gan ddefnyddio peiriant templed Jinja2 ac i wasanaethu apiau gan ddefnyddio WebSockets, yn ogystal â bron popeth arall y gall fframwaith gwe ei wneud.
Yn yr erthygl hon, byddwn yn datblygu model dysgu peiriant syml ac yna'n defnyddio FastAPI i'w ddefnyddio. Gadewch i ni ddechrau.
Gosod FastAPI a chreu'r API cyntaf
Mae angen gosod y llyfrgell a gweinydd ASGI yn gyntaf; bydd naill ai Uvuicorn neu Hypercorn yn gweithio. Mae'n gweithio trwy fynd i mewn i'r gorchymyn canlynol yn y Terminal:
Nawr bod yr API wedi'i greu, gallwch ddefnyddio'ch golygydd cod dewisol a phori drwyddo. Creu sgript Python o'r enw ml_model.py i gychwyn arni. Mae croeso i chi roi enw gwahanol ar eich un chi, ond er mwyn y post hwn, byddaf yn cyfeirio at y ffeil hon fel ml_model.py.
I greu API syml gyda dau bwynt terfyn, rhaid i chi gwblhau'r tasgau canlynol:
- Mewnforio'r llyfrgelloedd FastAPI ac Uvicorn.
- Sefydlu enghraifft dosbarth FastAPI.
- Datgan y llwybr cyntaf, sydd, ar y dudalen mynegai, yn cynhyrchu gwrthrych JSON syml.
- Datgan yr ail lwybr, sy'n darparu gwrthrych JSON syml gyda neges wedi'i haddasu. Cymerir y paramedr enw yn syth o'r URL (er enghraifft, https://127.0.0.1:8000/Jay).
- Defnyddiwch Uvicorn i redeg yr API.
Dangosir gweithredu'r pum cam hyn yn y darn canlynol o god h.y. creu API syml
Pawb wedi'i wneud! Gadewch i ni lansio ein API ar unwaith. Agorwch ffenestr Terminal wrth ymyl y ffeil model.py ml i gyflawni hyn. Nesaf, nodwch y canlynol:
yr allwedd Enter. Cyn symud ymlaen, gadewch i ni chwalu'r honiad hwn. Mae'r ap cyntaf yn defnyddio enw ffeil Python yn unig, heb yr estyniad. Rhaid i'r ail ap gael yr un enw â'ch enghraifft FastAPI.
Trwy ddefnyddio -reload, rydych chi'n dweud wrth yr API eich bod chi am iddo ail-lwytho'n awtomatig pan fyddwch chi'n cadw'r ffeil yn hytrach na dechrau o'r dechrau.
Nawr lansio porwr a llywio i https://127.0.0.1:8000; dylai'r canlyniad ymddangos fel a ganlyn:
Rydych chi nawr yn deall sut i greu API syml gan ddefnyddio FastAPI.
Adeiladu a hyfforddi'r model Dysgu Peiriannau
Heb gasglu na dadansoddi unrhyw ddata, byddwn yn hyfforddi model syml yn unig. Nid yw'r rhain yn gysylltiedig â'r defnydd o fodelau ac nid ydynt yn hanfodol i'r pwnc dan sylw.
Gellir gosod model yn seiliedig ar set ddata Iris gan ddefnyddio'r un peth rhwydwaith nefol dull gosod.
A byddwn yn gwneud yn union hynny: llwytho i lawr y Set ddata Iris a hyfforddi'r model. Ni fydd hynny'n syml. I ddechrau, gwnewch ffeil o'r enw jaysmlmodel.py.
Ynddo, byddwch chi'n gwneud y canlynol:
- Mewnforion - Bydd angen pandas, scikit-RandomForecastClassifier, BaseModel dysgu pydantic (byddwch yn darganfod pam yn y cam canlynol), a joblib ar gyfer storio a llwytho modelau.
- Datgan dosbarth IrisRhywogaethau sy'n etifeddu o'r model sylfaenol. Dim ond caeau sydd eu hangen i ragweld rhywogaeth un blodyn sydd yn y dosbarth hwn (mwy am hynny yn yr adran nesaf)
- Creu dosbarth. Offeryn hyfforddi a rhagfynegi enghreifftiol yw IrisModel.
- Datgan dull o'r enw model _train o fewn IrisModel. Fe'i defnyddir i hyfforddi modelau gan ddefnyddio techneg Random Forests. Mae'r model hyfforddedig yn cael ei ddychwelyd gan y weithdrefn.
- Datgan swyddogaeth rhywogaeth a ragwelir o fewn IrisModel. Fe'i defnyddir i ragweld yn seiliedig ar 4 ffactor mewnbwn (mesuriadau blodau). Mae'r algorithm yn dychwelyd y rhagolwg (rhywogaethau blodau) a'r tebygolrwydd rhagfynegiad.
- Newidiwch yr adeiladwr yn IrisModel fel ei fod yn llwytho set ddata Iris ac yn hyfforddi'r model os yw ar goll o'r ffolder. Mae hyn yn datrys y broblem o hyfforddi modelau newydd dro ar ôl tro. Defnyddir y llyfrgell Joblib ar gyfer llwytho modelau ac arbed.
Dyma'r cod cyfan:
Rwy'n gobeithio bod y rhestr uchod a'r sylwadau wedi ei gwneud hi'n hawdd ei deall er bod hwn yn swm sylweddol o god i'w greu. Nawr bod y model hwn wedi'i ddatblygu, gadewch i ni gyhoeddi ei alluoedd rhagfynegi dros a REST API.
Adeiladu API REST llawn
Dychwelwch i'r ffeil ml_model.py a chael gwared ar yr holl ddata. Bydd y plât boeler yn ei hanfod yr un fath â'r hyn oedd gennych o'r blaen, ond dylem ddechrau gyda ffeil wag.
Dim ond un pwynt terfyn y byddwch chi'n ei ddiffinio y tro hwn, sef yr un a ddefnyddir i bennu'r math o flodyn. Mae IrisModel.predict species(), a ddatganwyd yn yr adran flaenorol, yn cael ei alw gan y pwynt terfyn hwn i gyflawni'r rhagfynegiad.
Y math o gais yw'r newid mawr arall. Er mwyn trosglwyddo paramedrau yn JSON yn hytrach nag URL, argymhellir eich bod yn defnyddio POST wrth ddefnyddio dysgu peiriant APIs.
Efallai bod y frawddeg uchod wedi swnio fel gibberish os ydych yn a gwyddonydd data, ond mae hynny'n iawn. I ddylunio a defnyddio modelau, nid oes angen i un o reidrwydd fod yn arbenigwr ar geisiadau HTTP ac APIs REST.
Mae'r tasgau ar gyfer ml model.py yn brin ac yn syml:
- Rhaid i chi fewnforio'r canlynol o'r ffeil jaymlmodel.py a grëwyd yn flaenorol: uvicorn, FastAPI, IrisModel, ac IrisSpecies.
- Creu enghreifftiau o FastAPI ac IrisModel.
- Datgan swyddogaeth yn https://127.0.0.1:8000/predict i wneud rhagfynegiadau.
- Mae'r dull IrisModel.predict species() yn derbyn gwrthrych o fath IrisSpecies, yn ei drawsnewid yn eiriadur, ac yna'n ei ddychwelyd. Adenillion yw'r dosbarth disgwyliedig a'r tebygolrwydd a ragwelir.
- Defnyddiwch uvicorn i weithredu'r API.
Unwaith eto, dyma god y ffeil gyfan ynghyd â'i sylwadau:
Dyna'r cyfan sydd angen i chi ei wneud. Yn y cam nesaf, gadewch i ni brofi'r API.
Profi'r API
Ail-nodwch y llinell ganlynol i'r Terminal i weithredu'r API: uvicorn ml_model: app -reload
Dyma sut mae'r dudalen ddogfennaeth yn ymddangos:
Felly dyna ni am heddiw. Yn y rhan ar ol hyn, gadewch i ni derfynu.
Casgliad
Heddiw, fe wnaethoch chi ddysgu beth yw FastAPI a sut i'w ddefnyddio, gan ddefnyddio enghraifft API syml ac enghraifft dysgu peiriant syml. Rydych chi hefyd wedi dysgu sut i greu a gweld dogfennaeth API, yn ogystal â sut i'w brofi.
Mae hynny'n llawer ar gyfer un darn, felly peidiwch â synnu os yw'n cymryd ychydig o ddarlleniadau i'w ddeall yn iawn.
Codio hapus.
Gadael ymateb