Youn nan aspè nan senaryo a se kreye yon modèl aprantisaj machin. Li dwe ka itilize nan mond reyèl la ak disponib pou konsomatè yo ak devlopè yo.
Fason ki pi senp ak pi popilè pou deplwaye modèl aprantisaj machin yo se mete yo nan yon API REST.
Avèk yon bibliyotèk popilè ki rele FastAPI, se egzakteman sa nou pral akonpli jodi a.
Men, ki sa ki FastAPI?
Kad wèb FastAPI Python la te kreye depi nan tè a pou pran avantaj de kapasite Python kontanporen.
Pou kominikasyon asynchrone, konkouran ak kliyan, li respekte estanda ASGI a, pandan ke li kapab tou sèvi ak WSGI.
Pwen ak wout yo ka tou de anplwaye fonksyon async. Anplis de sa, FastAPI pèmèt kreyasyon pwodiktif aplikasyon entènèt nan kòd Python ki pwòp, ki gen ladan l, ki gen ladan l.
Ka itilizasyon prensipal FastAPI a se, jan non an sijere, kreye pwen final API.
Sèvi ak estanda OpenAPI a, ki gen ladan yon entèaktif Swagger UI, oswa bay done diksyonè Python kòm JSON se tou de fason senp pou reyalize sa. Sepandan, FastAPI se pa sèlman pou APIs.
Li ka itilize pou ofri paj wèb estanda lè l sèvi avèk motè modèl Jinja2 ak sèvi aplikasyon ki itilize WebSockets, anplis de tout lòt bagay yon kad entènèt ka fè.
Nan atik sa a, nou pral devlope yon modèl aprantisaj machin ki senp epi nou pral sèvi ak FastAPI pou deplwaye li. Ann kòmanse.
Enstalasyon FastAPI ak kreyasyon premye API
Enstale bibliyotèk la ak yon sèvè ASGI obligatwa an premye; swa Uvuicorn oswa Hypercorn ap travay. Li travay lè w antre lòd sa a nan Tèminal la:
Kounye a ke API a te kreye, ou ka itilize editè kòd pi pito ou a epi browse atravè li. Kreye yon script Python ki rele ml_model.py pou kòmanse. Ou akeyi bay ou yon lòt non, men pou dedomajman pou pòs sa a, mwen pral refere a fichye sa a kòm ml_model.py.
Pou kreye yon API senp ak de pwen final, ou dwe ranpli travay sa yo:
- Enpòte bibliyotèk FastAPI ak Uvicorn.
- Mete kanpe yon egzanp klas FastAPI.
- Deklare premye wout la, ki, nan paj endèks la, pwodui yon objè JSON senp.
- Deklare dezyèm wout la, ki bay yon objè JSON senp ak yon mesaj Customized. Paramèt non an pran tou dwat nan URL la (pa egzanp, https://127.0.0.1:8000/Jay).
- Sèvi ak Uvicorn pou kouri API a.
Aplike senk etap sa yo montre nan ti jan sa a nan kòd sa vle di. kreye yon API senp
Tout fini! Ann lanse API nou an imedyatman. Louvri yon fenèt Tèminal akote fichye ml model.py pou akonpli sa. Apre sa, antre sa ki annapre yo:
kle Antre nan. Anvan nou kontinye, ann demare afimasyon sa a. Premye aplikasyon an sèvi ak non dosye Python pou kont li, san ekstansyon an. Dezyèm aplikasyon an dwe gen menm non ak egzanp FastAPI ou a.
Lè w sèvi ak -reload, ou di API a ke ou vle li otomatikman rechaje lè ou sove fichye a olye ke kòmanse nan grafouyen.
Koulye a, lanse yon navigatè epi navige nan https://127.0.0.1:8000; rezilta a ta dwe parèt jan sa a:
Kounye a ou konprann kijan pou kreye yon API senp lè l sèvi avèk FastAPI.
Bati ak fòmasyon modèl Machine Learning la
San yo pa kolekte oswa analize okenn done, nou pral jis fòme yon modèl ki senp. Sa yo pa gen rapò ak deplwaman modèl yo epi yo pa esansyèl nan sijè a nan men yo.
Yon modèl ki baze sou seri done Iris la ka enstale lè l sèvi avèk menm bagay la nè rezo metòd enstalasyon.
Epi nou pral fè sa sèlman: telechaje la Iris done ansanm epi fòme modèl la. Sa p ap senp. Pou kòmanse, fè yon dosye ki rele jaysmlmodel.py.
Nan li, ou pral fè bagay sa yo:
- Enpòtasyon — Ou pral bezwen panda, scikit-RandomForecastClassifier, Learn's pydantic BaseModel (ou pral dekouvri poukisa nan etap sa a), ak joblib pou estoke ak chaje modèl.
- Deklare yon klas IrisSpecies ki eritye de modèl baz la. Klas sa a sèlman gen jaden ki nesesè pou prevwa yon sèl espès flè (plis sou sa nan pwochen seksyon an)
- Kreye yon klas. IrisModel se yon fòmasyon modèl ak zouti prediksyon.
- Deklare yon metòd ki rele _train model nan IrisModel. Yo itilize li pou fòme modèl lè l sèvi avèk teknik Random Forests la. Modèl ki resevwa fòmasyon an retounen pa pwosedi a.
- Deklare yon fonksyon espès prevwa andedan IrisModel. Yo itilize li pou fè previzyon ki baze sou 4 faktè opinyon (mezi flè). Tou de pwevwa a (espès flè) ak pwobabilite prediksyon yo retounen pa algorithm la.
- Chanje konstrukteur a nan IrisModel pou li chaje dataset Iris la epi antrene modèl la si li manke nan katab la. Sa a rezoud pwoblèm nan repete fòmasyon nouvo modèl. Se bibliyotèk joblib la itilize pou chaje ak ekonomize modèl.
Men tout kòd la:
Mwen espere lis ki anwo a ak kòmantè yo te fè li fasil pou atrab menm si sa a te yon kantite lajan konsiderab nan kòd yo kreye. Kounye a ke modèl sa a te devlope, se pou yo pibliye kapasite prediksyon li yo sou yon REST API.
Konstwi yon API REST konplè
Retounen nan dosye ml_model.py a epi netwaye tout done yo. Boilerplate a pral esansyèlman menm jan ak sa ou te genyen anvan, men nou ta dwe kòmanse sou ak yon dosye vid.
Ou pral sèlman defini yon pwen final fwa sa a, ki se youn nan itilize pou detèmine ki kalite flè. IrisModel.predict species(), ki te deklare nan seksyon anvan an, yo rele pa pwen final sa a pou fè prediksyon an.
Kalite demann lan se lòt gwo chanjman an. Yo nan lòd yo transmèt paramèt nan JSON olye ke URL, li rekòmande ke ou itilize POST lè w ap itilize aprantisaj machin APIs.
Fraz ki pi wo a gendwa te sonnen tankou yon gabi si ou se yon done syantis, men sa a oke. Pou konsepsyon ak deplwaye modèl, youn pa nesesèman bezwen yon ekspè sou demann HTTP ak API REST.
Travay yo pou ml model.py se kèk ak senp:
- Ou dwe enpòte sa ki annapre yo nan dosye jaymlmodel.py ki te kreye deja: uvicorn, FastAPI, IrisModel, ak IrisSpecies.
- Kreye ka FastAPI ak IrisModel.
- Deklare yon fonksyon nan https://127.0.0.1:8000/predict pou fè prediksyon.
- Metòd IrisModel.predict species() resevwa yon objè ki kalite IrisSpecies, transfòme li nan yon diksyonè, epi retounen li. Retounen yo se klas espere ak pwobabilite prevwa.
- Sèvi ak uvicorn pou egzekite API a.
Ankò, isit la se tout kòd dosye a ansanm ak kòmantè li yo:
Se tout sa ou bezwen fè. Nan pwochen etap la, ann teste API a.
Tès API a
Re-antre liy sa a nan Tèminal la pou egzekite API a: uvicorn ml_model:app –reload
Men ki jan paj dokimantasyon an parèt:
Se konsa, se li pou jodi a. Nan pati apre sa a, ann konkli.
konklizyon
Jodi a, ou te aprann kisa FastAPI ye ak kijan pou itilize li, lè l sèvi avèk yon egzanp senp API ak yon egzanp aprantisaj machin senp. Ou te aprann tou ki jan yo kreye ak wè dokiman API, osi byen ke kòman yo teste li.
Sa a se anpil pou yon sèl pyès, kidonk pa sezi si li pran kèk lekti pou byen konprann.
Ala bon sa bon kodaj.
Kite yon Reply