Codification automatique de l’APE à l’Insee

Présentation à l’INSERM

7 mai 2024

1️⃣ Contexte

Contexte

  • Sirene est le répertoire des entreprises françaises
  • Un code APE est attribué à chaque entreprise
  • Début 2023:
    • Refonte du répertoire Sirene
    • Mise en place d’un guichet unique pour les formalités d’entreprises
    • Forte baisse de performance de l’outil de codification historique
    • Equipes Sirene déjà surchargées avant la refonte
  • Conséquence : besoin d’un nouvel outil… en innovant

Données

  • Prédiction du code APE à partir des descriptifs d’activités
  • \(\approx\) 10 millions d’obs. issues de Sirene 3 couvrant la période 2014-2022
  • Données labellisées par Sicore ou par un gestionnaire
  • Structure hiérarchique de la nomenclature

La nomenclature hiérarchique de l’APE

Niveau Code Libellé Taille
Section H Transports et entreposage 21
Division 52 Entreposage et services auxiliaires des transports 88
Groupe 522 Services auxiliaires des transports 272
Classe 5224 Manutention 615
Sous-classe 5224A Manutention portuaire 732

Données utilisées

  • Une observation consiste en :
  • Description textuelle de l’activité - text
    • Code APE vrai labelisé par le moteur de règles –- APE_SICORE (732 modalités)
    • un descriptif textuel de l’activité – LIB_SICORE
    • la nature de l’activitéNAT (23 modalités)
    • le type de la liasseTYP (15 modalités)
    • le type d’évènementEVT (24 modalités)
    • la surface (\(m^2\))SUR (4 modalités)
  • Prétraitements standards :
    • Passage en minuscules
    • Suppression de la ponctuation
    • Suppression des nombres
    • Suppression des stop words
    • Racinisation (stemming)

2️⃣ Méthodologie

Modèle fastText

  • fastText: Modèle “sac de mots” très simple et rapide (C++).

Prise en compte des variables catégorielles

  • Concaténation du libellé avec les noms et valeurs des variables annexes :
Libellé NAT TYP EVT SUR
Cours de musique NaN X 01P NaN
🢃

“Cours de musique NAT_NaN TYP_X EVT_01P SUR_NaN

  • Méthode imparfaite : 3-grams “AT_” ou “T_0” utilisés.

3️⃣ Situation actuelle

Le paysage administratif

Construction d’un indice de confiance

  • Objectif : discriminer les mauvaises des bonnes prédictions.
  • Indice de confiance retenu : différence entre les deux probabilités les plus élevées.

Mise en production actuelle

  • 2 issues possibles :
    • codification automatique 🚀
    • reprise gestionnaire 🔍

Codification du flux de liasses

Reprise gestionnaire

Codification automatique sur l’IHM

Reprise gestionnaire sur l’IHM

4️⃣ Vers une approche MLOps

Situation actuelle inefficace

  • Infrastructure divergente :
    • Modèle entrainé sur la plateforme SSP Cloud 😍
    • Module de codification développé en Java au sein d’une architecture monolithique 😫
    • Duplication de code et risque d’erreurs

Situation actuelle inefficace

  • Problèmes organisationnels :
    • Méconnaissance des problèmes métier côté Lab pour la maintenance
    • Contrôle de version et transmission des modèles non centralisés
    • Organisation inefficace entre les parties prenantes

Situation actuelle inefficace

  • Spécificités du ML non prises en compte :
    • Pas de surveillance du modèle en temps réel
    • Pas de données golden standard
    • Pas de ré-entrainement régulier
  • Conséquence : Besoin d’adopter les bonnes pratiques d’un point de vue technique (MLOps) et organisationel

Notre implémentation MLOps 🚀

  • Architecture en microservices qui tournent sur un cluster Kubernetes :
    • Contrôle de version des expérimentations et modèles : MLflow
    • Mise à dispostion du modèle via API: FastAPI
    • Automatisation avec ArgoCD
    • Dashboard de surveillance : Quarto and DuckDB
    • Contrôle qualité: annotations avec Label Studio

MLflow au coeur de notre projet

Exposer un modèle via une API

  • Modèle mis à disposition via une API conteneurisée :
    • Simple pour les utilisateurs

Exposer un modèle via une API

  • Modèle mis à disposition via une API conteneurisée :
    • Simple pour les utilisateurs
    • Format de requête standard
    • Passage à l’échelle optimisé
    • Modulaire et portable
  • Déploiement continu avec Argo CD

Exposer un modèle via une API

Monitoring

  • Surveiller un modèle ML en production est nécessaire :
    • Pour détecter des distribution drifts dans les données d’entrées
    • Pour s’assurer qu’il a un comportement stable
    • Pour savoir quand ré-entraîner le modèle
  • Idéallement, on voudrait connaître la performance en temps réel mais compliqué.. et coûteux !
  • Surveillance technique aussi importante : latence, memoire, usage disque, etc.

Monitoring

Contrôle qualité

  • Données de test collectées et annotées périodiquement
  • Annotation réalisée avec Label Studio
  • Métriques de performance calculées sur le jeu de test
  • Performance affichée dans un dashboard de surveillance
  • Ré-entraînement déclenché lorsque certaines métriques passent un certain seuil (pas encore fait)

Contrôle qualité

Dashboard

Tableau de bord