Construire un pipeline de machine learning

Une introduction aux enjeux de mise en production

Introduction

Qui suis-je ?

  • Accompagnement de projets data science ;

Qui suis-je ?

D’autres cours que je donne à l’ENSAE ou l’Insee peuvent vous intéresser:

Et surtout consultez le portail complet de formation du datalab de l’Insee

Plan

  • 1️⃣ Evolutions récentes de l’écosystème de la donnée ;
  • 2️⃣ Pourquoi parler de mise en production ?
  • 3️⃣ Création d’un pipeline sur données de transactions immobilières ;
  • 4️⃣ Enjeux de la mise en production par le biais d’une API
  • 5️⃣ APIfication de notre modèle de prix ;
  • 6️⃣ Comment aller plus loin ?
  • 🚀

Objectifs pédagogiques


  • Comprendre les implications pratiques de l’utilisation accrue du machine learning pour la modélisation ;
  • Découvrir la mise à disposition de modèles sous forme d’API:
    • Être à la page de la pratique moderne de la data science.

Contexte

Prolifération des données

  • Numérisation et innovations technologiques ont réduit le coût de production de la donnée ;
    • Volume de données produites en explosion
  • L’utilisation des statistiques n’est pas nouvelle (cf. Desrosières)…
  • … mais une place accrue :
    • Dans le débat public et l’action publique (Supiot, Martin) ;
    • Dans les stratégies d’entreprise.

Diversification des données

  • Des données de nature très différentes:
    • Données structurées classiques ;
    • Données géolocalisées ;
    • Données textuelles et non structurées ;
    • Images, sons et vidéos.
  • Besoin de nouvelles méthodes pour valoriser ces données :
    • Machine learning (re)devenu un outil classique ;
    • Réseaux de neurone pour les problèmes complexes (NLP, CV)…

Pourquoi le machine learning ?

  • Meilleure prise en compte des non-linéarités que statistique paramétrique ;
  • Simplicité à mise en oeuvre opérationnelle ;

Diversification des données (1/4)

Données tabulaires classiques

Diversification des données (1/4)

Données tabulaires classiques

  • Données structurées sous forme de tableau

Source: Hadley Wickham, R for data science

  • très bien outillé pour ces données (si volumétrie adaptée)

Diversification des données (2/4)

Données géolocalisées

Diversification des données (2/4)

Données géolocalisées

  • Données tabulaires avec une dimension spatiale supplémentaire
    • Dimension géographique prend des formes multiples:
    • Points, lignes, polygones…
  • très bien outillé pour ces données (si volumétrie adaptée)

Diversification des données (3/4)

Données textuelles et non structurées

  • Applications limitées jusqu’aux années 2010 ;
  • Développement très rapide de la recherche :
    • Collecte accrue : réseaux sociaux, enquêtes…
    • Baisse coûts stockage & augmentation ressources traitement ;
    • Nouvelles techniques statistiques: webscraping, LLM…
  • Utilisation intensive dans l’administration, la recherche et le secteur privé

Diversification des données (3/4)

Données textuelles et non structurées

  • Les LLM bien sûr…
  • … Mais pas que !


Diversification des données (4/4)

Images, sons et vidéos

Plus d’infos dans ce cours sur les données émergentes que je donne avec Tom Seimandi

Diversité des méthodes de machine learning

  • Dispose-t-on de données labellisées ou pas ?
    • Apprentissage supervisé vs non supervisé ;
    • Question évaluation ex post des modèles: labellisation
  • Quelle variable d’intérêt dans un cadre supervisé ?
    • Régression vs classification
  • Quels algorithmes choisir ?

Diversité des méthodes de machine learning

Scikit-Learn: un point d’entrée unifié

  • La librairie de référence pour le ML
    • Développée par l’Inria 🇫🇷🐓
  • Toutes les étapes d’un pipeline basique
    • Préparation des données: train/test split, imputation, standardisation, etc.
    • Estimation: toutes les méthodes ont la même structure
    • Evaluation: métriques de performance, validation croisée, etc.
  • Structure formelle de pipeline
    • Facilitera la mise en production

Pourquoi la mise en production

Pourquoi ?

