Адным з аспектаў сцэнарыя з'яўляецца стварэнне мадэлі машыннага навучання. Ён павінен быць прыдатным для выкарыстання ў рэальным свеце і даступным спажыўцам і распрацоўшчыкам.
Самы просты і папулярны спосаб разгортвання мадэляў машыннага навучання - гэта ўключыць іх у REST API.
З дапамогай папулярнай бібліятэкі пад назвай FastAPI, гэта менавіта тое, што мы зробім сёння.
Але, што ёсць FastAPI?
Вэб-фреймворк FastAPI Python быў створаны з нуля, каб выкарыстоўваць перавагі сучасных магчымасцей Python.
Для асінхроннай адначасовай сувязі з кліентамі ён прытрымліваецца стандарту ASGI, а таксама можа выкарыстоўваць WSGI.
Канчатковыя пункты і маршруты могуць выкарыстоўваць асінхронныя функцыі. Акрамя таго, FastAPI дазваляе прадуктыўна ствараць вэб-праграмы ў чыстым, сучасным кодзе Python з падказкай тыпу.
Асноўным варыянтам выкарыстання FastAPI, як вынікае з назвы, з'яўляецца стварэнне канчатковых кропак API.
Выкарыстанне стандарту OpenAPI, які ўключае інтэрактыўны інтэрфейс Swagger, або прадастаўленне дадзеных слоўніка 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. Каб зрабіць гэта, адкрыйце акно тэрмінала побач з файлам ml model.py. Далей увядзіце наступнае:
клавіша Enter. Перш чым рухацца далей, давайце развянчаем гэта сцвярджэнне. Першая праграма выкарыстоўвае адно імя файла Python без пашырэння. Другая праграма павінна мець тое ж імя, што і ваш асобнік FastAPI.
Выкарыстоўваючы -reload, вы паведамляеце API, што хочаце, каб ён аўтаматычна перазагружаўся пры захаванні файла, а не пачынаў з нуля.
Цяпер запусціце браўзер і перайдзіце да https://127.0.0.1:8000; вынік павінен выглядаць наступным чынам:
Цяпер вы разумееце, як стварыць просты API з дапамогай FastAPI.
Стварэнне і навучанне мадэлі машыннага навучання
Не збіраючы і не аналізуючы ніякіх даных, мы проста навучым простую мадэль. Яны не звязаны з разгортваннем мадэляў і не з'яўляюцца істотнымі для разгляданай тэмы.
Мадэль, заснаваную на наборы дадзеных Iris, можна ўсталяваць з дапамогай таго ж нейронных сеткі спосаб ўстаноўкі.
І мы зробім менавіта гэта: загрузім Набор даных касача і навучыць мадэль. Гэта будзе няпроста. Для пачатку стварыце файл з імем jaysmlmodel.py.
У ім вы будзеце рабіць наступнае:
- Імпарт — Вам спатрэбяцца pandas, scikit-RandomForecastClassifier, BaseModel ад learn's pydantic (на наступным этапе вы даведаецеся, чаму) і Joblib для захоўвання і загрузкі мадэляў.
- Аб'явіце клас IrisSpecies, які ўспадкоўвае базавую мадэль. Гэты клас утрымлівае толькі палі, неабходныя для прагназавання аднаго віду кветкі (падрабязней пра гэта ў наступным раздзеле)
- Стварыце клас. IrisModel - гэта інструмент навучання мадэляў і прагназавання.
- Аб'явіце метад з імем _train model у IrisModel. Ён выкарыстоўваецца для навучання мадэляў з выкарыстаннем тэхнікі выпадковых лясоў. Працэдура вяртае навучаную мадэль.
- Аб'явіце функцыю прадказанага віду ўнутры IrisModel. Ён выкарыстоўваецца для прагназавання на аснове 4 фактараў уводу (вымярэння кветак). Алгарытм вяртае як прагноз (віды кветак), так і верагоднасць прагнозу.
- Зменіце канструктар у IrisModel так, каб ён загружаў набор даных Iris і навучаў мадэль, калі яна адсутнічае ў тэчцы. Гэта вырашае праблему шматразовага навучання новых мадэляў. Бібліятэка joblib выкарыстоўваецца для загрузкі і захавання мадэлі.
Вось увесь код:
Я спадзяюся, што прыведзены вышэй спіс і каментарыі зрабілі яго лёгкім для разумення, нават калі гэта была значная колькасць кода для стварэння. Цяпер, калі гэтая мадэль распрацавана, давайце апублікуем яе магчымасці прагназавання на працягу a REST API.
Стварэнне поўнага REST API
Вярніцеся да файла ml_model.py і ачысціце ўсе даныя. Шаблон будзе па сутнасці такім жа, як і раней, але мы павінны пачаць спачатку з пустога файла.
На гэты раз вы вызначыце толькі адну канечную кропку, якая выкарыстоўваецца для вызначэння тыпу кветкі. IrisModel.predict species(), які быў заяўлены ў папярэднім раздзеле, выклікаецца гэтай канчатковай кропкай для выканання прагнозу.
Тып запыту - яшчэ адна вялікая змена. Для перадачы параметраў у JSON, а не ў URL, рэкамендуецца выкарыстоўваць POST пры выкарыстанні навучанне з дапамогай машыны API-інтэрфейсы.
Калі вы а дадзеныя вучонага, але гэта нармальна. Каб распрацоўваць і разгортваць мадэлі, неабавязкова быць экспертам па 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, а таксама як яе тэставаць.
Гэта вельмі шмат для адной часткі, таму не здзіўляйцеся, калі для правільнага разумення спатрэбіцца некалькі чытанняў.
Шчаслівага кадавання.
Пакінуць каментар