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 ☁️
- Mettez à jour les paramètres dans argo-workflows/train-workflow.yaml
argo-workflows/train-workflow.yaml
. - 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.
Voici la procédure pour enregistrer un modèle performant dans le Model Registry, puis le déployer :
- Identifiez une expérimentation satisfaisante, puis cliquez sur le nom du run associé pour accéder à ses détails.
- Cliquez sur
Register model
pour enregistrer le modèle. - Choisissez le registre approprié (
Segmentation
ouSegmentation-multiclass
) ou créez un nouveau registre si nécessaire. - 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.
- Rendez-vous sur le dépôt GitOps (ou clonez-le si ce n’est pas déjà fait).
- Modifiez les lignes appropriées pour indiquer le nom et la version du modèle à déployer, puis effectuez un commit.
- Connectez-vous à ArgoCD et vérifiez que l’application
satellite-images-api
a bien été mise à jour. Sinon, cliquez surRefresh
.
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.