Pourquoi ?

  • Les data scientists ne connaissent pas le développement applicatif (mais en cours d’évolution) ;
  • Les informaticiens classiques (devs & ops) ne connaissent pas le machine learning.

Contexte

  • Difficulté de passer des expérimentations à la mise en production de modèle de machine learning
  • Tirer parti des meilleures pratiques en génie logiciel:
    • Améliorer la reproductibilité des analyses
    • Déployer des applications de manière robuste
    • Surveiller les applications en cours d’exécution

Le data scientist moderne


L’activité du data scientist tend à se rapprocher de celle du développeur :

  • projets intenses en code

  • projets collaboratifs et de grande envergure

  • complexification des données et des infrastructures

  • déploiement d’applications pour valoriser les analyses

L’approche DevOps

  • Unifier le développement (dev) et l’administration système (ops)
    • Réduire le temps de développement
    • Maintenir la qualité logicielle

L’approche MLOps

  • Intégrer les spécificités des projets de machine learning
    • Expérimentation
    • Amélioration continue

DevOps, DataOps, MLOps ?

  • Le DevOps n’intègre pas les spécificités liées à la data science ;

  • DataOps : déploiement et maintenance de pipelines de données ;

  • MLOps : déploiement et maintenance de modèles de Machine Learning ;

Note

Les bonnes pratiques favorisent la collaboration et facilitent les déploiements.

La notion de mise en production

Définition

  • Mettre en production : faire vivre une application dans l’espace de ses utilisateurs
    • Notion simple mais mise en oeuvre compliquée !
  • Dépasser le stade de l’expérimentation
    • Bonnes pratiques de développement
    • Techniques informatiques d’industrialisation
  • Enjeu : pouvoir jouer le rôle d’interface entre métier et équipes techniques
    • Evolution du métier de data scientist ;
    • Spécificités du ML par rapport à un projet “classique”.

Application 1: pipeline de machine learning

Prise en main du SSP Cloud

Le SSP Cloud, c’est quoi ?

Le SSP Cloud, c’est quoi ?

  • Des serveurs hébergés à l’Insee avec de nombreux logiciels statistiques (dont ) dessus
  • Environnement ouvert à des formations en data science pour découvrir et expérimenter
  • Seulement avec des données en open data

Note

Plus de détails dans la documentation du SSP Cloud

Pourquoi utiliser le SSP Cloud ?

  • Pénible d’installer Python et une ribambelle de packages de data science
  • Mise à disposition d’un environnement standardisé:
    • TP parfaitement reproductibles
  • Un TP peut être lancé en un clic-bouton:
    • Onyxia

Créer un compte

  • Utiliser votre adresse mail universitaire pour créer un compte sur datalab.sspcloud.fr/
  • Votre nom d’utilisateur ne doit contenir ni caractères accentués, ni caractère spécial, ni signe de ponctuation:

Vous pouvez adopter le format prenomnom en faisant attention aux règles précédentes. Par exemple, si vous vous appelez Jérôme-Gérard L’Hâltère, votre nom d’utilisateur pourra être jeromegerardlhaltere.

Application 1

  • Objectifs:
    • Modèle de prix sur données immobilières ;
    • Feature engineering, validation croisée, etc. ;
    • Découvrir les pipelines Scikit ;
  • Direction 👉️ chapitre “Pipeline” de https://pythonds.linogaliana.fr

Avancer vers la mise en production d’un modèle 🚀

Vers la mise en production

  • On a construit un projet de data science reproductible et conforme aux standards des bonnes pratiques.
  • Pour valoriser le projet, il faut le déployer dans un environnement en lien avec les utilisateurs:
    • Quel est le format adapté pour le valoriser ?
    • Quelle infrastructure de production ?
    • Comment automatiser le processus de déploiement ?

Format de valorisation

  • Critères à prendre en compte :
    • Quels sont les utilisateurs potentiels ?
    • Seulement de la mise à disposition, ou besoin d’interactivité ?
    • Spécificités ML : entraînement en batch ou online ?
    • Besoin de scalabilité ?
  • Formats usuels : API, application web, dashboard, site internet, rapport automatisé…

Workflow classique


