Un aspettu di u scenariu hè di creà un mudellu d'apprendimentu machine. Deve esse utilizable in u mondu reale è dispunibule per i cunsumatori è i sviluppatori.
U modu più simplice è più pupulare di implementà mudelli di apprendimentu di machine hè di mette in una API REST.
Cù una libreria populari chjamata FastAPI, hè esattamente ciò chì avemu da fà oghje.
Ma, chì hè FastAPI?
U framework web FastAPI Python hè statu creatu da a terra per prufittà di e capacità di Python cuntempuranee.
Per a cumunicazione asincrona, simultanea cù i clienti, aderisce à u standard ASGI, mentre chì hè ancu capaci di utilizà WSGI.
I punti finali è e rotte ponu aduprà funzioni asincrone. Inoltre, FastAPI permette a creazione produttiva di app web in codice Python cuntempuraneu, pulito è cuntempuranatu.
U casu d'usu principale di FastAPI hè, cum'è u nome suggerisce, a creazione di punti finali API.
Utilizà u standard OpenAPI, chì include una UI Swagger interattiva, o furnisce dati di dizziunariu Python cum'è JSON sò dui modi simplici per ottene questu. Tuttavia, FastAPI ùn hè micca solu per l'API.
Pò esse usatu per offre pagine web standard cù u mutore di mudellu Jinja2 è per serve l'applicazioni chì utilizanu WebSockets, in più di quasi tuttu ciò chì un framework web pò fà.
In questu articulu, svilupperemu un mudellu di apprendimentu automaticu simplice è dopu aduprà FastAPI per implementà. Cuminciamu.
Installazione di FastAPI è creazione di a prima API
Installà a biblioteca è un servitore ASGI hè necessariu prima; Uvuicorn o Hypercorn funziona. Funziona inserendu u cumandimu seguitu in u Terminal:
Avà chì l'API hè stata creata, pudete aduprà u vostru editore di codice preferitu è navigà. Crea un script Python chjamatu ml_model.py per cumincià. Sò benvenuti à dà à u vostru un nome diversu, ma per a fine di questu post, mi riferiraghju à stu schedariu cum'è ml_model.py.
Per creà una API diretta cù dui endpoints, duvete compie e seguenti attività:
- Importate e librerie FastAPI è Uvicorn.
- Configurate una istanza di classe FastAPI.
- Dichjarà a prima strada, chì, nantu à a pagina d'indici, pruduce un oggettu JSON simplice.
- Dichjarà a seconda strada, chì furnisce un oggettu JSON simplice cù un messagiu persunalizatu. U paràmetru di u nome hè pigliatu direttamente da l'URL (per esempiu, https://127.0.0.1:8000/Jay).
- Utilizà Uvicorn per eseguisce l'API.
Implementazione di sti cinque tappe hè mostratu in u seguente bit di codice vale à dì. crià una API simplice
Tuttu fattu! Lancemu immediatamente a nostra API. Apertura una finestra Terminal accantu à u schedariu ml model.py à rializà stu. Dopu, entre i seguenti:
a chjave Enter. Prima di passà avanti, debunk sta affirmazioni. A prima app usa solu u nome di u schedariu Python, senza l'estensione. A seconda app deve avè u listessu nome cum'è a vostra istanza FastAPI.
Utilizendu -reload, dite à l'API chì vulete ricaricà automaticamente quandu salvate u schedariu invece di principià da zero.
Avà lanciate un navigatore è navigate à https://127.0.0.1:8000; u risultatu deve esse cum'è seguente:
Avà capisce cumu creà una API simplice cù FastAPI.
Custruì è furmà u mudellu di Machine Learning
Senza cullà o analizà alcuna dati, avemu da furmà solu un mudellu simplice. Quessi ùn sò micca ligati à l'implementazione di mudelli è ùn sò micca indispensabili à u tema in manu.
Un mudellu basatu nantu à u dataset Iris pò esse stallatu cù u listessu reta neurale mètudu di stallazione.
È faremu solu questu: scaricate u Set di dati Iris è furmà u mudellu. Ùn serà micca simplice. Per cumincià, fate un schedariu chjamatu jaysmlmodel.py.
In questu, fate u seguente:
- Importazioni - Averete bisognu di pandas, scikit-RandomForecastClassifier, amparate u BaseModel di pydantic (scoprerete perchè in u passu dopu), è joblib per almacenà è caricate mudelli.
- Dichjarà una classe IrisSpecies chì eredita da u mudellu di basa. Questa classa cuntene solu i campi necessarii per previsione una sola spezia di fiori (più nantu à questu in a sezione dopu)
- Crea una classa. IrisModel hè un mudellu di furmazione è strumentu di predizione.
- Dichjarà un metudu chjamatu _train model in IrisModel. Hè adupratu per furmà mudelli cù a tecnica Random Forests. U mudellu furmatu hè tornatu da a prucedura.
- Dichjarà una funzione di spezia prevista in IrisModel. Hè utilizatu per a previsione basatu annantu à 4 fattori di input (misurazioni di fiori). Sia a previsione (spezie di fiori) è a probabilità di predizione sò tornati da l'algoritmu.
- Cambia u custruttore in IrisModel in modu chì carica u dataset Iris è furmà u mudellu s'ellu manca da u cartulare. Questu risolve u prublema di furmazione ripetuta di novi mudelli. A libreria joblib hè aduprata per a carica è u salvamentu di mudelli.
Eccu tuttu u codice:
Spergu chì a lista sopra è i cumenti facianu fàciule à capisce ancu s'ellu era una quantità considerableu di codice per creà. Avà chì stu mudellu hè statu sviluppatu, pubblichemu e so capacità di predizione nantu à a REST API.
Custruisce una API REST completa
Ritorna à u schedariu ml_model.py è purga tutte e dati. U boilerplate serà essenzialmente u listessu cum'è ciò chì avete avutu prima, ma duvemu principià cù un schedariu in biancu.
Definirà solu un puntu finale sta volta, chì hè quellu utilizatu per determinà u tipu di fiore. IrisModel.predict species(), chì hè statu dichjaratu in a sezione precedente, hè chjamatu da questu endpoint per realizà a predizione.
U tipu di dumanda hè l'altru grande cambiamentu. Per trasmette paràmetri in JSON invece di URL, hè cunsigliatu di utilizà POST quandu si usa machine learning API.
A frasa di sopra pò avè sonatu cum'è gibberish sè vo site un scientistu di dati, ma hè bè. Per cuncepisce è implementà mudelli, ùn hè micca necessariu esse un espertu in e richieste HTTP è REST API.
I travaglii per ml model.py sò pochi è diretti:
- Duvete impurtà i seguenti da u schedariu jaymlmodel.py creatu prima: uvicorn, FastAPI, IrisModel è IrisSpecies.
- Crea istanze di FastAPI è IrisModel.
- Dichjarà una funzione à https://127.0.0.1:8000/predict per fà predizioni.
- U metudu IrisModel.predict species() riceve un ughjettu di u tipu IrisSpecies, u trasforma in un dizziunariu, è poi u torna. I ritorni sò a classa prevista è a probabilità prevista.
- Aduprate uvicorn per eseguisce l'API.
Eppuru, quì hè u codice di u schedariu sanu cù i so cumenti:
Hè tuttu ciò chì avete bisognu di fà. In u prossimu passu, pruvemu l'API.
Testa l'API
Inserite a seguente linea in u Terminal per eseguisce l'API: uvicorn ml_model:app -reload
Eccu cumu si vede a pagina di documentazione:
Allora hè questu per oghje. In a parte dopu à questu, cuncludemu.
cunchiusioni
Oghje, avete amparatu ciò chì FastAPI hè è cumu aduprà, utilizendu un esempiu simplice di API è un esempiu simplice di apprendimentu di macchina. Avete ancu amparatu cumu creà è vede a documentazione API, è ancu cumu per pruvà.
Hè assai per una sola pezza, dunque ùn vi maravigliate s'ellu ci vole uni pochi di letture per capisce bè.
Felice codificazione.
Lascia un Audiolibro