Usa ka aspeto sa senaryo mao ang paghimo og modelo sa pagkat-on sa makina. Kinahanglan nga magamit kini sa tinuud nga kalibutan ug magamit sa mga konsumedor ug mga developer.
Ang pinakayano ug pinakasikat nga paagi sa pag-deploy sa mga modelo sa pagkat-on sa makina mao ang paglakip niini sa usa ka REST API.
Uban sa usa ka sikat nga librarya nga gitawag FastAPI, mao gyud kana ang atong mahimo karon.
Pero, unsa FastAPI?
Ang FastAPI Python web framework gimugna gikan sa una aron mapahimuslan ang mga kapabilidad sa Python karon.
Alang sa asynchronous, dungan nga komunikasyon sa mga kliyente, kini nagsunod sa sumbanan sa ASGI, samtang kini usab makahimo sa paggamit sa WSGI.
Ang mga endpoint ug mga ruta mahimong magamit ang mga function sa async. Dugang pa, ang FastAPI makapahimo sa mabungahon nga paghimo sa mga web apps sa tipo-hinted, limpyo, kontemporaryo nga Python code.
Ang panguna nga kaso sa paggamit sa FastAPI mao, ingon sa gisugyot sa ngalan, paghimo sa mga endpoint sa API.
Ang paggamit sa sumbanan sa OpenAPI, nga naglakip sa usa ka interactive nga Swagger UI, o paghatag sa datos sa diksyonaryo sa Python ingon nga JSON pareho nga yano nga mga paagi aron makab-ot kini. Bisan pa, ang FastAPI dili lamang alang sa mga API.
Mahimo kining gamiton sa pagtanyag og standard nga mga web page gamit ang Jinja2 template engine ug sa pag-alagad sa mga app nga naggamit sa WebSockets, dugang sa halos tanan nga butang nga mahimo sa usa ka web framework.
Niini nga artikulo, maghimo kami usa ka prangka nga modelo sa pagkat-on sa makina ug dayon gamiton ang FastAPI aron i-deploy kini. Magsugod ta.
Pag-instalar sa FastAPI ug paghimo sa unang API
Ang pag-instalar sa librarya ug usa ka ASGI server gikinahanglan una; bisan Uvuicorn o Hypercorn molihok. Naglihok kini pinaagi sa pagsulod sa mosunud nga mando sa Terminal:
Karon nga ang API nahimo na, mahimo nimong gamiton ang imong gusto nga editor sa code ug pag-browse niini. Paghimo og script sa Python nga gitawag og ml_model.py aron makasugod. Giabi-abi ka sa paghatag sa imo ug lain nga ngalan, apan alang sa kini nga post, akong i-refer ang kini nga file nga ml_model.py.
Aron makahimo og usa ka tul-id nga API nga adunay duha ka mga endpoint, kinahanglan nimong kompletohon ang mosunod nga mga buluhaton:
- Pag-import sa mga librarya sa FastAPI ug Uvicorn.
- Paghimo usa ka pananglitan sa klase sa FastAPI.
- Ipahayag ang una nga ruta, nga, sa panid sa indeks, nagpatunghag usa ka prangka nga butang nga JSON.
- Ipahayag ang ikaduhang ruta, nga naghatag ug prangka nga JSON nga butang nga adunay customized nga mensahe. Ang parameter sa ngalan gikuha diretso gikan sa URL (pananglitan, https://127.0.0.1:8000/Jay).
- Gamita ang Uvicorn sa pagpadagan sa API.
Ang pag-implementar niining lima ka yugto gipakita sa mosunod nga gamay nga code ie. paghimo sa usa ka yano nga API
Nahuman na ang tanan! Atong ilunsad dayon ang atong API. Ablihi ang usa ka Terminal window sunod sa ml model.py file aron mahimo kini. Sunod, isulod ang mosunod:
ang Enter key. Sa dili pa mopadayon, atong i-debunk kini nga assertion. Ang una nga app naggamit sa Python file name nga nag-inusara, nga wala ang extension. Ang ikaduha nga app kinahanglan adunay parehas nga ngalan sa imong FastAPI nga pananglitan.
Pinaagi sa paggamit sa -reload, gisultihan nimo ang API nga gusto nimo nga awtomatiko nga i-reload kung imong gitipigan ang file kaysa magsugod gikan sa wala.
Karon maglunsad og browser ug navigate sa https://127.0.0.1:8000; ang resulta kinahanglan nga makita sama sa mosunod:
Nasabtan na nimo kung giunsa paghimo ang usa ka yano nga API gamit ang FastAPI.
Pagtukod ug pagbansay sa modelo sa Machine Learning
Kung wala’y pagkolekta o pag-analisar sa bisan unsang datos, magbansay lang kami usa ka yano nga modelo. Kini wala'y kalabutan sa pag-deploy sa mga modelo ug dili kinahanglanon sa hilisgutan nga anaa.
Ang usa ka modelo nga gibase sa Iris dataset mahimong ma-install gamit ang parehas neural network pamaagi sa pag-instalar.
Ug buhaton ra namo kana: i-download ang Iris nga datos ug pagbansay sa modelo. Dili kana sayon. Sa pagsugod, paghimo ug file nga ginganlag jaysmlmodel.py.
Diha niini, buhaton nimo ang mosunod:
- Import - Kinahanglan nimo ang mga pandas, scikit-RandomForecastClassifier, pagkat-on sa BaseModel sa pydantic (madiskobrehan nimo kung ngano sa sunod nga lakang), ug joblib alang sa pagtipig ug pagkarga sa mga modelo.
- Ideklara ang klase sa IrisSpecies nga nakapanunod gikan sa base nga modelo. Kini nga klase naglangkob lamang sa mga natad nga gikinahanglan sa pagtagna sa usa ka matang sa bulak (dugang pa niana sa sunod nga seksyon)
- Paghimo og klase. Ang IrisModel usa ka modelo nga pagbansay ug himan sa pagtagna.
- Ipahayag ang usa ka pamaagi nga ginganlag _train model sulod sa IrisModel. Gigamit kini sa pagbansay sa mga modelo gamit ang teknik sa Random Forests. Ang gibansay nga modelo gibalik pinaagi sa pamaagi.
- Ipahayag ang usa ka gitagna nga function sa espisye sulod sa IrisModel. Gigamit kini sa pagtagna base sa 4 nga input factor (mga sukod sa bulak). Ang panagna (mga espisye sa bulak) ug ang posibilidad sa panagna gibalik sa algorithm.
- Usba ang constructor sa IrisModel aron ma-load ang Iris dataset ug mabansay ang modelo kung wala kini sa folder. Gisulbad niini ang problema sa balik-balik nga pagbansay sa bag-ong mga modelo. Ang joblib library gigamit alang sa pagkarga ug pag-save sa modelo.
Ania ang tibuok code:
Nanghinaut ko nga ang lista sa ibabaw ug ang mga komento dali nga masabtan bisan kung kini usa ka dako nga kantidad sa code nga himuon. Karon nga kini nga modelo nahimo na, atong imantala ang mga kapabilidad sa panagna sa usa ka PAHULAY API.
Pagtukod ug tibuok REST API
Balik sa ml_model.py file ug limpyohan ang tanan nga datos. Ang boilerplate mahimong parehas sa kung unsa ang naa nimo kaniadto, apan kinahanglan naton magsugod sa usa ka blangko nga file.
Usa ra ka endpoint ang imong itakda karong panahona, nga mao ang gigamit aron mahibal-an ang klase sa bulak. IrisModel.predict species(), nga gideklarar sa nag-unang seksyon, gitawag niini nga endpoint aron ipatuman ang panagna.
Ang matang sa hangyo mao ang laing dakong kausaban. Aron mapasa ang mga parameter sa JSON imbes sa URL, girekomenda nga gamiton nimo ang POST kung mogamit pagkat-on sa makina Mga API.
Ang mga pulong sa ibabaw mahimo’g ingon og walay hinungdan kung ikaw usa ka siyentista sa datos, pero okay ra. Aron sa pagdesinyo ug pag-deploy sa mga modelo, ang usa dili kinahanglan nga mahimong eksperto sa HTTP nga mga hangyo ug REST API.
Ang mga buluhaton alang sa ml model.py gamay ra ug prangka:
- Kinahanglan nimong i-import ang mosunod gikan sa nabuhat kaniadto nga jaymlmodel.py file: uvicorn, FastAPI, IrisModel, ug IrisSpecies.
- Paghimo mga higayon sa FastAPI ug IrisModel.
- Ipahayag ang usa ka function sa https://127.0.0.1:8000/predict aron makahimog mga panagna.
- Ang pamaagi sa IrisModel.predict species() makadawat ug butang nga tipo nga IrisSpecies, i-transform kini ngadto sa diksyonaryo, ug ibalik kini. Ang mga pagbalik mao ang gipaabot nga klase ug gitagna nga posibilidad.
- Gamita ang uvicorn aron ipatuman ang API.
Bisan pa, ania ang tibuuk nga code sa file kauban ang mga komento niini:
Mao ra kana ang kinahanglan nimong buhaton. Sa sunod nga lakang, atong sulayan ang API.
Pagsulay sa API
Pagsulod pag-usab sa mosunod nga linya ngadto sa Terminal aron ipatuman ang API: uvicorn ml_model: app –reload
Ingon niini ang hitsura sa panid sa dokumentasyon:
So mao to para karong adlawa. Sa bahin pagkahuman niini, atong tapuson.
Panapos
Karon, nahibal-an nimo kung unsa ang FastAPI ug kung giunsa kini paggamit, gamit ang usa ka yano nga pananglitan sa API ug usa ka yano nga panig-ingnan sa pagkat-on sa makina. Nakat-on ka usab kung unsaon paghimo ug pagtan-aw sa dokumentasyon sa API, ingon man kung giunsa kini pagsulay.
Daghan kana alang sa usa ka piraso, busa ayaw katingala kung gikinahanglan ang pipila ka mga pagbasa aron masabtan sa husto.
Malipayon nga coding.
Leave sa usa ka Reply