Yek aliyek senaryoyê afirandina modelek fêrbûna makîneyê ye. Pêdivî ye ku ew di cîhana rastîn de were bikar anîn û ji xerîdar û pêşdebiran re peyda bibe.
Awayê herî hêsan û herî populer a bicîhkirina modelên fêrbûna makîneyê ev e ku meriv wan di nav REST API de bigire.
Bi pirtûkxaneyek populer a bi navê FastAPI, ya ku em ê îro pêk bînin ev e.
Lê belê, çi ye FastAPI?
Çarçoveya tevna FastAPI Python ji erdê ve hate afirandin ku ji kapasîteyên Python-ê yên hevdem sûd werbigire.
Ji bo danûstendina asynkron, hevdemî bi xerîdaran re, ew bi standarda ASGI ve girêdayî ye, di heman demê de ew dikare WSGI jî bikar bîne.
Xalên dawî û rêgez dikarin hem fonksiyonên asyncê bi kar bînin. Wekî din, FastAPI çêkirina hilberî ya sepanên webê di koda Python a bi tîp, paqij û hevdem de dihêle.
Doza karanîna sereke ya FastAPI ev e, wekî ku nav diyar dike, çêkirina xalên dawiya API-ê ye.
Bikaranîna standarda OpenAPI-ê, ku tê de Swagger UI-ya înteraktîf vedihewîne, an peydakirina daneyên ferhenga Python wekî JSON her du awayên hêsan in ku meriv bigihîje vê yekê. Lêbelê, FastAPI ne tenê ji bo API-yan e.
Ew dikare were bikar anîn da ku rûpelên webê yên standard bi karanîna motora şablonê Jinja2 pêşkêşî bike û ji bo serîlêdanên ku WebSockets bikar tînin xizmet bike, ji bilî hema hema her tiştê din ku çarçoveyek malperê dikare bike.
Di vê gotarê de, em ê modelek fêrbûna makîneyê ya rasterast pêşve bibin û dûv re FastAPI bikar bînin da ku wê bicîh bikin. Were em destpêkin.
Sazkirina FastAPI û afirandina API-ya yekem
Pêşî sazkirina pirtûkxane û serverek ASGI hewce ye; an Uvuicorn an jî Hypercorn dê bixebitin. Ew bi ketina fermana jêrîn di Termînalê de dixebite:
Naha ku API hate afirandin, hûn dikarin edîtorê koda xweya bijare bikar bînin û li wê bigerin. Ji bo ku dest pê bike skrîptek Python bi navê ml_model.py biafirînin. Hûn bi xêr hatin ku navekî din bidin navê xwe, lê ji bo xatirê vê postê, ez ê vê pelê wekî ml_model.py binav bikim.
Ji bo afirandina API-yek rasterast bi du xalên dawîn, divê hûn karên jêrîn temam bikin:
- Pirtûkxaneyên FastAPI û Uvicorn derxînin.
- Mînakek pola FastAPI saz bikin.
- Riya yekem, ya ku, li ser rûpela navnîşê, tiştek JSON-ya rasterast çêdike, eşkere bikin.
- Rêya duyemîn, ya ku tiştek JSON-ya rasterast bi peyamek xwerû peyda dike, ragihînin. Parametreya nav rasterast ji URL-ê tê girtin (mînak, https://127.0.0.1:8000/Jay).
- Uvicorn bikar bînin ku API-ê bimeşînin.
Pêkanîna van pênc qonaxan di bit koda jêrîn de tê xuyang kirin ango. afirandina API-ya hêsan
Hemû kirin! Werin em tavilê API-ya xwe bidin destpêkirin. Li kêleka pelê ml model.py pencereyek Termînalê vekin da ku vê yekê pêk bînin. Piştre, jêrîn binivîse:
key Enter. Berî ku em bi ser bikevin, werin em vê îdiayê pûç bikin. Serlêdana yekem tenê navê pelê Python, bêyî dirêjkirinê, bikar tîne. Pêdivî ye ku sepana duyemîn bi mînaka weya FastAPI re heman navî hebe.
Bi karanîna -reload-ê, hûn ji API-yê re dibêjin ku hûn dixwazin ew bixweber ji nû ve were barkirin dema ku hûn pelê hilînin ne ku ji sifirê dest pê bikin.
Naha gerokek dest pê bikin û biçin https://127.0.0.1:8000; encam divê wiha xuya bike:
Naha hûn fêm dikin ka meriv çawa bi karanîna FastAPI-ê API-yek hêsan biafirîne.
Avakirin û perwerdekirina modela Fêrbûna Makîneyê
Bêyî berhevkirin an analîzkirina ti daneyan, em ê tenê modelek hêsan perwerde bikin. Vana bi bicihkirina modelan re ne têkildar in û bi mijara li destan re ne bingehîn in.
Modelek li ser bingeha databasa Iris dikare bi heman rengî were saz kirin torê neural rêbaza sazkirinê.
Û em ê tenê wiya bikin: dakêşin Daneyên Iris û modela perwerde bikin. Ew ê ne hêsan be. Ji bo destpêkê, pelek bi navê jaysmlmodel.py çêbikin.
Di wê de, hûn ê jêrîn bikin:
- Import - Hûn ê hewceyê panda, scikit-RandomForecastClassifier, BaseModel-a pydantic ya fêr bibin (hûn ê çima di gava jêrîn de bibînin), û joblib ji bo hilanîn û barkirina modelan.
- Dersek IrisSpecies ya ku ji modela bingehîn mîras digire diyar bikin. Vê polê tenê zeviyên ku ji bo pêşbînkirina celebek yek kulîlkê hewce ne dihewîne (di beşa pêş de bêtir li ser wê)
- Çînek çêbikin. IrisModel amûrek perwerdehiyê û pêşbîniyê modelek e.
- Rêbazek bi navê modela _train di nav IrisModel de eşkere bikin. Ew ji bo perwerdekirina modelan bi karanîna teknîka Daristanên Random tê bikar anîn. Modela perwerdekirî ji hêla prosedurê ve tê vegerandin.
- Di hundurê IrisModel de fonksiyonek celebek pêşbînîkirî ragihînin. Ew ji bo pêşbînkirina li ser bingeha 4 faktorên têketinê (pîvana kulîlkan) tê bikar anîn. Hem pêşbîn (cureyên kulîlkan) û hem jî îhtîmala pêşbîniyê ji hêla algorîtmê ve têne vegerandin.
- Di IrisModel de çêkerê biguhezînin da ku ew databasa Iris bar bike û modelê perwerde bike heke ew di peldankê de tune be. Ev pirsgirêka dubarekirina perwerdehiya modelên nû çareser dike. Pirtûkxaneya joblib ji bo barkirin û hilanîna modelê tê bikar anîn.
Li vir tevahiya kodê ye:
Ez hêvî dikim ku navnîşa jorîn û şîroveyan fêmkirina wê hêsan kiribe jî, her çend ev hejmareke mezin a kodê bû ku were afirandin. Naha ku ev model hate pêşve xistin, em kapasîteyên pêşbîniya wê li ser a biweşînin REST API.
Avakirina REST API-ya tevahî
Vegere pelê ml_model.py û hemî daneyan paqij bike. Boilerplate dê di bingeh de mîna ya ku we berê hebû be, lê divê em bi pelek vala dest pê bikin.
Hûn ê vê carê tenê yek xala dawiyê diyar bikin, ku ew e ku ji bo destnîşankirina celebê kulîlkê tê bikar anîn. IrisModel.predict species(), ku di beşa paşîn de hate ragihandin, ji hêla vê xala dawiyê ve tê gazî kirin ku pêşbîniyê pêk bîne.
Tîpa daxwaziyê guhertineke din a mezin e. Ji bo veguheztina parametreyên li JSON ji URL-ê, tê pêşniyar kirin ku hûn dema bikar bînin POST bikar bînin fêrbûna makîneyê APIs.
Dibe ku hevoka li jor wekî gêjbûnek xuya bike heke hûn a zanyarê data, lê ew baş e. Ji bo sêwirandin û bicîhkirina modelan, ne hewce ye ku meriv li ser daxwazên HTTP û API-yên REST pispor be.
Karên ji bo ml model.py hindik û rasterast in:
- Divê hûn tiştên jêrîn ji pelê jaymlmodel.py ku berê hatî afirandin têxin: uvicorn, FastAPI, IrisModel, û IrisSpecies.
- Mînakên FastAPI û IrisModel biafirînin.
- Fonksiyonek li ser https://127.0.0.1:8000/predict ragihînin ku pêşbîniyan bikin.
- Rêbaza IrisModel.predict species() objeyek ji celebê IrisSpecies distîne, vediguherîne ferhengekê û dûv re vedigerîne. Vegere çîna çaverêkirî û îhtîmala pêşbînîkirî ye.
- Uvicorn bikar bînin ku API-ê bicîh bikin.
Dîsa dîsa, li vir koda pelê tevahî digel şîroveyên wê ye:
Ya ku divê hûn bikin ev e. Di gava paşîn de, em API-ê biceribînin.
Testkirina API-ê
Ji nû ve xêza jêrîn têxe nav Termînalê da ku API-yê bicîh bike: uvicorn ml_model:app -reload
Bi vî rengî rûpela belgekirinê xuya dike:
Ji ber vê yekê ji bo îro ye. Di beşa piştî vê de, em biqedin.
Xelasî
Îro, hûn fêr bûn ku FastAPI çi ye û meriv wê çawa bikar tîne, hem mînakek API-ya hêsan û hem jî mînakek fêrbûna makîneya hêsan bikar tîne. Her weha hûn fêr bûne ka meriv çawa belgeyên API-ê biafirîne û bibîne, û hem jî meriv wê çawa ceribandin.
Ew ji bo yek perçeyek pir pir e, ji ber vê yekê şaş nemînin ku ew çend xwendin hewce dike ku meriv bi rêkûpêk fêm bike.
Kodkirina xweş.
Leave a Reply