A forgatókönyv egyik szempontja egy gépi tanulási modell létrehozása. A valós világban használhatónak kell lennie, és elérhetőnek kell lennie a fogyasztók és a fejlesztők számára.
A gépi tanulási modellek üzembe helyezésének legegyszerűbb és legnépszerűbb módja, ha REST API-ba zárja őket.
A FastAPI nevű népszerű könyvtárral ma pontosan ezt fogjuk elérni.
De mi van FastAPI?
A FastAPI Python webes keretrendszert az alapoktól kezdve a kortárs Python képességek kihasználására hozták létre.
A kliensekkel való aszinkron, párhuzamos kommunikációhoz az ASGI szabványhoz ragaszkodik, ugyanakkor képes a WSGI használatára is.
A végpontok és az útvonalak egyaránt használhatnak aszinkron funkciókat. Ezenkívül a FastAPI lehetővé teszi webes alkalmazások produktív létrehozását típusjelű, tiszta, kortárs Python kóddal.
A FastAPI fő használati esete, ahogy a neve is sugallja, API-végpontok létrehozása.
Az OpenAPI szabvány használata, amely interaktív Swagger felhasználói felületet tartalmaz, vagy a Python-szótáradatok JSON-ként való biztosítása egyszerű módja ennek elérésére. A FastAPI azonban nem csak API-k számára készült.
Használható szabványos weboldalak felkínálására a Jinja2 sablonmotor segítségével, és WebSockets alkalmazásokat használó alkalmazások kiszolgálására, amellett, hogy nagyjából minden mást, amit egy webes keretrendszer megtehet.
Ebben a cikkben egy egyszerű gépi tanulási modellt dolgozunk ki, majd a FastAPI-t használjuk a telepítéshez. Kezdjük.
A FastAPI telepítése és az első API létrehozása
Először telepíteni kell a könyvtárat és egy ASGI-kiszolgálót; vagy az Uvuicorn vagy a Hypercorn fog működni. Úgy működik, hogy beírja a következő parancsot a terminálba:
Most, hogy az API létrejött, használhatja kedvenc kódszerkesztőjét, és böngészhet benne. A kezdéshez hozzon létre egy ml_model.py nevű Python-szkriptet. Szívesen adjon más nevet is, de e bejegyzés kedvéért ml_model.py néven hivatkozom erre a fájlra.
Egy egyszerű, két végponttal rendelkező API létrehozásához a következő feladatokat kell végrehajtania:
- Importálja a FastAPI és Uvicorn könyvtárakat.
- Állítson be egy FastAPI osztálypéldányt.
- Deklarálja az első útvonalat, amely az index oldalon egy egyszerű JSON-objektumot hoz létre.
- Deklarálja a második útvonalat, amely egy egyszerű JSON-objektumot biztosít testreszabott üzenettel. A név paraméter közvetlenül az URL-ből származik (például https://127.0.0.1:8000/Jay).
- Használja az Uvicornt az API futtatásához.
Ennek az öt szakasznak a megvalósítását a következő kódrészlet mutatja be, pl. egyszerű API létrehozása
Minden kész! Azonnal indítsuk el az API-t. Ennek végrehajtásához nyissa meg a Terminál ablakot az ml model.py fájl mellett. Ezután írja be a következőket:
az Enter billentyűt. Mielőtt továbblépnénk, cáfoljuk meg ezt az állítást. Az első alkalmazás egyedül a Python fájlnevet használja, kiterjesztés nélkül. A második alkalmazásnak meg kell egyeznie a FastAPI-példány nevével.
A -reload használatával közli az API-val, hogy azt szeretné, hogy automatikusan újratöltődjön a fájl mentésekor, ahelyett, hogy a nulláról kezdené.
Most indítson el egy böngészőt, és lépjen a https://127.0.0.1:8000 címre; az eredménynek a következőképpen kell megjelennie:
Most már megérti, hogyan hozhat létre egyszerű API-t a FastAPI használatával.
A gépi tanulási modell felépítése és betanítása
Adatgyűjtés vagy elemzés nélkül csak egy egyszerű modellt fogunk betanítani. Ezek nem kapcsolódnak a modellek telepítéséhez, és nem lényegesek az adott téma szempontjából.
Az Iris adatkészleten alapuló modell is telepíthető ugyanezzel neurális hálózat telepítési mód.
Mi pedig ezt tesszük: töltsük le a Iris adatkészlet és képezze ki a modellt. Ez nem lesz egyszerű. Kezdésként hozzon létre egy jaysmlmodel.py nevű fájlt.
Ebben a következőket kell tennie:
- Importálás — Pandára, scikit-RandomForecastClassifierre, a learning pydantic BaseModel-re (a következő lépésben megtudhatja, miért) és joblib-re lesz szüksége a modellek tárolásához és betöltéséhez.
- Deklaráljon egy IrisSpecies osztályt, amely az alapmodelltől örököl. Ez az osztály csak egy virágfaj előrejelzéséhez szükséges mezőket tartalmazza (erről bővebben a következő részben)
- Hozzon létre egy osztályt. Az IrisModel egy modellképző és előrejelző eszköz.
- Deklaráljon egy _train model nevű metódust az IrisModelen belül. Modellek képzésére használják a Random Forests technikával. A betanított modellt az eljárás visszaküldi.
- Deklaráljon egy előre jelzett fajfunkciót az IrisModelben. 4 bemeneti tényező (virágmérések) alapján történő előrejelzésre szolgál. Az algoritmus az előrejelzést (virágfaj) és az előrejelzési valószínűséget is visszaadja.
- Módosítsa az IrisModel konstruktorát úgy, hogy az betöltse az Iris adatkészletet, és betanítsa a modellt, ha hiányzik a mappából. Ez megoldja az új modellek ismételt betanításának problémáját. A joblib könyvtár a modell betöltésére és mentésére szolgál.
Itt a teljes kód:
Remélem, hogy a fenti lista és a megjegyzések könnyen érthetővé tették, még akkor is, ha ez jelentős mennyiségű kód létrehozása volt. Most, hogy ezt a modellt kifejlesztették, tegyük közzé előrejelzési képességeit a REST API.
Teljes REST API létrehozása
Térjen vissza az ml_model.py fájlhoz, és törölje az összes adatot. A kazán lényegében ugyanaz lesz, mint korábban, de elölről kezdjük egy üres fájllal.
Ezúttal csak egy végpontot határoz meg, amely a virág típusának meghatározására szolgál. Ez a végpont hívja meg az IrisModel.predict species()-et, amelyet az előző szakaszban deklaráltunk az előrejelzés végrehajtásához.
A kérés típusa a másik nagy változás. Annak érdekében, hogy a paramétereket JSON-ban, nem pedig URL-ben továbbítsa, a POST használata javasolt gépi tanulás API-k.
A fenti mondat halandzsának tűnhetett, ha Ön a adattudós, de nem baj. A modellek tervezéséhez és üzembe helyezéséhez nem kell feltétlenül a HTTP-kérelmek és a REST API-k szakértőjének lenni.
Az ml model.py feladatai kevés és egyszerűek:
- A következőket kell importálnia a korábban létrehozott jaymlmodel.py fájlból: uvicorn, FastAPI, IrisModel és IrisSpecies.
- Hozzon létre FastAPI és IrisModel példányokat.
- Előrejelzések készítéséhez deklaráljon egy függvényt a https://127.0.0.1:8000/predict címen.
- Az IrisModel.predict species() metódus fogad egy IrisSpecies típusú objektumot, szótárrá alakítja, majd visszaadja. A megtérülés a várt osztály és a megjósolt valószínűség.
- Használja az uvicornt az API végrehajtásához.
Ismét itt van a teljes fájl kódja a megjegyzésekkel együtt:
Csak ennyit kell tenned. A következő lépésben teszteljük az API-t.
Az API tesztelése
Írja be újra a következő sort a terminálba az API végrehajtásához: uvicorn ml_model:app –reload
Így jelenik meg a dokumentációs oldal:
Szóval mára ennyi. Az ezt követő részben fejezzük be.
Következtetés
Ma egy egyszerű API-példa és egy egyszerű gépi tanulási példa segítségével megtanulta, mi az a FastAPI, és hogyan kell használni. Azt is megtanulta, hogyan hozhat létre és tekinthet meg API-dokumentációt, valamint hogyan tesztelheti azt.
Ez sok egy darabhoz képest, ezért ne lepődj meg, ha néhány olvasást igényel a megfelelő megértéshez.
Boldog kódolást.
Hagy egy Válaszol