Un aspect al scenariului este crearea unui model de învățare automată. Trebuie să fie utilizabil în lumea reală și disponibil pentru consumatori și dezvoltatori.
Cea mai simplă și populară modalitate de a implementa modele de învățare automată este de a le include într-un API REST.
Cu o bibliotecă populară numită FastAPI, exact asta vom realiza astăzi.
Dar, ce este FastAPI?
Cadrul web FastAPI Python a fost creat de la zero pentru a profita de capabilitățile Python contemporane.
Pentru comunicarea asincronă, concomitentă cu clienții, aderă la standardul ASGI, în timp ce este, de asemenea, capabil să utilizeze WSGI.
Punctele finale și rutele pot folosi ambele funcții asincrone. În plus, FastAPI permite crearea productivă de aplicații web în cod Python contemporan, curat și cu indicații de tip.
Principalul caz de utilizare al FastAPI este, după cum sugerează și numele, crearea de puncte finale API.
Folosirea standardului OpenAPI, care include o interfață interactivă Swagger, sau furnizarea de date din dicționar Python ca JSON sunt ambele modalități simple de a realiza acest lucru. Cu toate acestea, FastAPI nu este doar pentru API-uri.
Poate fi folosit pentru a oferi pagini web standard folosind motorul de șablon Jinja2 și pentru a servi aplicații care utilizează WebSockets, în plus față de aproape tot ce poate face un cadru web.
În acest articol, vom dezvolta un model simplu de învățare automată și apoi vom folosi FastAPI pentru a-l implementa. Sa incepem.
Instalarea FastAPI și crearea primului API
Este necesară mai întâi instalarea bibliotecii și a unui server ASGI; fie Uvuicorn, fie Hypercorn vor funcționa. Funcționează prin introducerea următoarei comenzi în terminal:
Acum că API-ul a fost creat, puteți utiliza editorul de cod preferat și îl puteți naviga. Creați un script Python numit ml_model.py pentru a începe. Ești binevenit să-i dai un nume diferit, dar de dragul acestei postări, mă voi referi la acest fișier ca ml_model.py.
Pentru a crea un API simplu cu două puncte finale, trebuie să finalizați următoarele sarcini:
- Importați bibliotecile FastAPI și Uvicorn.
- Configurați o instanță de clasă FastAPI.
- Declarați prima rută, care, pe pagina de index, produce un obiect JSON simplu.
- Declarați a doua rută, care oferă un obiect JSON simplu cu un mesaj personalizat. Parametrul nume este preluat direct de la adresa URL (de exemplu, https://127.0.0.1:8000/Jay).
- Utilizați Uvicorn pentru a rula API-ul.
Implementarea acestor cinci etape este prezentată în următorul bit de cod, adică. crearea unui API simplu
Totul este gata! Să lansăm imediat API-ul nostru. Deschideți o fereastră Terminal de lângă fișierul ml model.py pentru a realiza acest lucru. Apoi, introduceți următoarele:
tasta Enter. Înainte de a trece mai departe, să dezmințim această afirmație. Prima aplicație folosește numai numele fișierului Python, fără extensie. A doua aplicație trebuie să aibă același nume cu instanța dvs. FastAPI.
Folosind -reload, îi spuneți API-ului că doriți să se reîncarce automat atunci când salvați fișierul, mai degrabă decât să începeți de la zero.
Acum lansați un browser și navigați la https://127.0.0.1:8000; rezultatul ar trebui să apară după cum urmează:
Acum înțelegeți cum să creați un API simplu folosind FastAPI.
Construirea și antrenamentul modelului de învățare automată
Fără să colectăm sau să analizăm date, vom antrena doar un model simplu. Acestea nu au legătură cu implementarea modelelor și nu sunt esențiale pentru subiectul în cauză.
Un model bazat pe setul de date Iris poate fi instalat folosind același rețele neuronale metoda de instalare.
Și vom face exact asta: descărcați Set de date Iris și antrenează modelul. Asta nu va fi simplu. Pentru a începe, creați un fișier numit jaysmlmodel.py.
În ea, veți face următoarele:
- Importuri — Veți avea nevoie de panda, scikit-RandomForecastClassifier, modelul de bază al Learn pydantic (veți descoperi de ce în următorul pas) și joblib pentru stocarea și încărcarea modelelor.
- Declarați o clasă IrisSpecies care moștenește din modelul de bază. Această clasă conține doar câmpurile necesare pentru a prognoza o singură specie de flori (mai multe despre asta în secțiunea următoare)
- Creați o clasă. IrisModel este un instrument de antrenament și predicție pentru modele.
- Declarați o metodă numită _train model în IrisModel. Este folosit pentru a antrena modele folosind tehnica Random Forests. Modelul antrenat este returnat prin procedură.
- Declarați o funcție de specie prezisă în interiorul IrisModel. Este utilizat pentru a prognoza pe baza a 4 factori de intrare (măsurători de flori). Atât prognoza (specia de flori), cât și probabilitatea de predicție sunt returnate de algoritm.
- Schimbați constructorul în IrisModel, astfel încât să încarce setul de date Iris și să antreneze modelul dacă lipsește din folder. Acest lucru rezolvă problema antrenării repetate a noilor modele. Biblioteca joblib este utilizată pentru încărcarea și salvarea modelului.
Iată întregul cod:
Sper că lista de mai sus și comentariile au făcut-o ușor de înțeles, chiar dacă aceasta a fost o cantitate considerabilă de cod de creat. Acum că acest model a fost dezvoltat, să publicăm capabilitățile sale de predicție pe a API-ul REST.
Construirea unui API REST complet
Reveniți la fișierul ml_model.py și ștergeți toate datele. Boilerplate va fi în esență același cu ceea ce ați avut înainte, dar ar trebui să începem de la capăt cu un fișier gol.
De data aceasta, veți defini un singur punct final, care este cel utilizat pentru a determina tipul de floare. IrisModel.predict species(), care a fost declarată în secțiunea precedentă, este apelată de acest punct final pentru a efectua predicția.
Tipul de cerere este cealaltă schimbare majoră. Pentru a transmite parametrii în JSON, mai degrabă decât în URL, este recomandat să utilizați POST atunci când utilizați masina de învățare API-uri.
Este posibil ca propoziția de mai sus să fi sunat ca o farfurie dacă ești un om de știință de date, dar e în regulă. Pentru a proiecta și implementa modele, nu trebuie neapărat să fii un expert în solicitările HTTP și API-urile REST.
Sarcinile pentru ml model.py sunt puține și simple:
- Trebuie să importați următoarele din fișierul jaymlmodel.py creat anterior: uvicorn, FastAPI, IrisModel și IrisSpecies.
- Creați instanțe FastAPI și IrisModel.
- Declarați o funcție la https://127.0.0.1:8000/predict pentru a face predicții.
- Metoda IrisModel.predict species() primește un obiect de tip IrisSpecies, îl transformă într-un dicționar și apoi îl returnează. Randamentele sunt clasa așteptată și probabilitatea prezisă.
- Utilizați uvicorn pentru a executa API-ul.
Din nou, iată codul întregului fișier împreună cu comentariile sale:
Asta este tot ce trebuie să faci. În pasul următor, să testăm API-ul.
Testarea API-ului
Reintroduceți următoarea linie în Terminal pentru a executa API-ul: uvicorn ml_model:app –reload
Așa apare pagina de documentație:
Deci asta e tot pentru azi. În partea de după aceasta, să conchidem.
Concluzie
Astăzi, ați învățat ce este FastAPI și cum să îl utilizați, folosind atât un exemplu simplu de API, cât și un exemplu simplu de învățare automată. De asemenea, ați învățat cum să creați și să vizualizați documentația API, precum și cum să o testați.
Este mult pentru o singură piesă, așa că nu fi surprins dacă este nevoie de câteva lecturi pentru a înțelege corect.
Codare fericită.
Lasă un comentariu