Një aspekt i skenarit është krijimi i një modeli të mësimit të makinës. Ai duhet të jetë i përdorshëm në botën reale dhe i disponueshëm për konsumatorët dhe zhvilluesit.
Mënyra më e thjeshtë dhe më e popullarizuar për të vendosur modelet e mësimit të makinerive është t'i mbyllni ato në një API REST.
Me një bibliotekë të njohur të quajtur FastAPI, kjo është pikërisht ajo që do të arrijmë sot.
Por, çfarë është FastAPI?
Korniza e uebit FastAPI Python u krijua nga themeli për të përfituar nga aftësitë bashkëkohore të Python.
Për komunikim asinkron, të njëkohshëm me klientët, ai i përmbahet standardit ASGI, ndërsa është i aftë të përdorë edhe WSGI.
Pikat përfundimtare dhe rrugët mund të përdorin funksione asinkronike. Për më tepër, FastAPI mundëson krijimin produktiv të aplikacioneve në ueb në kodin bashkëkohor Python të nënkuptuar, të pastër dhe të tipit.
Rasti kryesor i përdorimit të FastAPI është, siç sugjeron emri, krijimi i pikave fundore të API.
Përdorimi i standardit OpenAPI, i cili përfshin një ndërfaqe interaktive Swagger, ose ofrimi i të dhënave të fjalorit Python si JSON janë të dyja mënyra të thjeshta për ta arritur këtë. Sidoqoftë, FastAPI nuk është vetëm për API-të.
Mund të përdoret për të ofruar faqe standarde të internetit duke përdorur motorin e modelit Jinja2 dhe për të shërbyer aplikacione që përdorin WebSockets, përveç pothuajse gjithçkaje tjetër që mund të bëjë një kornizë ueb.
Në këtë artikull, ne do të zhvillojmë një model të thjeshtë të mësimit të makinerive dhe më pas do të përdorim FastAPI për ta vendosur atë. Le të fillojmë.
Instalimi i FastAPI dhe krijimi i API-së së parë
Fillimisht kërkohet instalimi i bibliotekës dhe një serveri ASGI; ose Uvuicorn ose Hypercorn do të funksionojnë. Ai funksionon duke futur komandën e mëposhtme në Terminal:
Tani që API është krijuar, mund të përdorni redaktuesin tuaj të preferuar të kodit dhe ta shfletoni atë. Krijo një skript Python të quajtur ml_model.py për të filluar. Jeni të mirëpritur të vendosni emrin tuaj të ndryshëm, por për hir të këtij postimi, unë do t'i referohem këtij skedari si ml_model.py.
Për të krijuar një API të drejtpërdrejtë me dy pika fundore, duhet të plotësoni detyrat e mëposhtme:
- Importoni bibliotekat FastAPI dhe Uvicorn.
- Vendosni një shembull të klasës FastAPI.
- Deklaroni rrugën e parë, e cila, në faqen e indeksit, prodhon një objekt të drejtpërdrejtë JSON.
- Deklaroni rrugën e dytë, e cila siguron një objekt të drejtpërdrejtë JSON me një mesazh të personalizuar. Parametri i emrit merret direkt nga URL-ja (për shembull, https://127.0.0.1:8000/Jay).
- Përdorni Uvicorn për të ekzekutuar API-në.
Zbatimi i këtyre pesë fazave tregohet në kodin e mëposhtëm dmth. duke krijuar një API të thjeshtë
Gjithçka u krye! Le të hapim menjëherë API-në tonë. Hapni një dritare të Terminalit pranë skedarit ml model.py për ta arritur këtë. Tjetra, shkruani sa vijon:
tastin Enter. Para se të vazhdojmë, le ta hedhim poshtë këtë pohim. Aplikacioni i parë përdor vetëm emrin e skedarit Python, pa shtesë. Aplikacioni i dytë duhet të ketë të njëjtin emër si shembulli juaj FastAPI.
Duke përdorur -reload, ju i tregoni API-së që dëshironi që ajo të ringarkohet automatikisht kur ruani skedarin në vend që të fillojë nga e para.
Tani hapni një shfletues dhe lundroni te https://127.0.0.1:8000; rezultati duhet të shfaqet si më poshtë:
Tani e kuptoni se si të krijoni një API të thjeshtë duke përdorur FastAPI.
Ndërtimi dhe trajnimi i modelit të Mësimit të Makinerisë
Pa mbledhur apo analizuar asnjë të dhënë, ne thjesht do të trajnojmë një model të thjeshtë. Këto nuk kanë lidhje me vendosjen e modeleve dhe nuk janë thelbësore për temën në fjalë.
Një model i bazuar në grupin e të dhënave Iris mund të instalohet duke përdorur të njëjtin Rrjeti nervoz mënyra e instalimit.
Dhe ne do të bëjmë vetëm atë: shkarko Të dhënat e Irisit dhe trajnoni modelin. Kjo nuk do të jetë e thjeshtë. Për të filluar, krijoni një skedar me emrin jaysmlmodel.py.
Në të, ju do të bëni sa më poshtë:
- Importet — Do t'ju duhen panda, scikit-RandomForecastClassifier, BaseModel-i i Learn's pydantic (do ta zbuloni pse në hapin e mëposhtëm) dhe joblib për ruajtjen dhe ngarkimin e modeleve.
- Deklaroni një klasë IrisSpecies që trashëgon nga modeli bazë. Kjo klasë përmban vetëm fushat e nevojshme për të parashikuar një specie të vetme lulesh (më shumë për këtë në seksionin vijues)
- Krijo një klasë. IrisModel është një model trajnimi dhe mjeti parashikimi.
- Deklaroni një metodë të quajtur _train model brenda IrisModel. Përdoret për të trajnuar modele duke përdorur teknikën Random Forests. Modeli i trajnuar kthehet me procedurë.
- Deklaroni një funksion të parashikuar të specieve brenda IrisModel. Përdoret për të parashikuar në bazë të 4 faktorëve hyrës (matjet e luleve). Si parashikimi (llojet e luleve) ashtu edhe probabiliteti i parashikimit kthehen nga algoritmi.
- Ndryshoni konstruktorin në IrisModel në mënyrë që të ngarkojë grupin e të dhënave të Iris dhe të trajnojë modelin nëse mungon në dosje. Kjo zgjidh problemin e trajnimit të përsëritur të modeleve të reja. Biblioteka joblib përdoret për ngarkimin dhe ruajtjen e modelit.
Këtu është i gjithë kodi:
Shpresoj se lista e mësipërme dhe komentet e bëjnë të lehtë për t'u kuptuar edhe pse kjo ishte një sasi e konsiderueshme kodi për t'u krijuar. Tani që ky model është zhvilluar, le të publikojmë aftësitë e tij të parashikimit mbi një REST API.
Ndërtimi i një API të plotë REST
Kthehuni te skedari ml_model.py dhe pastroni të gjitha të dhënat. Pllaka e bojlerit do të jetë në thelb e njëjtë me atë që kishit më parë, por duhet të fillojmë nga e para me një skedar bosh.
Ju do të përcaktoni vetëm një pikë përfundimtare këtë herë, e cila është ajo e përdorur për të përcaktuar llojin e luleve. IrisModel.predict species(), e cila u deklarua në seksionin e mëparshëm, thirret nga kjo pikë fundore për të kryer parashikimin.
Lloji i kërkesës është ndryshimi tjetër i madh. Për të transmetuar parametra në JSON dhe jo në URL, rekomandohet të përdorni POST kur përdorni Mësimi makinë API-të.
Fjalia e mësipërme mund të ketë tingëlluar si dërdëllitje nëse jeni a shkencëtar i të dhënave, por kjo është në rregull. Për të hartuar dhe vendosur modele, nuk duhet domosdoshmërisht të jeni ekspert në kërkesat HTTP dhe API-të REST.
Detyrat për ml model.py janë të pakta dhe të thjeshta:
- Duhet të importoni sa vijon nga skedari jaymlmodel.py i krijuar më parë: uvicorn, FastAPI, IrisModel dhe IrisSpecies.
- Krijoni shembuj të FastAPI dhe IrisModel.
- Deklaroni një funksion në https://127.0.0.1:8000/predict për të bërë parashikime.
- Metoda IrisModel.predict species() merr një objekt të tipit IrisSpecies, e transformon atë në një fjalor dhe më pas e kthen atë. Kthimet janë klasa e pritur dhe probabiliteti i parashikuar.
- Përdorni Uvicorn për të ekzekutuar API-në.
Përsëri, këtu është i gjithë kodi i skedarit së bashku me komentet e tij:
Kjo është gjithçka që ju duhet të bëni. Në hapin tjetër, le të testojmë API-në.
Testimi i API-së
Rifusni rreshtin e mëposhtëm në Terminal për të ekzekutuar API-në: uvicorn ml_model:app –reload
Kështu shfaqet faqja e dokumentacionit:
Pra, kjo është ajo për sot. Në pjesën pas kësaj, le të përfundojmë.
Përfundim
Sot, ju mësuat se çfarë është FastAPI dhe si ta përdorni atë, duke përdorur një shembull të thjeshtë API dhe një shembull të thjeshtë të mësimit të makinerive. Ju keni mësuar gjithashtu se si të krijoni dhe shikoni dokumentacionin API, si dhe si ta testoni atë.
Kjo është shumë për një pjesë të vetme, kështu që mos u habitni nëse duhen disa lexime për t'u kuptuar siç duhet.
Kodimi i lumtur.
Lini një Përgjigju