Ce dossier, P8, est le projet 8 avant que je ne fasse le docker init. J'ai cloné le projet qui s'appelle maintenant Projet_8 dans lequel je fais le docker init. Build l'image Docker: docker build \ -t predictionsentiments \ -f Projet_8/Dockerfile Projet_8 Runner l'image Docker: docker run -p 8000:8000 --name predictionsentiments_container predictionsentiments POur accéder à la documentation: http://0.0.0.0:8000/docs # AZURE PORTAL : Pour vérifier où mes images docker sont: container registries dans la barre de recherche Azure Services < dépôts predictionsentimentsregistry est mon registry situé dans mes Dépôts Azure L'application est déployée via le 'app service' # MLflow Pour lancer MLFlow il faut taper 'mlflow server' Ensuite, aller à http://127.0.0.1:5000/ # Lancer l'application cd Projet_8 uvicorn main:app --host 0.0.0.0 --port 8000 uvicorn main:app --host 0.0.0.0 --port 8000 --reload # Feeling classifier Pour lancer l'API fastapi dev main.py Ouvir http://127.0.0.1:8000/docs A faire: - Installer Docker Desktop - Faire un Dockerfile avec l'api dedans et qui marche - Creer un Github - Creer un Github workflow pour build l'image - Creer un compte Azure, creer une azure app - Deployer l'image de Github sur Azure app, - Avoir l'API qui fonctionne sur Azure APP # Fonctionnement de main.py main.py : Le modèle est chargé dynamiquement au lancement de l'API via lifespan pour une meilleure gestion de la mémoire. Le point de terminaison /segmentation a été mis à jour : il convertit désormais l'image entrante, la redimensionne en 256x512, la normalise, fait la prédiction via notre modèle Keras, et génère un masque coloré basé sur les couleurs Cityscapes. L'image du masque est finalement renvoyée via StreamingResponse au format PNG, ce qui est le standard le plus optimisé pour les API d'images avec FastAPI. Un point de terminaison /health a été ajouté pour vérifier si l'API est saine et le modèle bien chargé. Attention : Comme mentionné dans le Walkthrough, bien que notre modèle soit léger, TensorFlow reste une librairie très lourde en RAM. S'il s'avère que l'API crashe par manque de mémoire sur Render (limite de 512 Mo), il faudra envisager de convertir notre modèle en format TFLite ou ONNX. Si un jour j'ai un serveur plus puissant et je souhaite changer de modèle il suffira de changer la variable MODEL_PATH = 'best_mobilenet_unet_model.keras' dans le main.py