Aspett wieħed tax-xenarju huwa l-ħolqien ta 'mudell ta' tagħlim tal-magni. Għandu jkun użabbli fid-dinja reali u disponibbli għall-konsumaturi u l-iżviluppaturi.
L-aktar mod sempliċi u popolari biex jiġu skjerati mudelli ta’ tagħlim bil-magni huwa li tagħlaqhom f’API REST.
Bil-librerija popolari msejħa FastAPI, dan huwa eżattament dak li se nwettqu llum.
Imma, x'inhu FastAPI?
Il-qafas tal-web FastAPI Python inħoloq mill-bidu biex jieħu vantaġġ mill-kapaċitajiet kontemporanji ta 'Python.
Għal komunikazzjoni asinkronika u konkorrenti mal-klijenti, hija żżomm mal-istandard ASGI, filwaqt li hija kapaċi wkoll tuża WSGI.
L-endpoints u r-rotot jistgħu jimpjegaw it-tnejn funzjonijiet asinkroniċi. Barra minn hekk, FastAPI jippermetti l-ħolqien produttiv ta 'apps tal-web f'kodiċi Python kontemporanju, nadif u mgħarraf.
Il-każ ta' użu ewlieni ta' FastAPI huwa, kif jissuġġerixxi l-isem, il-ħolqien ta' endpoints tal-API.
L-użu tal-istandard OpenAPI, li jinkludi Swagger UI interattiv, jew il-forniment tad-dejta tad-dizzjunarju Python bħala JSON huma t-tnejn modi sempliċi biex jinkiseb dan. Madankollu, FastAPI mhux biss għall-APIs.
Jista 'jintuża biex joffri paġni web standard bl-użu tal-magna tal-mudell Jinja2 u biex iservi apps li jutilizzaw WebSockets, minbarra kważi kull ħaġa oħra li qafas tal-web jista' jagħmel.
F'dan l-artikolu, aħna ser niżviluppaw mudell sempliċi ta 'tagħlim tal-magni u mbagħad nużaw FastAPI biex niskjerawh. Ejja nibdew.
Installazzjoni ta 'FastAPI u ħolqien ta' l-ewwel API
L-ewwel hija meħtieġa l-installazzjoni tal-librerija u server ASGI; jew Uvuicorn jew Hypercorn se jaħdmu. Jaħdem billi ddaħħal il-kmand li ġej fit-Terminal:
Issa li l-API inħoloq, tista 'tuża l-editur tal-kodiċi preferut tiegħek u tfittex permezz tiegħu. Oħloq script Python imsejjaħ ml_model.py biex tibda. Inti mistieden tagħti tiegħek isem differenti, iżda għall-fini ta 'din il-kariga, se nirreferi għal dan il-fajl bħala ml_model.py.
Biex toħloq API sempliċi b'żewġ endpoints, trid tlesti l-kompiti li ġejjin:
- Importa l-libreriji FastAPI u Uvicorn.
- Twaqqaf istanza tal-klassi FastAPI.
- Iddikjara l-ewwel rotta, li, fuq il-paġna tal-indiċi, tipproduċi oġġett JSON sempliċi.
- Iddikjara t-tieni rotta, li tipprovdi oġġett JSON sempliċi b'messaġġ personalizzat. Il-parametru tal-isem jittieħed direttament mill-URL (per eżempju, https://127.0.0.1:8000/Jay).
- Uża Uvicorn biex tmexxi l-API.
L-implimentazzjoni ta 'dawn il-ħames stadji hija murija fil-bit li ġej tal-kodiċi jiġifieri. toħloq API sempliċi
Kollox lest! Ejja nniedu l-API tagħna immedjatament. Iftaħ tieqa Terminal ħdejn il-fajl ml model.py biex twettaq dan. Sussegwentement, daħħal dan li ġej:
iċ-ċavetta Enter. Qabel nimxu 'l quddiem, ejja niċafċu din l-affermazzjoni. L-ewwel app tagħmel użu mill-isem tal-fajl Python waħdu, mingħajr l-estensjoni. It-tieni app għandu jkollha l-istess isem bħall-istanza FastAPI tiegħek.
Billi tuża -reload, tgħid lill-API li trid li terġa' tikkarga awtomatikament meta tissejvja l-fajl aktar milli tibda mill-bidu.
Issa tniedi browser u naviga għal https://127.0.0.1:8000; ir-riżultat għandu jidher kif ġej:
Issa tifhem kif toħloq API sempliċi billi tuża FastAPI.
Il-bini u t-taħriġ tal-mudell ta' Machine Learning
Mingħajr ma niġbru jew tanalizzaw l-ebda data, aħna se nħarrġu biss mudell sempliċi. Dawn mhumiex relatati mal-iskjerament tal-mudelli u mhumiex essenzjali għas-suġġett inkwistjoni.
Mudell ibbażat fuq id-dataset Iris jista 'jiġi installat bl-użu tal-istess newrali netwerk metodu ta 'installazzjoni.
U aħna nagħmlu hekk: niżżel il- Sett tad-dejta tal-Iris u ħarreġ il-mudell. Dan mhux se jkun sempliċi. Biex tibda, agħmel fajl bl-isem jaysmlmodel.py.
Fiha, int se tagħmel dan li ġej:
- Importazzjonijiet — Ikollok bżonn pandas, scikit-RandomForecastClassifier, Learn's pydantic's BaseModel (int ser tiskopri għaliex fil-pass li ġej), u joblib għall-ħażna u t-tagħbija tal-mudelli.
- Iddikjara klassi IrisSpecies li tirret mill-mudell bażi. Din il-klassi fiha biss għelieqi meħtieġa biex tipprevedi speċi ta' fjuri waħda (aktar dwar dik fit-taqsima li jmiss)
- Oħloq klassi. IrisModel hija għodda ta 'taħriġ u tbassir mudell.
- Iddikjara metodu msemmi _train model fi ħdan IrisModel. Jintuża biex iħarreġ mudelli bl-użu tat-teknika Random Forests. Il-mudell imħarreġ jintbagħat lura bil-proċedura.
- Iddikjara funzjoni ta' speċi mbassra ġewwa IrisModel. Huwa utilizzat għat-tbassir ibbażat fuq 4 fatturi ta 'input (kejl tal-fjuri). Kemm it-tbassir (speċi tal-fjuri) kif ukoll il-probabbiltà tat-tbassir jintbagħtu lura mill-algoritmu.
- Ibdel il-kostruttur f'IrisModel sabiex jgħabbi d-dataset Iris u jħarreġ il-mudell jekk ikun nieqes mill-folder. Dan isolvi l-problema tat-taħriġ ripetut ta 'mudelli ġodda. Il-librerija joblib hija utilizzata għat-tagħbija u l-iffrankar tal-mudelli.
Hawn hu l-kodiċi kollu:
Nittama li l-lista ta 'hawn fuq u l-kummenti għamluha faċli biex tinftiehem minkejja li dan kien ammont mdaqqsa ta' kodiċi biex jinħoloq. Issa li dan il-mudell ġie żviluppat, ejja nippubblikaw il-kapaċitajiet ta 'tbassir tiegħu fuq a SERĦAN API.
Bini ta' API REST sħiħa
Irritorna għall-fajl ml_model.py u neħħi d-dejta kollha. Il-boilerplate se jkun essenzjalment l-istess bħal dak li kellek qabel, iżda għandna nibdew mill-ġdid b'fajl vojt.
Din id-darba se tiddefinixxi endpoint wieħed biss, li huwa dak użat biex tiddetermina t-tip ta 'fjura. IrisModel.predict species(), li kienet iddikjarata fit-taqsima preċedenti, tissejjaħ minn dan l-endpoint biex twettaq it-tbassir.
It-tip ta 'talba hija l-bidla kbira l-oħra. Sabiex tittrasmetti parametri f'JSON aktar milli URL, huwa rakkomandat li tuża POST meta tuża tagħlim magna APIs.
Is-sentenza ta’ hawn fuq setgħet tinstema’ bħal gibberish jekk inti a xjenzat tad-dejta, imma dan hu tajjeb. Biex tiddisinja u tuża mudelli, wieħed mhux bilfors jeħtieġ li jkun espert dwar it-talbiet HTTP u l-API REST.
Il-kompiti għal ml model.py huma ftit u sempliċi:
- Trid timporta dan li ġej mill-fajl jaymlmodel.py maħluq qabel: uvicorn, FastAPI, IrisModel, u IrisSpecies.
- Oħloq każijiet ta 'FastAPI u IrisModel.
- Iddikjara funzjoni fuq https://127.0.0.1:8000/predict biex tagħmel tbassir.
- Il-metodu IrisModel.predict species() jirċievi oġġett tat-tip IrisSpecies, jittrasformah għal dizzjunarju, u mbagħad jirritornah. Ir-ritorni huma l-klassi mistennija u l-probabbiltà mbassra.
- Uża uvicorn biex tesegwixxi l-API.
Għal darb'oħra, hawnhekk huwa l-kodiċi tal-fajl kollu flimkien mal-kummenti tiegħu:
Dan huwa dak kollu li għandek bżonn tagħmel. Fil-pass li jmiss, ejja nittestjaw l-API.
Ittestjar tal-API
Erġa' daħħal il-linja li ġejja fit-Terminal biex tesegwixxi l-API: uvicorn ml_model:app –reload
Hekk tidher il-paġna tad-dokumentazzjoni:
Allura dak huwa għal-lum. Fil-parti ta’ wara dan, ejja nikkonkludu.
konklużjoni
Illum, tgħallimt x'inhu FastAPI u kif tużah, billi tuża kemm eżempju sempliċi ta 'API kif ukoll eżempju sempliċi ta' tagħlim tal-magni. Tgħallimt ukoll kif toħloq u tara d-dokumentazzjoni tal-API, kif ukoll kif tittestjaha.
Dak huwa ħafna għal biċċa waħda, għalhekk ma tkun sorpriż jekk tieħu ftit qari biex tifhem sew.
Kodifikazzjoni kuntenti.
Ħalli Irrispondi