removed duplicated pics + blog(.fr).md update

This commit is contained in:
Grégoire Mureau 2025-07-17 17:22:21 +02:00
parent 2cfe305a99
commit 7e26f20611
10 changed files with 16 additions and 16 deletions

View file

@ -88,11 +88,11 @@ Dashboard Expériences MLFlow :
![Dashboard MLFLow](./mlflow_experiments_dashboard.png) ![Dashboard MLFLow](./mlflow_experiments_dashboard.png)
Modèles en production (registre de modèles): Modèles en production (registre de modèles):
![Models Registry](mlflow_models_registry_2-1.png) ![Models Registry](mlflow_models_registry_2.png)
Meilleur modèle non BERT retenu : Meilleur modèle non BERT retenu :
![Modèle retenu](mlflow_models_registry_best_LSTM_model-1.png) ![Modèle retenu](mlflow_models_registry_best_LSTM_model.png)
![Meilleur modèle non BERT](mlflolw_experiments_dashboard_best_LSTM_model-1.png) ![Meilleur modèle non BERT](mlflolw_experiments_dashboard_best_LSTM_model.png)
--- ---
## 🧪 CI, tests et versioning ## 🧪 CI, tests et versioning
@ -109,7 +109,7 @@ Un [pipeline CI/CD](https://github.com/GrgMdmn/OpenClassrooms_AI_Projects/blob/m
- La validation de tests unitaires - La validation de tests unitaires
- La construction et le push de l'api conteneurisée sur dockerhub - La construction et le push de l'api conteneurisée sur dockerhub
![github workflow](github_ci-cd-1.png) ![github workflow](github_ci-cd.png)
--- ---
## 🚀 Déploiement de l’API FastAPI (double) ## 🚀 Déploiement de l’API FastAPI (double)
@ -146,21 +146,21 @@ Le projet propose un **double déploiement** de l’API, en local et dans le clo
- 🏠 **NAS local** : [sentiment-api.greg-madman-nas.duckdns.org](https://sentiment-api.greg-madman-nas.duckdns.org)\ - 🏠 **NAS local** : [sentiment-api.greg-madman-nas.duckdns.org](https://sentiment-api.greg-madman-nas.duckdns.org)\
Interface Docker Compose sur le NAS : Interface Docker Compose sur le NAS :
![docker compose openmediavault](openmediavault_docker-compose_settings-1.png) ![docker compose openmediavault](openmediavault_docker-compose_settings.png)
- ☁️ **Google Cloud Run** : [sentiment-api-service-7772256003.europe-west1.run.app](https://sentiment-api-service-7772256003.europe-west1.run.app)\ - ☁️ **Google Cloud Run** : [sentiment-api-service-7772256003.europe-west1.run.app](https://sentiment-api-service-7772256003.europe-west1.run.app)\
Interface de déploiement Google Cloud : Interface de déploiement Google Cloud :
![déploiement google cloud](google_cloud_interface-1.png) ![déploiement google cloud](google_cloud_interface.png)
--- ---
#### 🔄 Déploiement continu automatisé (NAS uniquement) #### 🔄 Déploiement continu automatisé (NAS uniquement)
Pour assurer un **déploiement continu** sur le NAS, il a été choisi d'installer [**Watchtower**](https://containrrr.dev/watchtower/arguments/) pour rester dans un logique d'environnement 100% `docker`. Cet outil surveille toutes les **10 minutes** l’image Docker de l’API (`sentiment_api`) et, en cas de nouvelle version disponible sur DockerHub, redémarre automatiquement le conteneur avec la dernière image. Pour assurer un **déploiement continu** sur le NAS, il a été choisi d'installer [**Watchtower**](https://containrrr.dev/watchtower/arguments/) pour rester dans un logique d'environnement 100% `docker`. Cet outil surveille toutes les **10 minutes** l’image Docker de l’API (`sentiment_api`) et, en cas de nouvelle version disponible sur DockerHub, redémarre automatiquement le conteneur avec la dernière image.
![Docker Watchtower dans OMV Docker-Compose](watchtower_docker-1.png) ![Docker Watchtower dans OMV Docker-Compose](watchtower_docker.png)
Ce mécanisme garantit que la version déployée sur le NAS reste toujours synchronisée avec la dernière version validée par les tests sur GitHub Actions, **sans intervention manuelle**. Ce mécanisme garantit que la version déployée sur le NAS reste toujours synchronisée avec la dernière version validée par les tests sur GitHub Actions, **sans intervention manuelle**.
![Logs watchtower dans docker (console SSH)](watchtower_logs-1.png) ![Logs watchtower dans docker (console SSH)](watchtower_logs.png)
Un **système d’alerte mail** notifie automatiquement toute mise à jour effectuée. Un **système d’alerte mail** notifie automatiquement toute mise à jour effectuée.
![Rapport mail watchtower update sentiment_api](watchtower_logs_by_email.png) ![Rapport mail watchtower update sentiment_api](watchtower_logs_by_email.png)

View file

@ -88,11 +88,11 @@ MLFlow Experiments Dashboard:
![MLFlow Dashboard](./mlflow_experiments_dashboard.png) ![MLFlow Dashboard](./mlflow_experiments_dashboard.png)
Production Models (model registry): Production Models (model registry):
![Models Registry](mlflow_models_registry_2-1.png) ![Models Registry](mlflow_models_registry_2.png)
Best non-BERT selected model: Best non-BERT selected model:
![Selected Model](mlflow_models_registry_best_LSTM_model-1.png) ![Selected Model](mlflow_models_registry_best_LSTM_model.png)
![Best Non-BERT Model](mlflolw_experiments_dashboard_best_LSTM_model-1.png) ![Best Non-BERT Model](mlflolw_experiments_dashboard_best_LSTM_model.png)
--- ---
@ -110,7 +110,7 @@ A full [CI/CD pipeline](https://github.com/GrgMdmn/OpenClassrooms_AI_Projects/bl
- Validation of unit tests - Validation of unit tests
- Build and push of the containerized API to DockerHub - Build and push of the containerized API to DockerHub
![GitHub Workflow](github_ci-cd-1.png) ![GitHub Workflow](github_ci-cd.png)
--- ---
@ -148,21 +148,21 @@ The project offers a **dual API deployment**, locally and in the cloud:
- 🏠 **Local NAS**: [sentiment-api.greg-madman-nas.duckdns.org](https://sentiment-api.greg-madman-nas.duckdns.org) - 🏠 **Local NAS**: [sentiment-api.greg-madman-nas.duckdns.org](https://sentiment-api.greg-madman-nas.duckdns.org)
Docker Compose interface on the NAS: Docker Compose interface on the NAS:
![Docker Compose OpenMediaVault](openmediavault_docker-compose_settings-1.png) ![Docker Compose OpenMediaVault](openmediavault_docker-compose_settings.png)
- ☁️ **Google Cloud Run**: [sentiment-api-service-7772256003.europe-west1.run.app](https://sentiment-api-service-7772256003.europe-west1.run.app) - ☁️ **Google Cloud Run**: [sentiment-api-service-7772256003.europe-west1.run.app](https://sentiment-api-service-7772256003.europe-west1.run.app)
Google Cloud deployment interface: Google Cloud deployment interface:
![Google Cloud Deployment](google_cloud_interface-1.png) ![Google Cloud Deployment](google_cloud_interface.png)
--- ---
#### 🔄 Automated Continuous Deployment (NAS only) #### 🔄 Automated Continuous Deployment (NAS only)
To ensure **continuous deployment** on the NAS, we chose to install [**Watchtower**](https://containrrr.dev/watchtower/arguments/) to maintain a 100% `docker` environment. This tool checks every **10 minutes** the Docker image of the API (`sentiment_api`) and, if a new version is available on DockerHub, automatically restarts the container with the latest image. To ensure **continuous deployment** on the NAS, we chose to install [**Watchtower**](https://containrrr.dev/watchtower/arguments/) to maintain a 100% `docker` environment. This tool checks every **10 minutes** the Docker image of the API (`sentiment_api`) and, if a new version is available on DockerHub, automatically restarts the container with the latest image.
![Docker Watchtower in OMV Docker-Compose](watchtower_docker-1.png) ![Docker Watchtower in OMV Docker-Compose](watchtower_docker.png)
This mechanism ensures that the version deployed on the NAS always stays synchronized with the latest version validated by GitHub Actions tests, **without manual intervention**. This mechanism ensures that the version deployed on the NAS always stays synchronized with the latest version validated by GitHub Actions tests, **without manual intervention**.
![Logs watchtower in docker (SSH console)](watchtower_logs-1.png) ![Logs watchtower in docker (SSH console)](watchtower_logs.png)
An **email alert system** automatically notifies any update performed. An **email alert system** automatically notifies any update performed.
![Watchtower Logs by Email](watchtower_logs_by_email.png) ![Watchtower Logs by Email](watchtower_logs_by_email.png)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 834 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB