Kipengele kimoja cha hali hiyo ni kuunda muundo wa kujifunza kwa mashine. Ni lazima itumike katika ulimwengu halisi na ipatikane kwa watumiaji na watengenezaji.
Njia rahisi na maarufu zaidi ya kupeleka miundo ya kujifunza kwa mashine ni kuifunga kwenye API ya REST.
Kwa maktaba maarufu inayoitwa FastAPI, ndivyo tutakavyotimiza leo.
Lakini, ni nini FastAPI?
Mfumo wa wavuti wa FastAPI Python uliundwa kutoka chini hadi kuchukua fursa ya uwezo wa kisasa wa Python.
Kwa mawasiliano ya asynchronous, wakati huo huo na wateja, inaambatana na kiwango cha ASGI, wakati pia ina uwezo wa kutumia WSGI.
Vituo vya mwisho na njia vinaweza kutumia vitendaji vya usawazishaji. Zaidi ya hayo, FastAPI huwezesha uundaji tija wa programu za wavuti katika msimbo wa Python uliodokezwa aina, safi na wa kisasa.
Kesi kuu ya utumiaji ya FastAPI ni, kama jina linapendekeza, kuunda miisho ya API.
Kutumia kiwango cha OpenAPI, ambacho kinajumuisha kiolesura shirikishi cha Swagger, au kutoa data ya kamusi ya Python kama JSON zote ni njia rahisi za kufanikisha hili. Walakini, FastAPI sio tu ya API.
Inaweza kutumika kutoa kurasa za kawaida za wavuti kwa kutumia injini ya violezo vya Jinja2 na kutumikia programu zinazotumia WebSockets, pamoja na kila kitu kingine ambacho mfumo wa wavuti unaweza kufanya.
Katika makala haya, tutatengeneza kielelezo cha moja kwa moja cha kujifunza kwa mashine na kisha kutumia FastAPI kuipeleka. Hebu tuanze.
Ufungaji wa FastAPI na uundaji wa API ya kwanza
Kufunga maktaba na seva ya ASGI inahitajika kwanza; ama Uvuicorn au Hypercorn itafanya kazi. Inafanya kazi kwa kuingiza amri ifuatayo kwenye terminal:
Kwa kuwa sasa API imeundwa, unaweza kutumia kihariri cha msimbo unachopendelea na kuvinjari. Unda hati ya Python inayoitwa ml_model.py ili kuanza. Unakaribishwa ulipe lako jina tofauti, lakini kwa ajili ya chapisho hili, nitarejelea faili hili kama ml_model.py.
Ili kuunda API ya moja kwa moja yenye ncha mbili, lazima ukamilishe kazi zifuatazo:
- Ingiza maktaba za FastAPI na Uvicorn.
- Sanidi mfano wa darasa la FastAPI.
- Tangaza njia ya kwanza, ambayo, kwenye ukurasa wa index, hutoa kitu cha moja kwa moja cha JSON.
- Tangaza njia ya pili, ambayo hutoa kitu cha moja kwa moja cha JSON na ujumbe uliobinafsishwa. Kigezo cha jina kinachukuliwa moja kwa moja kutoka kwa URL (kwa mfano, https://127.0.0.1:8000/Jay).
- Tumia Uvicorn kuendesha API.
Utekelezaji wa hatua hizi tano umeonyeshwa katika sehemu ifuatayo ya msimbo yaani. kuunda API rahisi
Yote yamekamilika! Hebu tuzindue API yetu mara moja. Fungua dirisha la Kituo karibu na faili ya model.py ili kukamilisha hili. Ifuatayo, ingiza zifuatazo:
kitufe cha Ingiza. Kabla ya kuendelea, hebu tupunguze madai haya. Programu ya kwanza hutumia jina la faili la Python pekee, bila ugani. Programu ya pili lazima iwe na jina sawa na mfano wako wa FastAPI.
Kwa kutumia -reload, unaiambia API kwamba unataka ipakie upya kiotomatiki unapohifadhi faili badala ya kuanza kutoka mwanzo.
Sasa zindua kivinjari na uende kwenye https://127.0.0.1:8000; matokeo yanapaswa kuonekana kama ifuatavyo:
Sasa unaelewa jinsi ya kuunda API rahisi kwa kutumia FastAPI.
Kujenga na kufunza modeli ya Kujifunza Mashine
Bila kukusanya au kuchambua data yoyote, tutafunza mfano rahisi. Hizi hazihusiani na uwekaji wa miundo na sio muhimu kwa mada inayohusika.
Mfano kulingana na seti ya data ya Iris inaweza kusakinishwa kwa kutumia hiyo hiyo neural mtandao njia ya ufungaji.
Na tutafanya hivyo tu: pakua Hifadhidata ya iris na kufundisha mfano. Hiyo haitakuwa rahisi. Kuanza, tengeneza faili inayoitwa jaysmlmodel.py.
Ndani yake, utafanya yafuatayo:
- Uagizaji - Utahitaji panda, scikit-RandomForecastClassifier, jifunze BaseModel ya pydantic (utagundua ni kwa nini katika hatua ifuatayo), na joblib kwa kuhifadhi na kupakia miundo.
- Tangaza darasa la IrisSpecies ambalo linarithi kutoka kwa mfano wa msingi. Darasa hili lina sehemu zinazohitajika kutabiri aina moja ya maua pekee (zaidi kuhusu hilo katika sehemu inayofuata)
- Unda darasa. IrisModel ni mfano wa mafunzo na zana ya utabiri.
- Tangaza njia inayoitwa _train model ndani ya IrisModel. Inatumika kutoa mafunzo kwa wanamitindo kwa kutumia mbinu ya Misitu isiyo na mpangilio. Mfano wa mafunzo unarudishwa na utaratibu.
- Tangaza kazi ya spishi iliyotabiriwa ndani ya IrisModel. Inatumika kutabiri kulingana na vipengele 4 vya pembejeo (vipimo vya maua). Utabiri (aina za maua) na uwezekano wa utabiri hurejeshwa na kanuni.
- Badilisha mjenzi katika IrisModel ili iweze kupakia hifadhidata ya Iris na kufunza mfano ikiwa haipo kwenye folda. Hii inasuluhisha shida ya kufundisha tena mifano mpya. Maktaba ya joblib inatumika kwa upakiaji na uhifadhi wa modeli.
Hapa kuna nambari nzima:
Natumai orodha iliyo hapo juu na maoni yalifanya iwe rahisi kufahamu ingawa hii ilikuwa idadi kubwa ya nambari kuunda. Sasa kwa kuwa mtindo huu umetengenezwa, wacha tuchapishe uwezo wake wa kutabiri juu ya a API YA REST.
Inaunda API kamili ya REST
Rudi kwa ml_model.py faili na usafishe data yote. Boilerplate kimsingi itakuwa sawa na uliyokuwa nayo hapo awali, lakini tunapaswa kuanza upya na faili tupu.
Utafafanua ncha moja pekee wakati huu, ambayo ndiyo itatumika kubainisha aina ya maua. IrisModel.predict species(), ambayo ilitangazwa katika sehemu iliyotangulia, inaitwa na sehemu hii ya mwisho ili kutekeleza utabiri.
Aina ya ombi ni mabadiliko mengine makubwa. Ili kusambaza vigezo katika JSON badala ya URL, inashauriwa utumie POST unapotumia mashine kujifunza API.
Sentensi iliyo hapo juu inaweza kuwa ilionekana kama ujinga ikiwa wewe ni a mwanasayansi wa data, lakini ni sawa. Ili kubuni na kupeleka miundo, si lazima mtu awe mtaalamu wa maombi ya HTTP na API REST.
Kazi za ml model.py ni chache na za moja kwa moja:
- Lazima uingize zifuatazo kutoka kwa faili ya jaymlmodel.py iliyoundwa hapo awali: uvicorn, FastAPI, IrisModel, na IrisSpecies.
- Unda matukio ya FastAPI na IrisModel.
- Tangaza kazi katika https://127.0.0.1:8000/predict kufanya utabiri.
- Mbinu ya IrisModel.predict species() hupokea kitu cha aina ya IrisSpecies, kukibadilisha kuwa kamusi, na kisha kukirejesha. Kurejesha ni darasa linalotarajiwa na uwezekano uliotabiriwa.
- Tumia uvicorn kutekeleza API.
Bado tena, hapa kuna nambari ya faili nzima pamoja na maoni yake:
Hiyo ndiyo yote unayohitaji kufanya. Katika hatua inayofuata, wacha tujaribu API.
Kujaribu API
Ingiza tena laini ifuatayo kwenye Kituo ili kutekeleza API: uvicorn ml_model:app -reload
Hivi ndivyo ukurasa wa nyaraka unavyoonekana:
Hivyo ndivyo ilivyo kwa leo. Katika sehemu baada ya hii, wacha tuhitimishe.
Hitimisho
Leo, umejifunza FastAPI ni nini na jinsi ya kuitumia, kwa kutumia mfano rahisi wa API na mfano rahisi wa kujifunza mashine. Umejifunza pia jinsi ya kuunda na kutazama hati za API, na pia jinsi ya kuzijaribu.
Hiyo ni nyingi kwa kipande kimoja, kwa hivyo usishangae ikiwa inachukua usomaji machache kuelewa vizuri.
Furaha ya kuweka msimbo.
Acha Reply