Jedním z aspektů scénáře je vytvoření modelu strojového učení. Musí být použitelný v reálném světě a dostupný spotřebitelům a vývojářům.
Nejjednodušší a nejoblíbenější způsob nasazení modelů strojového učení je uzavřít je do REST API.
S populární knihovnou nazvanou FastAPI, to je přesně to, co dnes dosáhneme.
Ale co je FastAPI?
Webový rámec FastAPI Python byl vytvořen od základů, aby využil současných schopností Pythonu.
Pro asynchronní, souběžnou komunikaci s klienty dodržuje standard ASGI, přičemž je schopen využívat i WSGI.
Koncové body i trasy mohou využívat asynchronní funkce. FastAPI navíc umožňuje produktivní vytváření webových aplikací v typově naznačeném, čistém a současném kódu Pythonu.
Hlavním případem použití FastAPI je, jak název napovídá, vytváření koncových bodů API.
Použití standardu OpenAPI, který zahrnuje interaktivní uživatelské rozhraní Swagger, nebo poskytování dat ze slovníku Pythonu jako JSON jsou oba jednoduché způsoby, jak toho dosáhnout. FastAPI však není pouze pro API.
Lze jej použít k nabízení standardních webových stránek pomocí šablonového enginu Jinja2 a k poskytování aplikací využívajících WebSockets, kromě téměř všeho ostatního, co webový framework umí.
V tomto článku vyvineme přímočarý model strojového učení a k jeho nasazení pak použijeme FastAPI. Pojďme začít.
Instalace FastAPI a vytvoření prvního API
Nejprve je vyžadována instalace knihovny a serveru ASGI; bude fungovat buď Uvuicorn nebo Hypercorn. Funguje to zadáním následujícího příkazu do terminálu:
Nyní, když bylo rozhraní API vytvořeno, můžete použít svůj preferovaný editor kódu a procházet jej. Začněte vytvořením skriptu Python s názvem ml_model.py. Můžete tomu svému dát jiný název, ale kvůli tomuto příspěvku budu tento soubor označovat jako ml_model.py.
Chcete-li vytvořit jednoduché rozhraní API se dvěma koncovými body, musíte provést následující úkoly:
- Importujte knihovny FastAPI a Uvicorn.
- Nastavte instanci třídy FastAPI.
- Deklarujte první trasu, která na stránce indexu vytvoří přímý objekt JSON.
- Deklarujte druhou cestu, která poskytuje přímočarý objekt JSON s přizpůsobenou zprávou. Parametr name je převzat přímo z adresy URL (například https://127.0.0.1:8000/Jay).
- Ke spuštění API použijte Uvicorn.
Implementace těchto pěti fází je znázorněna v následujícím kousku kódu, tzn. vytvoření jednoduchého API
Vše hotovo! Okamžitě spusťte naše API. Chcete-li to provést, otevřete okno Terminál vedle souboru ml model.py. Dále zadejte následující:
klávesu Enter. Než budeme pokračovat, pojďme toto tvrzení vyvrátit. První aplikace používá pouze název souboru Python, bez přípony. Druhá aplikace musí mít stejný název jako vaše instance FastAPI.
Použitím -reload sdělíte API, že chcete, aby se automaticky znovu načetlo, když uložíte soubor, místo aby začínalo od začátku.
Nyní spusťte prohlížeč a přejděte na https://127.0.0.1:8000; výsledek by měl vypadat následovně:
Nyní chápete, jak vytvořit jednoduché API pomocí FastAPI.
Sestavení a školení modelu strojového učení
Bez shromažďování nebo analýzy jakýchkoli dat natrénujeme pouze jednoduchý model. Ty nesouvisejí s nasazením modelů a nejsou podstatné pro dané téma.
Model založený na datové sadě Iris lze nainstalovat pomocí stejného nervová síť způsob instalace.
A my to uděláme: stáhněte si Datová sada Iris a trénovat model. To nebude jednoduché. Pro začátek vytvořte soubor s názvem jaysmlmodel.py.
V něm provedete následující:
- Importy — Pro ukládání a načítání modelů budete potřebovat pandy, scikit-RandomForecastClassifier, pydantic's BaseModel (proč zjistíte v následujícím kroku) a joblib.
- Deklarujte třídu IrisSpecies, která dědí ze základního modelu. Tato třída obsahuje pouze pole potřebná k předpovědi jednoho druhu květin (více o tom v další části)
- Vytvořte třídu. IrisModel je modelový tréninkový a prediktivní nástroj.
- Deklarujte metodu s názvem _train model v rámci IrisModel. Slouží k trénování modelů pomocí techniky Random Forests. Natrénovaný model je procedurou vrácen.
- Deklarujte funkci předpokládaného druhu uvnitř IrisModel. Používá se k předpovědi na základě 4 vstupních faktorů (měření květů). Algoritmus vrací předpověď (druh květiny) i pravděpodobnost predikce.
- Změňte konstruktor v IrisModel tak, aby načetl datovou sadu Iris a trénoval model, pokud ve složce chybí. Tím je vyřešen problém opakovaného trénování nových modelů. Knihovna joblib se používá pro načítání a ukládání modelu.
Zde je celý kód:
Doufám, že výše uvedený seznam a komentáře usnadnily uchopení, i když se jednalo o značné množství kódu k vytvoření. Nyní, když byl tento model vyvinut, zveřejníme jeho predikční schopnosti přes a REST API.
Vytvoření plného REST API
Vraťte se do souboru ml_model.py a vymažte všechna data. Vzor bude v podstatě stejný jako to, co jste měli předtím, ale měli bychom začít znovu s prázdným souborem.
Tentokrát budete definovat pouze jeden koncový bod, který se používá k určení typu květiny. IrisModel.predict species(), která byla deklarována v předchozí části, je volána tímto koncovým bodem, aby provedla předpověď.
Druhou velkou změnou je typ požadavku. Chcete-li přenášet parametry v JSON spíše než v URL, doporučuje se při použití použít POST strojové učení API.
Výše uvedená věta mohla znít jako blábol, pokud jste a datový vědec, ale to je v pořádku. Chcete-li navrhnout a nasadit modely, nemusíte být nutně odborníkem na požadavky HTTP a REST API.
Úkolů pro ml model.py je málo a jsou přímočaré:
- Z dříve vytvořeného souboru jaymlmodel.py musíte importovat následující: uvicorn, FastAPI, IrisModel a IrisSpecies.
- Vytvořte instance FastAPI a IrisModel.
- Deklarujte funkci na https://127.0.0.1:8000/predict pro předpovědi.
- Metoda IrisModel.predict species() přijímá objekt typu IrisSpecies, transformuje jej na slovník a poté jej vrací. Návraty jsou očekávaná třída a předpokládaná pravděpodobnost.
- Použijte uvicorn ke spuštění API.
Ještě jednou, zde je celý kód souboru spolu s jeho komentáři:
To je vše, co musíte udělat. V dalším kroku otestujeme API.
Testování API
Znovu zadejte následující řádek do terminálu pro spuštění API: uvicorn ml_model:app –reload
Takto se zobrazí stránka dokumentace:
Tak to je pro dnešek vše. V následující části uzavřeme.
Proč investovat do čističky vzduchu?
Dnes jste se pomocí jednoduchého příkladu API a jednoduchého příkladu strojového učení naučili, co je FastAPI a jak jej používat. Také jste se naučili, jak vytvářet a prohlížet dokumentaci API a jak ji testovat.
To je na jeden kus hodně, takže se nedivte, že k správnému pochopení bude potřeba pár čtení.
Happy kódování.
Napsat komentář