Progresser pas à pas pour faciliter l’utilisation du modèle:

  1. Transformer les notebooks en script ;
  2. Créer une API en local avec pour faciliter le predict ;
  3. Déployer l’API pour la rendre disponible à tous ;
  4. Greffer des applications clientes pour faciliter l’usage.

Note

Chaque étape est une progression dans l’échelle de la technicité et de la reproductibilité.

Exposer un modèle via une API REST

  • API : interface entre l’utilisateur (client) et le modèle entraîné

  • API REST : permet de requêter le modèle avec une syntaxe simple (HTTP) et de manière scalable

Développer une API en local

Etape 1: modulariser la consommation du modèle

  • Scripts pour les différentes étapes du pipeline ML:
    • Récupération des données ;
    • Définition pipeline Scikit: preprocessing, training ;
    • Consommation du modèle pour predict.
  • Définir une fonction qui prend en argument les variables du modèle
Exemple
def predict(
    month: int = 3,
    nombre_lots: int = 1,
    code_type_local: int = 2,
    nombre_pieces_principales: int = 3,
    surface: float = 75
) -> float:
    """
    """

    df = pd.DataFrame(
        {
            "month": [month],
            "Nombre_de_lots": [nombre_lots],
            "Code_type_local": [code_type_local],
            "Nombre_pieces_principales": [nombre_pieces_principales],
            "surface": [surface]
        }
    )

    prediction = model.predict(df)

    return prediction

Développer une API en local

Etape 2: créer une API en local

  • FastAPI: framework simple pour créer une API avec
    • Très simple de transformer fonctions en API ;
    • Documentation automatisée pour le swagger
Exemple
@app.get("/predict", tags=["Predict"])
async def predict(
    month: int = 3,
    nombre_lots: int = 1,
    code_type_local: int = 2,
    nombre_pieces_principales: int = 3,
    surface: float = 75
) -> float:
    """
    """

    df = pd.DataFrame(
        {
            "month": [month],
            "Nombre_de_lots": [nombre_lots],
            "Code_type_local": [code_type_local],
            "Nombre_pieces_principales": [nombre_pieces_principales],
            "surface": [surface]
        }
    )

    prediction = model.predict(df)

    return prediction

Application 2

  • Objectif:
    • Développer une API pour consommer le modèle développé précédemment ;
  • Direction 👉️ chapitre “API de machine learning” de https://pythonds.linogaliana.fr

Aller plus loin: automatiser la création de l’API

Limite de l’approche précédente

  • L’entraînement et la création de l’API sont faits à la main:
    • Approche artisanale jusqu’ici ;
    • MLOps: passer à l’âge industriel.
  • Automatiser :
  • Le CI/CD adapté aux projets de machine learning.

CI/CD: kesako ?

  • Intégration continue (CI) : à chaque modification du code source, l’application est automatiquement testée et reconstruite ;
  • Déploiement continu (CD) : les nouvelles versions validées sont automatiquement mise à disposition aux utilisateurs.

Déployer une API

  • Rendre disponible à d’autres utilisateurs l’API ;
  • Nécessite une infrastructure:
    • AWS, GCP, Azure…
    • Infra Kubernetes on premise
  • Selon les organisations, pas forcément data scientist qui fait cela
    • Mais, data scientist doit savoir échanger avec l’équipe qui déploie l’API.

Déployer une API

Exemple de réutilisation facilitée🚀


Conclusion

  • Un pipeline bien pensé est facile à mettre en production
    • Scikit & FastAPI: combo 🔥 pour mettre à disposition un modèle ;
  • En seulement 6 heures on a:
    • Récupéré et nettoyé des données ;
    • Créé un pipeline fonctionnel de machine learning,
    • Crée une API pour mettre à disposition le modèle.
  • On peut maintenant se concentrer sur l’amélioration de la qualité du modèle:
    • Ouvre vers le MLOps: combiner modèle en production, modèles en développement, etc.
    • Enjeux de monitoring de la qualité du modèle avec arrivée de nouvelles données.

Pour aller plus loin


Quelques ressources complémentaires

  • Mise en production de projets data science (ENSAE, 3e année) ;
  • Excellente formation au MLOps (collègues de l’Insee 😉).
  • Me contacter:

Corrections: