FastAPI contro Flask | FastAPI è il sostituto corretto per le boccette??

Condividere su Facebook
Condividere su twitter
Condividere su linkato
Condividere su telegramma
Condividere su WhatsApp

Contenuti

Una volta che hai finito con la costruzione del modello e la corretta messa a punto degli iperparametri, il prossimo passo nei progetti di data science è mostra i risultati finali Al grande pubblico. È fondamentale farlo in questo modo perché non tutti sono interessati a vedere il codice e sono più interessati al risultato finale. Aiuta anche gli aspiranti alla scienza dei dati a costruire un progetto dall'inizio alla fine che dà loro un vantaggio sugli altri e dà loro un gusto per altre tecnologie.

L'implementazione di modelli di machine learning può seguire percorsi diversi a seconda della piattaforma su cui si desidera distribuire il modello. il interfaccia web è il modo più comune per pubblicare un modello, ma non è limitato a App Android e IOS o un dispositivo IOT come Raspberry Pi. Se indaghi su questo in dettaglio, quindi un frame che intitola la query di ricerca è il cornice del pallone che è un'applicazione minimalista per configurare rapidamente i server web ma ha qualche problema che ora si risolve in una chiamata di frame lanciata di recente FastAPI che sta guadagnando molta popolarità in questi giorni.

In questo articolo, vedremo come il framework FastAPI ha un vantaggio su Flask con qualche codice di esempio per capire meglio le cose. Prima di ciò, se sei interessato a implementazione dell'applicazione Android allora puoi leggere il mio articolo Implementazione di ML nell'applicazione Android.

È un framework basato su Python che ti consente di connettere siti Web con meno quantità di codice. Puoi creare un sito web su piccola scala con questo in quanto consente la personalizzazione ad ogni passo. Essendo un pacchetto minimalista, sono inclusi solo i componenti principali e tutte le altre estensioni richiedono una configurazione esplicita. Molti sviluppatori usano Flask per ospitare le loro API. API (Interfaccia del programma applicativo) è un'interfaccia che consente la comunicazione tra più intermediari, il che significa che si può accedere a qualsiasi tipo di dati utilizzando qualsiasi tecnologia. Ad esempio, puoi accedere a un'API usando Javascript che potrebbe essere costruita usando Python. Un semplice programma in un pallone assomiglia a questo:

from flask import Flask, jsonify
app = Flask(__nome__)
@app.route("/<nome>", metodi=['OTTENERE'])
def home(nome):
    ritorna jsonify({"Messaggio": F"Ciao! {nome}"})
se __nome__ == "__principale__":
    app.run(debug=Vero)

Premendo l'URL localhost / QualsiasiNomeQui, verrà visualizzato un risultato JSON simile a questo: (Uso l'estensione di Chrome chiamata visualizzatore JSON. Potrebbe essere richiesto il testo normale invece di questo output formattato)

img_1-8741078

Problemi con il pallone

Il problema con questo approccio è che ci sono nessuna convalida dei dati, il che significa che possiamo passare qualsiasi tipo di dati, sia catene, tuple, numeri o qualsiasi carattere. Questo può interrompere spesso il programma e puoi immaginare che se un modello ML ottiene tipi di dati sbagliati, il programma andrà in crash. Puoi creare un controllo dati prima di passare i valori, ma vorrei aggiungere altro lavoro.

Pagine di errore in Flask come semplici pagine HTML che possono generare errori del decodificatore quando l'API viene chiamata in altre applicazioni. Ci sono altri problemi con Flask, come la natura lenta, nessun asincronoe supporto web socket in grado di accelerare i processi e, Finalmente, nessun sistema di generazione automatica dei documenti. Devi progettare manualmente l'interfaccia utente per l'utilizzo dell'API ed esempi. Tutti questi problemi sono risolti nel nuovo framework.

FastAPI

È un framework moderno che ti consente di creare API in modo fluido e senza troppi sforzi. Ha la capacità di codice server separato dalla logica aziendale aumentare la manutenibilità del codice. Come il nome stesso è veloce, è molto più veloce rispetto al pallone perché è costruito su ASGI (Interfaccia gateway server asincrona) invece di WSGI (Interfaccia del gateway del server Web). Ha un sistema di convalida dei dati in grado di rilevare qualsiasi tipo di dati non valido in fase di esecuzione e restituisce il motivo delle voci errate all'utente solo in formato JSON, che libera gli sviluppatori dalla gestione esplicita di questa eccezione.

Quella genera la documentazione in movimento durante lo sviluppo dell'API, che è il più richiesto da tutti gli sviluppatori. La documentazione è un ottimo modo per altri sviluppatori di collaborare a un progetto, in quanto presenta tutto ciò che può essere fatto con le istruzioni necessarie. Genera anche a buona GUI che risolve tutto quello che mancava nella borraccia.

Fa tutte queste cose con le specifiche OpenAI e Swagger per implementare queste specifiche. Come sviluppatore, si concentra solo sulla parte di costruzione logica e il resto è gestito da FastAPI. Vediamo lo stesso esempio che è stato creato utilizzando Flask ora implementato in FastAPI:

importare uvicorn
da fastapi import FastAPI
app = FastAPI()
@app.get("/")
def home(nome: str):
    Restituzione {"Messaggio": F"Ciao! {nome}"}
se __nome__ == "__principale__":
    uvicorn.run(app, ospite="127.0.0.1", porta=8000, debug=Vero)

Premendo l'URL localhost /? Nome = QualsiasiNomeQui, ti verrà richiesto un risultato come:

img_2-7383572

Puoi vedere che il codice è molto simile a flask, ma qui stiamo usando il server uvicorn, cos'è un'implementazione ASGI?. Cosa c'è di più, eccoci qui senza instradare alcun punto finale e creali direttamente usando i decoratori, cosa ha più senso. La funzione qui prende semplicemente gli argomenti richiesti oltre elimina la necessità dell'oggetto richiesta essere chiamato.

img_3-9515011

C'è un altro generatore di documentazione che è incluso con FastAPI, vale a dire, ReDoc che ha anche generato una bella documentazione con tutti gli endpoint elencati. È possibile accedervi premendo il punto finale / rifare:

25693temp-4256177

Per configurare la convalida dei dati, possiamo semplicemente creare la classe del tipo di dati ereditata dal Modello base pidantico. È una libreria che offre la convalida dei dati tramite annotazioni di tipo Python. Possiamo aggiungere la descrizione delle entità e fornire l'esempio personalizzato da visualizzare nei documenti.

Esempio ML FastAPI

Vorrei condividere un esempio in cui è stato implementato un modello di classificatore ML DecisionTree utilizzando FastAPI. La dichiarazione del problema per questo è a classificatore di genere musicale dove basato su aspetti tecnici della musica come il tempo, la valencia, la musica è rock o hip-hop. Ho fatto una lezione di musica per convalidare i dati che verranno passati al modello che assomiglia a questo:

da pydantic import BaseModel
classe Musica(Modello base):
    acustica: galleggiante
    ballabilità: galleggiante
    energia: galleggiante
    strumentalità: galleggiante
    vitalità: galleggiante
    discorsività: galleggiante
    tempo: galleggiante
    valenza: galleggiante

img_4-1385000

Se vuoi vedere il codice completo, vai a questo Archivio GitHub.

conclusione: Quale scegliere?

Dopo tutta questa discussione, la domanda rimane senza risposta, chi vince? In base a tutti i fattori, Vorrei Suggerisco di adottare FastAPI su Flask. È molto facile da configurare, la migrazione di un vecchio progetto pallone a questo non richiederà molto tempo, asincrono, prese web y funzione di generazione automatica dei documenti è la ciliegina sulla torta.

Si può scegliere il frame pallone per configurare l'intera interfaccia web (Front-end e back-end) ma per quanto riguarda ML, dove l'obiettivo principale è verificare se il modello funziona o meno nell'ambiente di produzione, creare un'API ha più senso perché il resto delle cose può essere gestito da altri team di sviluppatori e spiegare loro chiaramente l'uso del programma che hai sviluppato, I documenti automatici FastAPI sono una buona soluzione.

Connettiti con l'autore

Puoi connetterti con me su Linkedin discutere tutto ciò che riguarda lo sviluppo di Python e la scienza dei dati, GitHub per guarda i miei progetti o puoi leggi i miei articoli nel mezzo.

Kaustubh – Metà

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.