Еден аспект од сценариото е создавање модел за машинско учење. Таа мора да биде употреблива во реалниот свет и достапна за потрошувачите и програмерите.
Наједноставниот и најпопуларниот начин за распоредување модели за машинско учење е да се приложат во 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).
- Користете Uvicorn за да го стартувате API-то.
Спроведувањето на овие пет фази е прикажано во следниот дел од кодот т.е. создавање на едноставен API
Се е готово! Ајде да го стартуваме нашето API веднаш. Отворете го прозорецот Terminal до датотеката ml model.py за да го постигнете ова. Следно, внесете го следново:
копчето Enter. Пред да продолжиме понатаму, да го разоткриеме ова тврдење. Првата апликација го користи само името на датотеката Python, без наставката. Втората апликација мора да го има истото име како и вашиот примерок FastAPI.
Со користење на -reload, му кажувате на API дека сакате автоматски да се вчита кога ќе ја зачувате датотеката наместо да започне од нула.
Сега стартувајте прелистувач и одете на https://127.0.0.1:8000; исходот треба да изгледа како што следува:
Сега разбирате како да креирате едноставно API користејќи FastAPI.
Изградба и обука на моделот Машинско учење
Без собирање или анализа на какви било податоци, само ќе обучиме едноставен модел. Овие не се поврзани со распоредувањето на моделите и не се од суштинско значење за темата што се разгледува.
Модел базиран на базата на податоци на Iris може да се инсталира користејќи го истиот невронска мрежа метод на инсталација.
И ние ќе го направиме токму тоа: преземете го Податоци за ирис и обучете го моделот. Тоа нема да биде едноставно. За почеток, направете датотека со име jaysmlmodel.py.
Во него, ќе го направите следново:
- Увоз - Ќе ви требаат панди, scikit-RandomForecastClassifier, Learn's pydantic's BaseModel (ќе откриете зошто во следниот чекор) и joblib за складирање и вчитување модели.
- Декларирајте класа IrisSpecies што наследува од основниот модел. Оваа класа содржи само полиња потребни за предвидување на еден вид цвет (повеќе за тоа во следниот дел)
- Создадете класа. IrisModel е алатка за обука и предвидување модели.
- Декларирајте метод со име _train model во рамките на IrisModel. Се користи за обука на модели користејќи ја техниката Random Forests. Обучениот модел се враќа по процедура.
- Објавете ја предвидената функција на видот во IrisModel. Се користи за прогнозирање врз основа на 4 влезни фактори (мерења на цветот). И прогнозата (видови на цвеќиња) и веројатноста за предвидување се враќаат со алгоритмот.
- Променете го конструкторот во IrisModel така што ќе ја вчита базата на податоци на Iris и ќе го обучи моделот ако недостасува во папката. Ова го решава проблемот со постојано тренирање на нови модели. Библиотеката joblib се користи за вчитување и зачувување на модели.
Еве го целиот код:
Се надевам дека горната листа и коментарите го олеснија разбирањето иако ова беше значителна количина на код за креирање. Сега кога овој модел е развиен, ајде да ги објавиме неговите способности за предвидување преку a ОСТАНАТОТО API.
Конструирање на целосен REST API
Вратете се во датотеката ml_model.py и исчистете ги сите податоци. Плочата за котли ќе биде во суштина иста како што ја имавте претходно, но треба да започнеме одново со празна датотека.
Овој пат ќе дефинирате само една крајна точка, која е онаа што се користи за да се одреди типот на цветот. IrisModel.predict species(), кој беше деклариран во претходниот дел, е повикан од оваа крајна точка за да го изврши предвидувањето.
Типот на барање е другата голема промена. За да се пренесат параметри во JSON наместо URL, се препорачува да користите POST кога користите машинско учење АПИ.
Горенаведената реченица можеби звучеше како глупост ако сте а научник за податоци, но тоа е во ред. За дизајнирање и распоредување модели, не мора да се биде експерт за 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, како и како да ја тестирате.
Тоа е многу за едно парче, па немојте да се изненадите ако потребни се неколку читања за правилно разбирање.
Среќно кодирање.
Оставете Одговор