FastAPI vs Flacon | FastAPI est-il le bon remplacement pour les flacons?

Contenu

Une fois que vous avez terminé la construction du modèle et le réglage approprié des hyperparamètres, la prochaine étape des projets de science des données est afficher les résultats finaux Au grand public. Il est essentiel de procéder ainsi car tout le monde n'est pas intéressé à voir le code et est plus intéressé par le résultat final. Cela aide également les aspirants à la science des données à construire un projet du début à la fin ce qui leur donne un avantage sur les autres et leur donne le goût des autres technologies.

Le déploiement de modèles de machine learning peut emprunter des chemins différents selon la plate-forme sur laquelle vous souhaitez diffuser le modèle. Les interface Web est le moyen le plus courant de publier un modèle, mais cela ne se limite pas à Applications Android et IOS ou un appareil IOT comme Raspberry Pi. Si vous étudiez cela en détail, donc un cadre en-tête de la requête de recherche est le cadre de flacon qui est une application minimaliste pour configurer rapidement des serveurs web mais elle a quelques problemes qui résolvent maintenant à un appel de trame récemment lancé API rapide qui gagne beaucoup en popularité ces jours-ci.

Dans cet article, nous verrons comment le framework FastAPI a un avantage sur Flask avec quelques exemples de code pour mieux comprendre les choses. Avant que, si tu es interessé par mise en place d'applications android alors vous pouvez lire mon article Implémentation du ML dans l'application Android.

C'est un framework basé sur Python qui vous permet de connecter des sites Web avec moins de code. Vous pouvez créer un site web à petite échelle avec cela car il permet une personnalisation à chaque étape. Être un package minimaliste, seuls les composants principaux sont inclus et toutes les autres extensions nécessitent une configuration explicite. De nombreux développeurs utilisent Flask pour héberger leurs API. API (Interface de programme d'application) est une interface qui permet la communication entre plusieurs intermédiaires, ce qui signifie que l'on peut accéder à tout type de données en utilisant n'importe quelle technologie. Par exemple, vous pouvez accéder à une API en utilisant Javascript qui pourrait être construite en utilisant Python. Un programme simple dans un flacon ressemble à ceci:

de l'importation du flacon Flacon, jsonifier
application = Flacon(__Nom__)
@app.route("/<Nom>", méthodes=['AVOIR'])
def maison(Nom):
    retourner jsonify({"un message": F"Bonjour! {Nom}"})
si __nom__ == "__principale__":
    app.run(debug=True)

En appuyant sur l'url localhost / ToutNomIci, un résultat JSON similaire à celui-ci sera affiché: (J'utilise l'extension chrome appelée JSON viewer. Vous pouvez être invité à saisir du texte brut au lieu de cette sortie formatée)

img_1-8741078

Problèmes avec le flacon

Le problème avec cette approche est qu'il y a pas de validation des données, ce qui signifie que nous pouvons transmettre tout type de données, que ce soit des chaînes, tuples, chiffres ou tout caractère. Cela peut souvent casser le programme et vous pouvez imaginer que si un modèle ML obtient de mauvais types de données, le programme va planter. Vous pouvez créer un vérificateur de données avant de passer les valeurs dessus, mais je voudrais ajouter du travail supplémentaire.

Pages d'erreur dans Flask en tant que pages HTML simples qui peuvent générer des erreurs de décodeur lorsque l'API est appelée dans d'autres applications. Il y a d'autres problèmes avec Flask, comme la nature lente, pas asynchroneet prise en charge des sockets Web qui peuvent accélérer les processus et, finalement, pas de système de génération de documents automatisé. Vous devez concevoir manuellement l'interface utilisateur pour l'utilisation de l'API et des exemples. Tous ces problèmes sont résolus dans le nouveau cadre.

API rapide

C'est un framework moderne qui vous permet de créer des API en douceur et sans trop d'effort. A la capacité de séparer le code serveur de la logique métier augmenter la maintenabilité du code. Comme le nom lui-même est rapide, il est beaucoup plus rapide par rapport au flacon car il est construit sur ASGI (Interface de passerelle de serveur asynchrone) au lieu de WSGI (Interface de passerelle de serveur Web). Il dispose d'un système de validation des données qui peut détecter tout type de données invalide à l'exécution et renvoie la raison des mauvaises entrées à l'utilisateur uniquement au format JSON, qui libère les développeurs de la gestion explicite de cette exception.

