Սցենարի մի ասպեկտը մեքենայական ուսուցման մոդելի ստեղծումն է: Այն պետք է օգտագործվի իրական աշխարհում և հասանելի լինի սպառողների և մշակողների համար:
Մեքենայի ուսուցման մոդելների տեղակայման ամենապարզ և ամենատարածված ձևը դրանք REST API-ում ներառելն է:
FastAPI կոչվող հանրաճանաչ գրադարանով հենց դա է այն, ինչ մենք այսօր կիրագործենք:
Բայց, ինչ է FastAPI?
FastAPI Python վեբ շրջանակը ստեղծվել է ի սկզբանե՝ օգտվելու Python-ի ժամանակակից հնարավորություններից:
Հաճախորդների հետ ասինխրոն, միաժամանակյա հաղորդակցության համար այն հավատարիմ է ASGI ստանդարտին, մինչդեռ կարող է նաև օգտագործել WSGI:
Վերջնակետերը և երթուղիները կարող են օգտագործել համաժամեցման գործառույթներ: Բացի այդ, FastAPI-ն հնարավորություն է տալիս վեբ հավելվածների արդյունավետ ստեղծումը տիպային, մաքուր, ժամանակակից Python կոդով:
FastAPI-ի հիմնական օգտագործման դեպքը, ինչպես անունն է հուշում, API-ի վերջնակետերի ստեղծումն է:
OpenAPI ստանդարտի օգտագործումը, որը ներառում է ինտերակտիվ Swagger UI, կամ Python բառարանի տվյալների տրամադրումը որպես JSON, երկուսն էլ դրան հասնելու պարզ ուղիներ են: Այնուամենայնիվ, FastAPI-ն միայն API-ների համար չէ:
Այն կարող է օգտագործվել ստանդարտ վեբ էջեր առաջարկելու համար՝ օգտագործելով Jinja2 կաղապարի շարժիչը և սպասարկելու հավելվածներ, որոնք օգտագործում են WebSockets-ը, ի լրումն այն ամենի, ինչ կարող է անել վեբ շրջանակը:
Այս հոդվածում մենք կմշակենք մեքենայական ուսուցման պարզ մոդել, այնուհետև կօգտագործենք FastAPI՝ այն տեղակայելու համար: Եկեք սկսենք.
FastAPI-ի տեղադրում և առաջին API-ի ստեղծում
Նախ անհրաժեշտ է գրադարանի և ASGI սերվերի տեղադրում; կամ Uvuicorn կամ Hypercorn-ը կաշխատի: Այն աշխատում է՝ տերմինալում մուտքագրելով հետևյալ հրամանը.
Այժմ, երբ API-ն ստեղծվել է, կարող եք օգտագործել ձեր նախընտրած կոդերի խմբագրիչը և թերթել այն: Սկսելու համար ստեղծեք Python սկրիպտ, որը կոչվում է ml_model.py: Դուք կարող եք տալ ձերն այլ անուն, բայց հանուն այս գրառման, ես այս ֆայլը կվերաբերեմ որպես ml_model.py:
Երկու վերջնակետով պարզ API ստեղծելու համար դուք պետք է կատարեք հետևյալ առաջադրանքները.
- Ներմուծեք FastAPI և Uvicorn գրադարանները:
- Ստեղծեք FastAPI դասի օրինակ:
- Հայտարարեք առաջին երթուղին, որը ինդեքսի էջում արտադրում է պարզ JSON օբյեկտ:
- Հայտարարեք երկրորդ երթուղին, որն ապահովում է պարզ JSON օբյեկտ՝ հարմարեցված հաղորդագրությունով: Անվան պարամետրը վերցված է անմիջապես URL-ից (օրինակ՝ https://127.0.0.1:8000/Jay):
- API-ն գործարկելու համար օգտագործեք Uvicorn-ը:
Այս հինգ փուլերի իրականացումը ցուցադրվում է կոդի հետևյալ բիթում, այսինքն. ստեղծելով պարզ API
Ամեն ինչ արված է! Եկեք անմիջապես գործարկենք մեր API-ն: Դա անելու համար բացեք Տերմինալի պատուհանը ml model.py ֆայլի կողքին: Հաջորդը, մուտքագրեք հետևյալը.
Enter ստեղնը: Նախքան առաջ անցնելը, եկեք հերքենք այս պնդումը: Առաջին հավելվածն օգտագործում է Python ֆայլի անունը միայնակ՝ առանց ընդլայնման: Երկրորդ հավելվածը պետք է ունենա նույն անունը, ինչ ձեր FastAPI օրինակը:
Օգտագործելով -reload, դուք ասում եք API-ին, որ ցանկանում եք, որ այն ավտոմատ կերպով վերաբեռնվի, երբ դուք պահում եք ֆայլը, այլ ոչ թե զրոյից սկսելու համար:
Այժմ գործարկեք զննարկիչը և անցեք https://127.0.0.1:8000; արդյունքը պետք է հայտնվի հետևյալ կերպ.
Այժմ դուք հասկանում եք, թե ինչպես ստեղծել պարզ API՝ օգտագործելով FastAPI:
Մեքենայի ուսուցման մոդելի կառուցում և ուսուցում
Առանց որևէ տվյալ հավաքելու կամ վերլուծելու, մենք պարզապես կպատրաստենք պարզ մոդել: Սրանք կապ չունեն մոդելների տեղակայման հետ և կարևոր չեն տվյալ թեմայի համար:
Iris տվյալների բազայի վրա հիմնված մոդելը կարող է տեղադրվել նույնի միջոցով նյարդային ցանց տեղադրման եղանակը.
Եվ մենք հենց դա կանենք՝ ներբեռնեք Iris տվյալների բազա և վարժեցնել մոդելին: Դա պարզ չի լինի: Սկսելու համար ստեղծեք jaysmlmodel.py անունով ֆայլ:
Դրանում դուք կանեք հետևյալը.
- Ներմուծում. Ձեզ անհրաժեշտ են պանդաներ, scikit-RandomForecastClassifier, Learn's pydantic's BaseModel (դուք կիմանաք, թե ինչու հաջորդ քայլում), և joblib մոդելները պահելու և բեռնելու համար:
- Հայտարարեք IrisSpecies դաս, որը ժառանգում է բազային մոդելից: Այս դասը պարունակում է միայն դաշտեր, որոնք անհրաժեշտ են մեկ ծաղկի տեսակների կանխատեսման համար (այդ մասին ավելին` հաջորդ բաժնում)
- Ստեղծեք դաս. IrisModel-ը մոդելային ուսուցման և կանխատեսման գործիք է:
- Հայտարարեք _train model անունով մեթոդ IrisModel-ում: Այն օգտագործվում է Random Forests տեխնիկայի կիրառմամբ մոդելներին մարզելու համար: Վերապատրաստված մոդելը վերադարձվում է ընթացակարգով:
- Հայտարարեք կանխատեսված տեսակների գործառույթը IrisModel-ի ներսում: Այն օգտագործվում է կանխատեսման համար՝ հիմնվելով 4 մուտքային գործոնների վրա (ծաղկի չափումներ): Ե՛վ կանխատեսումը (ծաղկի տեսակները), և՛ կանխատեսման հավանականությունը վերադարձվում են ալգորիթմով:
- Փոխեք կոնստրուկտորը IrisModel-ում, որպեսզի այն բեռնի Iris տվյալների բազան և վարժեցնի մոդելը, եթե այն բացակայում է թղթապանակից: Սա լուծում է նոր մոդելների բազմիցս վերապատրաստման խնդիրը: Joblib գրադարանն օգտագործվում է մոդելի բեռնման և պահպանման համար:
Ահա ամբողջ կոդը.
Հուսով եմ, որ վերը նշված ցանկը և մեկնաբանությունները հեշտացրել են հասկանալը, թեև սա ստեղծելու համար կոդի զգալի քանակություն էր: Այժմ, երբ այս մոդելը մշակվել է, եկեք հրապարակենք դրա կանխատեսման հնարավորությունները a REST API.
Ամբողջական REST API-ի կառուցում
Վերադարձեք ml_model.py ֆայլ և մաքրեք բոլոր տվյալները: Կաթսայի ափսեը, ըստ էության, կլինի նույնը, ինչ նախկինում ունեիք, բայց մենք պետք է նորից սկսենք դատարկ ֆայլով:
Այս անգամ դուք կսահմանեք միայն մեկ վերջնակետ, որն օգտագործվում է ծաղկի տեսակը որոշելու համար: IrisModel.predict species(), որը հայտարարվել է նախորդ բաժնում, կանչվում է այս վերջնակետով՝ կանխատեսումն իրականացնելու համար:
Հարցման տեսակը մյուս մեծ փոփոխությունն է: JSON-ով պարամետրեր փոխանցելու համար, այլ ոչ թե URL, խորհուրդ է տրվում օգտագործել POST-ը Machine Learning API- ներ:
Վերոհիշյալ նախադասությունը կարող է հնչել որպես շփոթություն, եթե դուք a տվյալների գիտնական, բայց դա լավ է: Մոդելներ նախագծելու և տեղակայելու համար պարտադիր չէ, որ մարդը փորձագետ լինի HTTP հարցումների և REST API-ների վերաբերյալ:
ml model.py-ի առաջադրանքները քիչ են և պարզ.
- Դուք պետք է ներմուծեք հետևյալը նախկինում ստեղծված jaymlmodel.py ֆայլից՝ uvicorn, FastAPI, IrisModel և IrisSpecies:
- Ստեղծեք FastAPI-ի և IrisModel-ի օրինակներ:
- Հայտարարեք ֆունկցիա https://127.0.0.1:8000/predict կայքում՝ կանխատեսումներ անելու համար:
- IrisModel.predict species() մեթոդը ստանում է IrisSpecies տիպի օբյեկտ, այն վերածում բառարանի և այնուհետև վերադարձնում: Վերադարձները ակնկալվող դասն են և կանխատեսված հավանականությունը:
- Օգտագործեք Uvicorn API-ն գործարկելու համար:
Եվս մեկ անգամ, ահա ամբողջ ֆայլի կոդը՝ իր մեկնաբանությունների հետ միասին.
Դա այն ամենն է, ինչ դուք պետք է անեք: Հաջորդ քայլում եկեք փորձարկենք API-ն։
API-ի փորձարկում
Կրկին մուտքագրեք հետևյալ տողը Տերմինալ՝ API-ն գործարկելու համար. uvicorn ml_model:app –reload
Փաստաթղթերի էջը հայտնվում է այսպես.
Ուրեմն այսօրվա համար վերջ: Սրան հաջորդող հատվածում եզրափակենք.
Եզրափակում
Այսօր դուք իմացաք, թե ինչ է FastAPI-ն և ինչպես օգտագործել այն՝ օգտագործելով ինչպես պարզ API-ի օրինակ, այնպես էլ պարզ մեքենայական ուսուցման օրինակ: Դուք նաև սովորել եք, թե ինչպես ստեղծել և դիտել API փաստաթղթերը, ինչպես նաև ինչպես փորձարկել այն:
Դա շատ է մեկ կտորի համար, այնպես որ մի զարմացեք, եթե մի քանի ընթերցում պահանջվի ճիշտ հասկանալու համար:
Ուրախ կոդավորում:
Թողնել գրառում