Jedným z aspektov scenára je vytvorenie modelu strojového učenia. Musí byť použiteľný v reálnom svete a dostupný pre spotrebiteľov a vývojárov.
Najjednoduchším a najpopulárnejším spôsobom nasadenia modelov strojového učenia je ich uzavretie do REST API.
S populárnou knižnicou s názvom FastAPI je to presne to, čo dnes dosiahneme.
Ale, čo je FastAPI?
Webový rámec FastAPI Python bol vytvorený od základov s cieľom využiť súčasné možnosti Pythonu.
Pre asynchrónnu, súbežnú komunikáciu s klientmi dodržiava štandard ASGI, pričom je schopný využívať aj WSGI.
Koncové body aj trasy môžu využívať asynchrónne funkcie. FastAPI navyše umožňuje produktívne vytváranie webových aplikácií v typovo naznačenom, čistom a modernom kóde Pythonu.
Hlavným prípadom použitia FastAPI je, ako už názov napovedá, vytváranie koncových bodov API.
Použitie štandardu OpenAPI, ktorý zahŕňa interaktívne používateľské rozhranie Swagger, alebo poskytovanie údajov zo slovníka Python ako JSON sú jednoduché spôsoby, ako to dosiahnuť. FastAPI však nie je len pre API.
Môže sa použiť na ponúkanie štandardných webových stránok pomocou nástroja šablón Jinja2 a na poskytovanie aplikácií využívajúcich WebSockets, okrem takmer všetkého, čo webový rámec dokáže.
V tomto článku vyvinieme jednoduchý model strojového učenia a potom použijeme FastAPI na jeho nasadenie. Poďme začať.
Inštalácia FastAPI a vytvorenie prvého API
Najprv sa vyžaduje inštalácia knižnice a servera ASGI; buď Uvuicorn alebo Hypercorn bude fungovať. Funguje to zadaním nasledujúceho príkazu do terminálu:
Teraz, keď je rozhranie API vytvorené, môžete použiť svoj preferovaný editor kódu a prehliadať ho. Ak chcete začať, vytvorte skript Python s názvom ml_model.py. Môžete svojmu súboru dať iný názov, ale v záujme tohto príspevku budem tento súbor označovať ako ml_model.py.
Ak chcete vytvoriť jednoduché rozhranie API s dvoma koncovými bodmi, musíte vykonať nasledujúce úlohy:
- Importujte knižnice FastAPI a Uvicorn.
- Nastavte inštanciu triedy FastAPI.
- Deklarujte prvú cestu, ktorá na indexovej stránke vytvorí priamy objekt JSON.
- Deklarujte druhú cestu, ktorá poskytuje priamy objekt JSON s prispôsobenou správou. Parameter názvu je prevzatý priamo z adresy URL (napríklad https://127.0.0.1:8000/Jay).
- Na spustenie API použite Uvicorn.
Implementácia týchto piatich fáz je znázornená v nasledujúcom kúsku kódu, tj. vytvorenie jednoduchého API
Všetko hotové! Okamžite spustíme naše API. Ak to chcete urobiť, otvorte okno Terminál vedľa súboru ml model.py. Ďalej zadajte nasledovné:
kláves Enter. Skôr než prejdeme ďalej, vyvrátime toto tvrdenie. Prvá aplikácia používa iba názov súboru Python bez prípony. Druhá aplikácia musí mať rovnaký názov ako vaša inštancia FastAPI.
Použitím -reload poviete API, že chcete, aby sa automaticky znova načítalo pri ukladaní súboru, a nie od začiatku.
Teraz spustite prehliadač a prejdite na https://127.0.0.1:8000; výsledok by mal vyzerať takto:
Teraz viete, ako vytvoriť jednoduché API pomocou FastAPI.
Budovanie a školenie modelu strojového učenia
Bez zberu alebo analýzy akýchkoľvek údajov natrénujeme len jednoduchý model. Tieto nesúvisia s nasadením modelov a nie sú podstatné pre danú tému.
Model založený na súbore údajov Iris je možné nainštalovať pomocou toho istého neurónové sieť spôsob inštalácie.
A my to urobíme: stiahnite si Súbor údajov o dúhovke a trénovať model. To nebude jednoduché. Ak chcete začať, vytvorte súbor s názvom jaysmlmodel.py.
V ňom urobíte nasledovné:
- Importy – Na ukladanie a načítanie modelov budete potrebovať pandy, scikit-RandomForecastClassifier, pydantický BaseModel (prečo zistíte v nasledujúcom kroku) a joblib.
- Deklarujte triedu IrisSpecies, ktorá dedí zo základného modelu. Táto trieda obsahuje iba polia potrebné na predpovedanie jedného druhu kvetu (viac o tom v ďalšej časti)
- Vytvorte triedu. IrisModel je modelový tréningový a predikčný nástroj.
- Deklarujte metódu s názvom _train model v rámci IrisModel. Používa sa na trénovanie modelov pomocou techniky Random Forests. Natrénovaný model sa procedúrou vráti.
- Deklarujte funkciu predpokladaného druhu v rámci IrisModel. Používa sa na predpovedanie na základe 4 vstupných faktorov (merania kvetov). Algoritmus vráti predpoveď (druh kvetov) aj pravdepodobnosť predpovede.
- Zmeňte konštruktor v IrisModel tak, aby načítal množinu údajov Iris a trénoval model, ak v priečinku chýba. Tým sa rieši problém opakovaného trénovania nových modelov. Knižnica joblib sa používa na načítanie a ukladanie modelu.
Tu je celý kód:
Dúfam, že vyššie uvedený zoznam a komentáre uľahčili pochopenie, aj keď to bolo značné množstvo kódu na vytvorenie. Teraz, keď bol tento model vyvinutý, zverejníme jeho predikčné schopnosti cez a REST API.
Vytvorenie úplného REST API
Vráťte sa do súboru ml_model.py a vymažte všetky údaje. Vzor bude v podstate rovnaký ako ten, ktorý ste mali predtým, ale mali by sme začať odznova s prázdnym súborom.
Tentoraz zadefinujete iba jeden koncový bod, ktorý sa používa na určenie typu kvetu. IrisModel.predict species(), ktorý bol deklarovaný v predchádzajúcej časti, je volaný týmto koncovým bodom na vykonanie predpovede.
Druhou veľkou zmenou je typ žiadosti. Aby ste mohli prenášať parametre v JSON namiesto URL, odporúča sa pri použití použiť POST strojové učenie API.
Vyššie uvedená veta mohla znieť ako nezmysel, ak ste a vedec dát, ale to je v poriadku. Na navrhovanie a nasadzovanie modelov nemusí byť nutne expert na HTTP požiadavky a REST API.
Úloh pre ml model.py je málo a sú jednoduché:
- Z predtým vytvoreného súboru jaymlmodel.py musíte importovať nasledovné: uvicorn, FastAPI, IrisModel a IrisSpecies.
- Vytvorte inštancie FastAPI a IrisModel.
- Na https://127.0.0.1:8000/predict deklarujte funkciu na predpovedanie.
- Metóda IrisModel.predict species() prijme objekt typu IrisSpecies, transformuje ho na slovník a potom ho vráti. Výnosy sú očakávaná trieda a predpokladaná pravdepodobnosť.
- Použite uvicorn na spustenie API.
Ešte raz, tu je celý kód súboru spolu s jeho komentármi:
To je všetko, čo musíte urobiť. V ďalšom kroku otestujeme API.
Testovanie API
Znova zadajte nasledujúci riadok do terminálu, aby ste spustili API: uvicorn ml_model:app –reload
Takto sa zobrazí stránka s dokumentáciou:
Tak to je na dnes všetko. V nasledujúcej časti poďme na záver.
záver
Dnes ste sa pomocou jednoduchého príkladu API a jednoduchého príkladu strojového učenia naučili, čo je FastAPI a ako ho používať. Tiež ste sa naučili, ako vytvoriť a zobraziť dokumentáciu API, ako aj to, ako ju otestovať.
To je veľa na jeden kus, takže sa nečudujte, že na správne pochopenie bude potrebných niekoľko prečítaní.
Šťastné kódovanie.
Nechaj odpoveď