Viens no scenārija aspektiem ir mašīnmācīšanās modeļa izveide. Tam jābūt lietojamam reālajā pasaulē un pieejamai patērētājiem un izstrādātājiem.
Vienkāršākais un populārākais veids, kā izvietot mašīnmācības modeļus, ir iekļaut tos REST API.
Ar populāro bibliotēku FastAPI mēs šodien panāksim tieši to.
Bet, kas ir FastAPI?
FastAPI Python tīmekļa ietvars tika izveidots no paša sākuma, lai izmantotu mūsdienu Python iespējas.
Asinhronai, vienlaicīgai saziņai ar klientiem tas atbilst ASGI standartam, vienlaikus spējot izmantot arī WSGI.
Gan galapunktos, gan maršrutos var izmantot asinhronas funkcijas. Turklāt FastAPI ļauj produktīvi izveidot tīmekļa lietotnes, izmantojot tipveida mājienus, tīru, mūsdienīgu Python kodu.
FastAPI galvenais lietošanas gadījums, kā norāda nosaukums, ir API galapunktu izveide.
Vienkāršs veids, kā to panākt, ir OpenAPI standarta izmantošana, kas ietver interaktīvu Swagger lietotāja interfeisu, vai Python vārdnīcas datu nodrošināšana kā JSON. Tomēr FastAPI ir paredzēts ne tikai API.
To var izmantot, lai piedāvātu standarta tīmekļa lapas, izmantojot Jinja2 veidņu dzinēju, un apkalpotu lietotnes, kurās tiek izmantots WebSockets, papildus gandrīz visam pārējam, ko var darīt tīmekļa ietvars.
Šajā rakstā mēs izstrādāsim vienkāršu mašīnmācīšanās modeli un pēc tam izmantosim FastAPI, lai to izvietotu. Sāksim.
FastAPI instalēšana un pirmās API izveide
Vispirms ir jāinstalē bibliotēka un ASGI serveris; derēs vai nu Uvuicorn, vai Hypercorn. Tas darbojas, terminālī ievadot šādu komandu:
Tagad, kad API ir izveidota, varat izmantot vēlamo koda redaktoru un pārlūkot to. Lai sāktu, izveidojiet Python skriptu ar nosaukumu ml_model.py. Laipni lūdzam piešķirt savam citam nosaukumu, taču šīs ziņas dēļ es šo failu nosaukšu kā ml_model.py.
Lai izveidotu vienkāršu API ar diviem galapunktiem, jums ir jāveic šādi uzdevumi:
- Importējiet FastAPI un Uvicorn bibliotēkas.
- Iestatiet FastAPI klases gadījumu.
- Deklarē pirmo maršrutu, kas rādītāja lapā rada vienkāršu JSON objektu.
- Deklarējiet otro maršrutu, kas nodrošina vienkāršu JSON objektu ar pielāgotu ziņojumu. Nosaukuma parametrs tiek ņemts tieši no URL (piemēram, https://127.0.0.1:8000/Jay).
- Izmantojiet Uvicorn, lai palaistu API.
Šo piecu posmu ieviešana ir parādīta nākamajā koda bitā, ti. izveidojot vienkāršu API
Viss pabeigts! Nekavējoties palaidīsim mūsu API. Lai to paveiktu, blakus failam ml model.py atveriet termināļa logu. Pēc tam ievadiet tālāk norādīto.
taustiņu Enter. Pirms turpināt, atspēkosim šo apgalvojumu. Pirmajā lietotnē tiek izmantots tikai Python faila nosaukums bez paplašinājuma. Otrajai lietotnei ir jābūt tādam pašam nosaukumam kā jūsu FastAPI instancei.
Izmantojot -reload, jūs sakāt API, ka vēlaties, lai tas tiktu automātiski atkārtoti ielādēts, kad saglabājat failu, nevis sākt no nulles.
Tagad palaidiet pārlūkprogrammu un dodieties uz https://127.0.0.1:8000; rezultātam vajadzētu izskatīties šādi:
Tagad jūs saprotat, kā izveidot vienkāršu API, izmantojot FastAPI.
Mašīnmācīšanās modeļa izveide un apmācība
Neapkopojot un neanalizējot nekādus datus, mēs tikai apmācīsim vienkāršu modeli. Tie nav saistīti ar modeļu izvietošanu un nav būtiski aplūkojamai tēmai.
Izmantojot to pašu, var instalēt modeli, kura pamatā ir Iris datu kopa neironu tīklu uzstādīšanas metode.
Un mēs to darīsim: lejupielādēsim Iris datu kopa un apmācīt modeli. Tas nebūs vienkārši. Lai sāktu, izveidojiet failu ar nosaukumu jaysmlmodel.py.
Tajā jūs darīsit tālāk norādītās darbības.
- Importēšana — jums būs nepieciešamas pandas, scikit-RandomForecastClassifier, learning's pydantic's BaseModel (kādēļ jūs uzzināsit nākamajā darbībā) un joblib modeļu glabāšanai un ielādei.
- Deklarē IrisSugu klasi, kas manto no bāzes modeļa. Šajā klasē ir tikai lauki, kas nepieciešami vienas ziedu sugas prognozēšanai (vairāk par to nākamajā sadaļā)
- Izveidojiet klasi. IrisModel ir modeļu apmācības un prognozēšanas rīks.
- IrisModel deklarējiet metodi ar nosaukumu _train model. To izmanto modeļu apmācīšanai, izmantojot Random Forests tehniku. Apmācītais modelis tiek atgriezts ar procedūru.
- Deklarē paredzamo sugas funkciju iekš IrisModel. To izmanto, lai prognozētu, pamatojoties uz 4 ievades faktoriem (ziedu mērījumi). Algoritms atgriež gan prognozi (ziedu sugas), gan prognozes varbūtību.
- Mainiet konstruktoru programmā IrisModel, lai tas ielādētu Iris datu kopu un apmācītu modeli, ja tā trūkst mapē. Tas atrisina jaunu modeļu atkārtotas apmācības problēmu. Joblib bibliotēka tiek izmantota modeļu ielādei un saglabāšanai.
Šeit ir viss kods:
Es ceru, ka iepriekš minētais saraksts un komentāri ļāva to viegli uztvert, lai gan izveidoja ievērojamu daudzumu koda. Tagad, kad šis modelis ir izstrādāts, publicēsim tā prognozēšanas iespējas a REST API.
Pilnas REST API izveide
Atgriezieties failā ml_model.py un iztīriet visus datus. Pamatplāksne būtībā būs tāda pati kā iepriekš, taču mums vajadzētu sākt no jauna ar tukšu failu.
Šoreiz jūs definēsit tikai vienu beigu punktu, kas tiek izmantots zieda veida noteikšanai. IrisModel.predict sugas(), kas tika deklarēta iepriekšējā sadaļā, šis galapunkts izsauc, lai veiktu prognozēšanu.
Pieprasījuma veids ir otra lielā izmaiņa. Lai parametrus pārsūtītu JSON, nevis URL formātā, ieteicams izmantot POST mašīna mācīšanās API
Iepriekš minētais teikums, iespējams, izklausījās pēc muļķības, ja esat a datu zinātnieks, bet tas ir labi. Lai izstrādātu un izvietotu modeļus, nav obligāti jābūt HTTP pieprasījumu un REST API ekspertam.
Vietnei ml model.py ir maz uzdevumu un tie ir vienkārši:
- No iepriekš izveidotā jaymlmodel.py faila ir jāimportē: uvicorn, FastAPI, IrisModel un IrisSpecies.
- Izveidojiet FastAPI un IrisModel gadījumus.
- Lai veiktu prognozes, deklarējiet funkciju vietnē https://127.0.0.1:8000/predict.
- Metode IrisModel.predict species() saņem IrisSpecies tipa objektu, pārveido to par vārdnīcu un pēc tam atgriež. Atdeve ir paredzamā klase un paredzamā varbūtība.
- Izmantojiet uvicorn, lai izpildītu API.
Vēlreiz šeit ir visa faila kods kopā ar tā komentāriem:
Tas ir viss, kas jums jādara. Nākamajā darbībā pārbaudīsim API.
API testēšana
Lai izpildītu API, atkārtoti ievadiet šo rindiņu terminālī: uvicorn ml_model:app –reload
Šādi parādās dokumentācijas lapa:
Tā nu tas šodienai. Daļā pēc šīs, noslēgsim.
Secinājumi
Šodien jūs uzzinājāt, kas ir FastAPI un kā to izmantot, izmantojot gan vienkāršu API piemēru, gan vienkāršu mašīnmācīšanās piemēru. Jūs esat arī iemācījies izveidot un skatīt API dokumentāciju, kā arī to pārbaudīt.
Tas ir daudz vienam gabalam, tāpēc nebrīnieties, ja ir nepieciešami daži lasījumi, lai pareizi saprastu.
Laimīgu kodēšanu.
Atstāj atbildi