Entraînement d’un modèle

Lien vers le dépôt d’entraiement : https://github.com/InseeFrLab/satellite-images-train.

🚀 Démarrage rapide

1. Cloner et configurer l’environnement

git clone https://github.com/InseeFrLab/satellite-images-train.git
cd satellite-images-train
uv sync
uv run pre-commit install

2. Lancer en local

Définissez les paramètres d’entraînement puis exécutez :

bash bash/mlflow-run.sh

L’ensemble de l’exécution sera automatiquement enregistré dans MLflow.

3. Lancer avec Argo Workflows ☁️

  1. Mettez à jour les paramètres dans argo-workflows/train-workflow.yaml argo-workflows/train-workflow.yaml.
  2. Soumettez le workflow via l’interface CLI ou l’interface graphique Argo en copier/collant le template:
argo submit argo-workflows/train-workflow.yaml

🧠 Configuration du modèle

Le pipeline d’entraînement est construit avec PyTorch et conçu pour être flexible :

  • Architectures : deeplabv3, segformer-b[0–5], single_class_deeplabv3
  • Fonctions de perte: Cross-Entropy (avec différentes variantes), BCE, BCE avec logits
  • Schedulers: reduce_on_plateau, one_cycle, etc.
  • Sources des labels: BDTOPO, COSIA ou autres.

De nouveaux modèles peuvent être implémenter en rajoutant le code dans src/models/components/segmentation_models.py. Les fonctions de perte sont définies dans src/config/loss.py et les schedulers dans src/config/scheduling.py. En ce qui concerne les annotations, cela se joue dans le dépot de preprocessing

📈 L’utilisation de MLflow

Le script src/train.py intègre déjà MLflow, et chaque expérimentation est automatiquement enregistrée et visualisable via l’interface graphique MLflow.

Lors de l’exécution d’une expérimentation, assurez-vous que la variable d’environnement MLFLOW_TRACKING_URI est correctement définie afin que les logs soient stockés au bon endroit. Grâce à mlflow.pytorch.autolog(), les principaux éléments (paramètres, métriques, artefacts, etc.) sont logués automatiquement. Si besoin, vous pouvez désactiver l’autologging pour enregistrer manuellement uniquement les informations jugées essentielles.

Une fois vos expérimentations réalisées, vous pouvez les comparer facilement en les sélectionnant dans l’interface puis en cliquant sur Compare. MLflow vous permet alors d’analyser visuellement les métriques obtenues en fonction des hyperparamètres utilisés.

🔁 Promotion d’un modèle vers la production

Voici la procédure pour enregistrer un modèle performant dans le Model Registry, puis le déployer :

  1. Identifiez une expérimentation satisfaisante, puis cliquez sur le nom du run associé pour accéder à ses détails.
  2. Cliquez sur Register model pour enregistrer le modèle.
  3. Choisissez le registre approprié (Segmentation ou Segmentation-multiclass) ou créez un nouveau registre si nécessaire.
  4. Ajoutez un tag et/ou un alias pour votre modèle. L’alias peut être utilisé, comme la version, pour charger le modèle depuis le Model Registry.
  5. Rendez-vous sur le dépôt GitOps (ou clonez-le si ce n’est pas déjà fait).
  6. Modifiez les lignes appropriées pour indiquer le nom et la version du modèle à déployer, puis effectuez un commit.
  7. Connectez-vous à ArgoCD et vérifiez que l’application satellite-images-api a bien été mise à jour. Sinon, cliquez sur Refresh.
🛠️ Améliorations techniques possibles

Amélioration technique sont envisageables :

  • Ajouter une signature du modèle MLflow
  • Adapter le parsing des listes pour simplifier le CLI.
  • Utiliser *args et **kwargs pour réduire le nombre de paramètres de la fonction.