Ce génère la documentation en déplacement lorsque vous développez l'API, qui est le plus demandé par tous les développeurs. La documentation est un excellent moyen pour les autres développeurs de collaborer sur un projet, car il présente tout ce qui peut être fait avec les instructions nécessaires. Il génère également un bonne interface graphique qui résout tout ce qui manquait dans le flacon.

Il fait toutes ces choses avec les spécifications OpenAI et Swagger pour implémenter ces spécifications. En tant que développeur, il se concentre uniquement sur la partie construction logique et le reste est géré par FastAPI. Voyons le même exemple qui a été créé à l'aide de Flask maintenant implémenté dans FastAPI:

importer de l'uvicorne
depuis fastapi importer FastAPI
application = FastAPI()
@app.get("/")
def maison(Nom: str):
    revenir {"un message": F"Bonjour! {Nom}"}
si __nom__ == "__principale__":
    uvicorn.run(application, hôte="127.0.0.1", port=8000, debug=True)

En appuyant sur l'url localhost /? Nom = ToutNomIci, vous serez invité à un résultat comme:

img_2-7383572

Vous pouvez voir que le code est très similaire à flask, mais ici nous utilisons le serveur uvicor, qu'est-ce qu'une implémentation ASGI. En outre, nous sommes ici sans acheminer aucun point d'extrémité et les créer directement à l'aide de décorateurs, ce qui a le plus de sens. La fonction ici prend simplement les arguments requis plus loin que élimine le besoin de l'objet de requête être appelé.

img_3-9515011

Il y a un autre générateur de documentation qui est inclus avec FastAPI, c'est-à-dire, ReDoc qui a également généré une belle documentation avec tous les points finaux répertoriés. Il est accessible en appuyant sur le point final / redoc:

25693temp-4256177

Pour configurer la validation des données, nous pouvons simplement créer la classe de type de données héritée du Modèle de base Pydantic. C'est une bibliothèque qui propose la validation des données via des annotations de type Python. Nous pouvons ajouter la description des entités et fournir l'exemple personnalisé à afficher dans les docs.

Exemple de ML FastAPI

Je voudrais partager un exemple où un modèle de classificateur ML DecisionTree a été implémenté à l'aide de FastAPI. L'énoncé du problème pour cela est un classificateur de genre musical où basé sur des aspects techniques de la musique tels que le tempo, la valence, la musique est rock ou hip-hop. J'ai fait un cours de musique pour valider les données qui seront transmises au modèle qui ressemble à ça:

de pydantic importer BaseModel
classe Musique(Modèle de base):
    acoustique: flotter
    danse: flotter
    énergie: flotter
    instrumentalité: flotter
    vivacité: flotter
    discours: flotter
    tempo: flotter
    valence: flotter

img_4-1385000

Si vous voulez voir le code complet, allez à ça Dépôt GitHub.

conclusion: Lequel choisir?

Après toute cette discussion, la question reste sans réponse, qui gagne? Basé sur tous les facteurs, je le ferais Je suggère d'adopter FastAPI sur Flask. C'est très facile à configurer, la migration d'un ancien projet de flacon vers celui-ci ne prendra pas longtemps, asynchrone, sockets Web y fonction de génération automatique de documents c'est la cerise sur le gâteau.

On peut choisir le cadre de flacon pour configurer l'ensemble de l'interface Web (Front-end et back-end) mais en ce qui concerne le ML où l'objectif principal est de vérifier si le modèle fonctionne dans un environnement de production ou non, créer une API a plus de sens car le reste peut être géré par d'autres équipes de développeurs et leur expliquer clairement l'utilisation du programme que vous avez développé, FastAPI auto docs est une bonne solution.

Connectez-vous avec l'auteur

Vous pouvez me joindre à Linkedin discuter tout ce qui concerne le développement Python et la science des données, GitHub à voir mes projets ou tu peux lire mes articles au milieu.

Kaustubh – Moitié

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.