Apa kan ti oju iṣẹlẹ jẹ ṣiṣẹda awoṣe ikẹkọ ẹrọ kan. O gbọdọ jẹ lilo ni agbaye gidi ati wa si awọn onibara ati awọn olupilẹṣẹ.
Ọna ti o rọrun julọ ati olokiki julọ lati ran awọn awoṣe ikẹkọ ẹrọ ni lati fi wọn sinu API REST kan.
Pẹlu ile-ikawe olokiki ti a pe ni FastAPI, iyẹn gan-an ni ohun ti a yoo ṣe loni.
Ṣugbọn, kini o jẹ FastAPI?
Ilana wẹẹbu FastAPI Python ni a ṣẹda lati ilẹ lati lo anfani ti awọn agbara Python imusin.
Fun asynchronous, ibaraẹnisọrọ nigbakan pẹlu awọn alabara, o faramọ boṣewa ASGI, lakoko ti o tun lagbara lati lo WSGI.
Awọn aaye ipari ati awọn ipa-ọna le mejeeji lo awọn iṣẹ async. Ni afikun, FastAPI ngbanilaaye ẹda iṣelọpọ ti awọn ohun elo wẹẹbu ni iru-itanna, mimọ, koodu Python imusin.
Ọran lilo akọkọ ti FastAPI jẹ, bi orukọ ṣe daba, ṣiṣẹda awọn aaye ipari API.
Lilo boṣewa OpenAPI, eyiti o pẹlu Swagger UI ibaraenisepo, tabi pese data iwe-itumọ Python bi JSON jẹ awọn ọna irọrun mejeeji lati ṣaṣeyọri eyi. Sibẹsibẹ, FastAPI kii ṣe fun awọn API nikan.
O le ṣee lo lati pese awọn oju-iwe wẹẹbu boṣewa ni lilo ẹrọ awoṣe Jinja2 ati lati sin awọn ohun elo ni lilo WebSockets, ni afikun si lẹwa pupọ ohun gbogbo miiran ilana wẹẹbu le ṣe.
Ninu nkan yii, a yoo ṣe agbekalẹ awoṣe ikẹkọ ẹrọ taara ati lẹhinna lo FastAPI lati mu lọ. Jẹ ká bẹrẹ.
Fifi sori ẹrọ ti FastAPI ati ẹda ti API akọkọ
Fifi sori ẹrọ ile-ikawe ati olupin ASGI kan nilo akọkọ; boya Uvuicorn tabi Hypercorn yoo ṣiṣẹ. O ṣiṣẹ nipa titẹ aṣẹ wọnyi sinu Terminal:
Ni bayi pe API ti ṣẹda, o le lo olootu koodu ti o fẹ ki o lọ kiri nipasẹ rẹ. Ṣẹda iwe afọwọkọ Python ti a pe ni ml_model.py lati bẹrẹ. O ṣe itẹwọgba lati fun tirẹ ni orukọ ti o yatọ, ṣugbọn nitori ifiweranṣẹ yii, Emi yoo tọka si faili yii bi ml_model.py.
Lati ṣẹda API titọ pẹlu awọn aaye ipari meji, o gbọdọ pari awọn iṣẹ ṣiṣe wọnyi:
- Gbe wọle FastAPI ati awọn ile-ikawe Uvicorn.
- Ṣeto apẹẹrẹ kilasi FastAPI kan.
- Sọ ipa-ọna akọkọ, eyiti, lori oju-iwe atọka, ṣe agbejade ohun taara taara JSON.
- Sọ ipa-ọna keji, eyiti o pese ohun elo JSON taara pẹlu ifiranṣẹ ti a ṣe adani. A ya paramita orukọ taara lati URL (fun apẹẹrẹ, https://127.0.0.1:8000/Jay).
- Lo Uvicorn lati ṣiṣẹ API.
Ṣiṣe awọn ipele marun wọnyi jẹ afihan ni koodu diẹ ti atẹle ie. ṣiṣẹda kan ti o rọrun API
Gbogbo ṣe! Jẹ ki a ṣe ifilọlẹ API wa lẹsẹkẹsẹ. Ṣii window Terminal kan lẹgbẹẹ faili ml model.py lati ṣe eyi. Nigbamii, tẹ atẹle naa:
bọtini Tẹ sii. Ṣaaju ki o to tẹsiwaju, jẹ ki a sọ asọye yii. Ohun elo akọkọ jẹ lilo orukọ faili Python nikan, laisi itẹsiwaju. Ohun elo keji gbọdọ ni orukọ kanna gẹgẹbi apẹẹrẹ FastAPI rẹ.
Nipa lilo -reload, o sọ fun API pe o fẹ ki o tun gbejade laifọwọyi nigbati o ba fi faili pamọ ju ki o bẹrẹ lati ibere.
Bayi lọlẹ ẹrọ aṣawakiri kan ki o lọ kiri si https://127.0.0.1:8000; Abajade yẹ ki o han bi atẹle: +
O loye bayi bi o ṣe le ṣẹda API ti o rọrun nipa lilo FastAPI.
Ilé ati ikẹkọ awoṣe Ẹkọ Ẹrọ
Laisi gbigba tabi itupalẹ eyikeyi data, a yoo kan ṣe ikẹkọ awoṣe ti o rọrun. Iwọnyi ko ni ibatan si imuṣiṣẹ ti awọn awoṣe ati pe ko ṣe pataki si koko-ọrọ ni ọwọ.
Awoṣe ti o da lori dataset Iris le fi sii ni lilo kanna Nẹtiwọki ti nhu fifi sori ọna.
Ati pe a yoo ṣe bẹ: ṣe igbasilẹ naa Iris dataset ati ikẹkọ awoṣe. Iyẹn kii yoo rọrun. Lati bẹrẹ, ṣe faili kan ti a npè ni jaysmlmodel.py.
Ninu rẹ, iwọ yoo ṣe awọn atẹle:
- Awọn agbewọle lati ilu okeere - Iwọ yoo nilo pandas, scikit-RandomForecastClassifier, kọ ẹkọ Pidantic's BaseModel (iwọ yoo ṣe iwari idi ni igbesẹ atẹle), ati joblib fun titoju ati awọn awoṣe ikojọpọ.
- Sọ kilasi IrisSpecies kan ti o jogun lati inu awoṣe ipilẹ. Kilasi yii nikan ni awọn aaye ti o nilo lati ṣe asọtẹlẹ eya ododo kan (diẹ sii lori iyẹn ni apakan atẹle)
- Ṣẹda kilasi. IrisModel jẹ ikẹkọ awoṣe ati ọpa asọtẹlẹ.
- Sọ ọna ti a npè ni _train awoṣe laarin IrisModel. O ti lo lati ṣe ikẹkọ awọn awoṣe nipa lilo ilana Awọn igbo ID. Awoṣe ikẹkọ ti pada nipasẹ ilana naa.
- Ṣe ikede iṣẹ ẹya ti a sọtẹlẹ ninu IrisModel. O jẹ lilo lati ṣe asọtẹlẹ ti o da lori awọn ifosiwewe igbewọle 4 (awọn wiwọn ododo). Mejeeji awọn asọtẹlẹ (ẹya ododo) ati iṣeeṣe asọtẹlẹ jẹ pada nipasẹ algoridimu.
- Yi olupilẹṣẹ pada ni IrisModel ki o le ṣajọpọ dataset Iris ati ṣe ikẹkọ awoṣe ti o ba nsọnu lati folda naa. Eyi yanju iṣoro ti ikẹkọ leralera awọn awoṣe tuntun. Ile-ikawe joblib jẹ lilo fun ikojọpọ awoṣe ati fifipamọ.
Eyi ni gbogbo koodu:
Mo nireti pe atokọ ti o wa loke ati awọn asọye jẹ ki o rọrun lati ni oye botilẹjẹpe eyi jẹ iye koodu ti o pọju lati ṣẹda. Ni bayi pe awoṣe yii ti ni idagbasoke, jẹ ki a ṣe atẹjade awọn agbara asọtẹlẹ rẹ lori a REST API.
Ṣiṣẹda API REST ni kikun
Pada si faili ml_model.py ki o si nu gbogbo data naa kuro. Awọn igbomikana yoo jẹ pataki kanna bi ohun ti o ni tẹlẹ, ṣugbọn o yẹ ki a bẹrẹ pẹlu faili òfo.
Iwọ yoo ṣalaye aaye ipari kan ni akoko yii, eyiti o jẹ eyiti a lo lati pinnu iru ododo. eya IrisModel.predict (), eyiti a kede ni apakan iṣaaju, ni a pe nipasẹ aaye ipari yii lati ṣe asọtẹlẹ naa.
Iru ibeere jẹ iyipada nla miiran. Lati le tan kaakiri ni JSON dipo URL, o gba ọ niyanju pe ki o lo POST nigba lilo imudani ẹrọ Awọn API.
Awọn loke gbolohun le ti dun bi gibberish ti o ba ti o ba wa ni a onimo ijinlẹ data, sugbon o dara. Lati ṣe apẹrẹ ati ran awọn awoṣe ṣiṣẹ, ẹnikan ko nilo dandan lati jẹ alamọja lori awọn ibeere HTTP ati awọn API REST.
Awọn iṣẹ-ṣiṣe fun ml model.py jẹ diẹ ati titọ:
- O gbọdọ gbe nkan wọnyi wọle lati inu faili jaymlmodel.py ti o ṣẹda tẹlẹ: uvicorn, FastAPI, IrisModel, ati IrisSpecies.
- Ṣẹda awọn iṣẹlẹ ti FastAPI ati IrisModel.
- Sọ iṣẹ kan ni https://127.0.0.1:8000/sọtẹlẹ lati ṣe awọn asọtẹlẹ.
- Ọna IrisModel.predict eya () gba ohun iru IrisSpecies, yi pada si iwe-itumọ, ati lẹhinna da pada. Awọn ipadabọ jẹ kilasi ti a nireti ati iṣeeṣe asọtẹlẹ.
- Lo uvicorn lati ṣiṣẹ API.
Sibẹsibẹ lẹẹkansi, eyi ni gbogbo koodu faili papọ pẹlu awọn asọye rẹ:
Iyẹn ni gbogbo ohun ti o nilo lati ṣe. Ni igbesẹ ti n tẹle, jẹ ki a ṣe idanwo API.
Idanwo API
Tun-tẹ laini atẹle sii sinu Terminal lati ṣiṣẹ API: uvicorn ml_model: app –reload
Eyi ni bii oju-iwe iwe-ipamọ ṣe han:
Nitorinaa iyẹn ni fun oni. Ni apakan lẹhin eyi, jẹ ki a pari.
ipari
Loni, o kọ kini FastAPI jẹ ati bii o ṣe le lo, ni lilo mejeeji apẹẹrẹ API ti o rọrun ati apẹẹrẹ ikẹkọ ẹrọ ti o rọrun. O tun ti kọ bi o ṣe le ṣẹda ati wo awọn iwe API, bakanna bi o ṣe le ṣe idanwo rẹ.
Iyẹn jẹ pupọ fun nkan ẹyọkan, nitorinaa maṣe iyalẹnu ti o ba gba awọn kika diẹ lati loye daradara.
Idunnu ifaminsi.
Fi a Reply