Un aspect du scénario consiste à créer un modèle d'apprentissage automatique. Il doit être utilisable dans le monde réel et disponible pour les consommateurs et les développeurs.
Le moyen le plus simple et le plus populaire de déployer des modèles d'apprentissage automatique consiste à les inclure dans une API REST.
Avec une bibliothèque populaire appelée FastAPI, c'est exactement ce que nous allons accomplir aujourd'hui.
Mais comment ça API rapide?
Le framework Web FastAPI Python a été créé à partir de zéro pour tirer parti des fonctionnalités Python contemporaines.
Pour la communication simultanée asynchrone avec les clients, il adhère à la norme ASGI, tout en étant également capable d'utiliser WSGI.
Les points de terminaison et les routes peuvent tous deux utiliser des fonctions asynchrones. De plus, FastAPI permet la création productive d'applications Web dans un code Python contemporain, propre et à indice de type.
Le principal cas d'utilisation de FastAPI est, comme son nom l'indique, la création de points de terminaison d'API.
L'utilisation de la norme OpenAPI, qui inclut une interface utilisateur Swagger interactive, ou la fourniture de données de dictionnaire Python au format JSON sont deux moyens simples d'y parvenir. Cependant, FastAPI n'est pas seulement pour les API.
Il peut être utilisé pour proposer des pages Web standard à l'aide du moteur de modèle Jinja2 et pour servir des applications utilisant WebSockets, en plus de pratiquement tout ce qu'un framework Web peut faire.
Dans cet article, nous allons développer un modèle d'apprentissage automatique simple, puis utiliser FastAPI pour le déployer. Commençons.
Installation de FastAPI et création de la première API
L'installation de la bibliothèque et d'un serveur ASGI est requise en premier ; Uvuicorn ou Hypercorn fonctionnera. Cela fonctionne en entrant la commande suivante dans le Terminal :
Maintenant que l'API a été créée, vous pouvez utiliser votre éditeur de code préféré et le parcourir. Créez un script Python appelé ml_model.py pour commencer. Vous êtes invités à donner un nom différent au vôtre, mais pour les besoins de cet article, je ferai référence à ce fichier sous le nom de ml_model.py.
Pour créer une API simple avec deux points de terminaison, vous devez effectuer les tâches suivantes :
- Importez les bibliothèques FastAPI et Uvicorn.
- Configurez une instance de classe FastAPI.
- Déclarez la première route, qui, sur la page d'index, produit un objet JSON simple.
- Déclarez la deuxième route, qui fournit un objet JSON simple avec un message personnalisé. Le paramètre de nom provient directement de l'URL (par exemple, https://127.0.0.1:8000/Jay).
- Utilisez Uvicorn pour exécuter l'API.
La mise en œuvre de ces cinq étapes est illustrée dans le bit de code suivant, c'est-à-dire. créer une API simple
Terminé! Lançons notre API immédiatement. Ouvrez une fenêtre de terminal à côté du fichier ml model.py pour y parvenir. Ensuite, entrez ce qui suit :
la touche Entrée. Avant de continuer, démystifions cette affirmation. La première application utilise uniquement le nom de fichier Python, sans l'extension. La deuxième application doit avoir le même nom que votre instance FastAPI.
En utilisant -reload, vous indiquez à l'API que vous souhaitez qu'elle se recharge automatiquement lorsque vous enregistrez le fichier plutôt que de recommencer à zéro.
Lancez maintenant un navigateur et accédez à https://127.0.0.1:8000 ; le résultat devrait apparaître comme suit :
Vous comprenez maintenant comment créer une API simple à l'aide de FastAPI.
Construire et entraîner le modèle Machine Learning
Sans collecter ni analyser aucune donnée, nous allons juste former un modèle simple. Ceux-ci ne sont pas liés au déploiement de modèles et ne sont pas essentiels au sujet traité.
Un modèle basé sur le jeu de données Iris peut être installé en utilisant le même Réseau neuronal méthode d'installation.
Et c'est exactement ce que nous ferons : téléchargez le Ensemble de données Iris et former le modèle. Ce ne sera pas simple. Pour commencer, créez un fichier nommé jaysmlmodel.py.
Dans celui-ci, vous effectuerez les opérations suivantes :
- Imports - Vous aurez besoin de pandas, de scikit-RandomForecastClassifier, du BaseModel de Learn's pydantic (vous découvrirez pourquoi à l'étape suivante) et de joblib pour stocker et charger des modèles.
- Déclarez une classe IrisSpecies qui hérite du modèle de base. Cette classe ne contient que les champs nécessaires pour prévoir une seule espèce de fleur (plus à ce sujet dans la section suivante)
- Créez une classe. IrisModel est un outil d'entraînement et de prédiction de modèles.
- Déclarez une méthode nommée _train model dans IrisModel. Il est utilisé pour entraîner des modèles à l'aide de la technique Random Forests. Le modèle entraîné est renvoyé par la procédure.
- Déclarez une fonction d'espèce prédite dans IrisModel. Il est utilisé pour prévoir sur la base de 4 facteurs d'entrée (mesures de fleurs). La prévision (espèces de fleurs) et la probabilité de prédiction sont renvoyées par l'algorithme.
- Modifiez le constructeur dans IrisModel afin qu'il charge le jeu de données Iris et forme le modèle s'il est absent du dossier. Cela résout le problème de la formation répétée de nouveaux modèles. La bibliothèque joblib est utilisée pour le chargement et la sauvegarde du modèle.
Voici le code complet :
J'espère que la liste ci-dessus et les commentaires ont facilité la compréhension même s'il s'agissait d'une quantité importante de code à créer. Maintenant que ce modèle a été développé, publions ses capacités de prédiction sur une API REST.
Construire une API REST complète
Revenez au fichier ml_model.py et purgez toutes les données. Le passe-partout sera essentiellement le même que celui que vous aviez auparavant, mais nous devrions recommencer avec un fichier vierge.
Vous ne définirez qu'un point final cette fois, qui est celui utilisé pour déterminer le type de fleur. IrisModel.predictspece(), qui a été déclaré dans la section précédente, est appelé par ce point de terminaison pour effectuer la prédiction.
Le type de demande est l'autre grand changement. Afin de transmettre les paramètres en JSON plutôt qu'en URL, il est recommandé d'utiliser POST lors de l'utilisation machine learning Apis.
La phrase ci-dessus peut avoir ressemblé à du charabia si vous êtes un Data Scientist, mais ça va. Pour concevoir et déployer des modèles, il n'est pas forcément nécessaire d'être un expert des requêtes HTTP et des API REST.
Les tâches pour ml model.py sont peu nombreuses et simples :
- Vous devez importer les éléments suivants à partir du fichier jaymlmodel.py créé précédemment : uvicorn, FastAPI, IrisModel et IrisSpecies.
- Créez des instances de FastAPI et IrisModel.
- Déclarez une fonction sur https://127.0.0.1:8000/predict pour faire des prédictions.
- La méthode IrisModel.predictspecies() reçoit un objet de type IrisSpecies, le transforme en dictionnaire, puis le renvoie. Les rendements sont la classe attendue et la probabilité prédite.
- Utilisez uvicorn pour exécuter l'API.
Encore une fois, voici le code complet du fichier avec ses commentaires :
C'est tout ce que vous devez faire. À l'étape suivante, testons l'API.
Tester l'API
Entrez à nouveau la ligne suivante dans le Terminal pour exécuter l'API : uvicorn ml_model:app –reload
Voici comment la page de documentation apparaît :
Alors c'est tout pour aujourd'hui. Dans la partie qui suit, concluons.
Conclusion
Aujourd'hui, vous avez appris ce qu'est FastAPI et comment l'utiliser, en utilisant à la fois un exemple d'API simple et un exemple d'apprentissage automatique simple. Vous avez également appris à créer et à afficher la documentation de l'API, ainsi qu'à la tester.
C'est beaucoup pour une seule pièce, alors ne soyez pas surpris s'il faut quelques lectures pour bien comprendre.
Codage heureux.
Soyez sympa! Laissez un commentaire