Intelligence Artificielle

MLOps : comment faire passer une IA du prototype à la production ?

Par divinioPublié le 9 min de lecture

Développer un modèle d’intelligence artificielle est une première étape. Le véritable défi commence souvent lorsqu’il faut transformer ce modèle expérimental en une application capable de fonctionner de manière fiable avec de nombreux utilisateurs.

Un modèle peut être excellent dans un notebook et pourtant devenir difficile à maintenir lorsqu’il doit être intégré dans une application web ou mobile, déployé sur un serveur, mis à jour régulièrement et surveillé en production.

C’est précisément là qu’intervient le MLOps.

Le MLOps combine les pratiques du Machine Learning, du DevOps, de l’automatisation et de l’administration des infrastructures afin de faciliter le passage d’un modèle d’IA de la recherche à la production.

Dans cet article, nous allons découvrir ce qu’est le MLOps, les principaux problèmes rencontrés lors du passage en production et les technologies qui permettent de construire un pipeline MLOps complet.


🤖 Qu’est-ce que le MLOps ?

Le terme MLOps signifie généralement Machine Learning Operations.

Il désigne un ensemble de pratiques, de méthodes et d’outils permettant de développer, déployer, maintenir et surveiller des modèles de Machine Learning dans des environnements réels.

Dans un projet classique de Machine Learning, le processus peut commencer simplement :

Données
   ↓
Entraînement
   ↓
Modèle
   ↓
Prédictions

Mais une application réelle nécessite beaucoup plus :

Données
   ↓
Préparation
   ↓
Entraînement
   ↓
Évaluation
   ↓
Versionnement
   ↓
API
   ↓
Conteneurisation
   ↓
Déploiement
   ↓
Surveillance
   ↓
Mise à jour

Le MLOps cherche donc à automatiser et fiabiliser cette chaîne.


🧪 Le problème : un prototype n’est pas une application en production

Un modèle peut fonctionner parfaitement dans un environnement de recherche.

Par exemple, un développeur peut entraîner un modèle dans un notebook Jupyter :

model.fit(X_train, y_train)
prediction = model.predict(X_test)

Le modèle produit alors de bonnes prédictions.

Mais plusieurs questions apparaissent ensuite :

  • Comment exposer le modèle à une application web ?
  • Comment permettre à une application mobile de l’utiliser ?
  • Comment déployer le modèle sur un serveur ?
  • Comment gérer les dépendances Python ?
  • Comment mettre à jour le modèle ?
  • Comment surveiller les performances ?
  • Que se passe-t-il si plusieurs milliers d’utilisateurs envoient des requêtes ?
  • Comment revenir à une ancienne version du modèle en cas de problème ?

C’est ce que l’on peut appeler le mur de la production.

Passer du prototype à la production demande donc une architecture adaptée.


🚧 Le mur de la production

Un projet d’IA peut fonctionner correctement pendant la phase de recherche, puis rencontrer plusieurs difficultés lorsqu’il devient un véritable service.

1. Les dépendances

Le modèle peut dépendre de versions précises de Python, NumPy, PyTorch, TensorFlow, scikit-learn ou d’autres bibliothèques.

Une différence entre l’environnement de développement et le serveur peut provoquer des erreurs.

2. Le déploiement

Il faut installer et configurer correctement l’application sur l’infrastructure cible.

3. La scalabilité

Une application utilisée par dix personnes n’a pas nécessairement les mêmes besoins qu’une application utilisée par plusieurs milliers d’utilisateurs.

4. Les mises à jour

Un nouveau modèle doit pouvoir être déployé sans interrompre inutilement le service.

5. La surveillance

Une application d’IA doit être surveillée comme n’importe quelle application de production, mais il faut également surveiller certains aspects propres au Machine Learning.


🐳 La conteneurisation avec Docker

Docker est particulièrement utile pour standardiser l’environnement d’exécution d’un projet MLOps.

L’idée est de créer une image contenant l’application et les éléments nécessaires à son fonctionnement.

Par exemple :

Application IA
     +
Python
     +
Bibliothèques
     +
Dépendances
     ↓
Docker Image
     ↓
Docker Container

Cela permet de réduire les différences entre les environnements.

Un modèle développé localement peut ainsi être exécuté dans un environnement similaire sur un serveur.

Docker peut également être utilisé pour séparer les différents composants d’une architecture :

          ┌───────────────┐
          │   Frontend    │
          └───────┬───────┘
                  │
                  ↓
          ┌───────────────┐
          │      API      │
          └───────┬───────┘
                  │
                  ↓
          ┌───────────────┐
          │ Modèle IA     │
          └───────────────┘

Dans une architecture plus complète, on peut également retrouver une base de données, un système de cache, un stockage d’objets et des outils de monitoring.


🔌 L’API : connecter le modèle à l’application

Un modèle de Machine Learning ne doit pas nécessairement être directement intégré dans le frontend.

Une approche courante consiste à exposer le modèle à travers une API.

Par exemple :

Application Web / Mobile
          │
          ↓
        API
          │
          ↓
      Modèle IA
          │
          ↓
     Prédiction

Une API peut recevoir des données :

{
  "temperature": 25.4,
  "humidity": 72
}

et retourner une prédiction :

{
  "prediction": "normal",
  "confidence": 0.94
}

Des frameworks comme FastAPI permettent notamment de construire des APIs Python adaptées à ce type d’architecture.


⚙️ Automatisation et pipeline MLOps

L’automatisation est l’un des éléments importants du MLOps.

L’objectif est d’éviter qu’une personne doive effectuer manuellement toutes les étapes à chaque modification du projet.

Un pipeline peut ressembler à ceci :

Code
 ↓
Tests
 ↓
Build
 ↓
Entraînement
 ↓
Évaluation
 ↓
Création de l'image Docker
 ↓
Déploiement
 ↓
Monitoring

Lorsqu’une nouvelle version du code ou des données est disponible, certaines étapes peuvent être déclenchées automatiquement.

Cela rapproche le Machine Learning des pratiques utilisées en DevOps.


🔄 CI/CD dans un projet Machine Learning

Le principe de CI/CD peut également être appliqué aux projets d’IA.

CI, ou Continuous Integration, permet notamment d’automatiser les tests et les vérifications du code.

CD, ou Continuous Delivery/Deployment, permet d’automatiser la livraison ou le déploiement des applications.

Dans un projet MLOps, le pipeline peut aller plus loin :

Git Push
   ↓
Tests
   ↓
Build
   ↓
Validation
   ↓
Build Docker
   ↓
Déploiement
   ↓
Monitoring

Selon le projet, le pipeline peut également intégrer l’entraînement et la validation des modèles.


📊 La surveillance : une étape essentielle

Déployer un modèle ne signifie pas que le travail est terminé.

Une application d’IA doit être surveillée dans le temps.

On peut notamment suivre :

  • le temps de réponse de l’API ;
  • l’utilisation du CPU ;
  • l’utilisation de la mémoire ;
  • le nombre de requêtes ;
  • les erreurs ;
  • la disponibilité du service ;
  • les performances du modèle ;
  • l’évolution des données.

Cette surveillance permet de détecter rapidement les problèmes.


📉 Le problème du Data Drift

Les données utilisées en production peuvent évoluer avec le temps.

Imaginons un modèle entraîné sur des données provenant d’une période donnée.

Quelques mois plus tard, les caractéristiques des nouvelles données peuvent être différentes.

Le modèle peut alors produire des résultats moins pertinents.

Ce phénomène peut notamment être associé au data drift.

Il est donc important de ne pas considérer le modèle comme un élément statique.

Il faut pouvoir :

Collecter les données
        ↓
Analyser
        ↓
Détecter les changements
        ↓
Réentraîner si nécessaire
        ↓
Évaluer le nouveau modèle
        ↓
Déployer

🧠 Versionner les modèles

Un autre aspect important du MLOps est le versionnement.

Supposons que l’on dispose de plusieurs versions :

model-v1
model-v2
model-v3

Chaque version peut avoir été entraînée avec des données ou des paramètres différents.

Le versionnement permet de savoir :

  • quel modèle est actuellement en production ;
  • avec quelles données il a été entraîné ;
  • quels paramètres ont été utilisés ;
  • quelles performances ont été obtenues ;
  • quelle version était utilisée précédemment.

Cela facilite également les retours en arrière lorsqu’une nouvelle version rencontre un problème.


🏗️ À quoi ressemble un pipeline MLOps complet ?

Une architecture peut être organisée de la manière suivante :

              DONNÉES
                 │
                 ↓
          Préparation
                 │
                 ↓
          Entraînement
                 │
                 ↓
          Évaluation
                 │
                 ↓
       Versionnement modèle
                 │
                 ↓
        API de prédiction
                 │
                 ↓
        Conteneur Docker
                 │
                 ↓
            Déploiement
                 │
                 ↓
          Monitoring
                 │
                 ↓
       Nouvelles données
                 │
                 └──────────────→ Réentraînement

Cette boucle représente une idée importante du MLOps : le modèle évolue avec son environnement.


🛠️ Quelques technologies utilisées en MLOps

Il n’existe pas une seule stack obligatoire pour faire du MLOps.

Le choix dépend du projet, de son niveau de complexité et de l’infrastructure disponible.

On peut notamment retrouver :

🐍 Python

Très utilisé pour le développement des modèles et des pipelines Machine Learning.

🚀 FastAPI

Permet de créer une API pour exposer un modèle à une application.

🐳 Docker

Permet de conteneuriser l’application et ses dépendances.

🔄 Git

Utilisé pour le versionnement du code.

⚙️ GitHub Actions / GitLab CI

Permettent d’automatiser différentes étapes des pipelines CI/CD.

📦 Kubernetes

Peut être utilisé pour orchestrer des conteneurs dans des infrastructures plus importantes.

📊 Prometheus et Grafana

Peuvent être utilisés pour collecter et visualiser des métriques d’infrastructure et d’application.

🧪 MLflow

Peut notamment aider à suivre les expériences, les paramètres, les métriques et les versions de modèles.

Le choix des outils doit cependant rester proportionné aux besoins du projet.


🌐 Exemple d’architecture pour une application IA

Prenons une application mobile utilisant un modèle de Machine Learning.

L’utilisateur effectue une action depuis l’application :

📱 Application mobile
          ↓
       HTTPS
          ↓
      API FastAPI
          ↓
     Service IA
          ↓
      Modèle ML
          ↓
      Prédiction
          ↓
      API FastAPI
          ↓
📱 Application mobile

L’ensemble peut ensuite être déployé avec Docker sur une infrastructure cloud.

Une couche de monitoring peut surveiller l’API et les ressources utilisées.


🔐 Le MLOps ne concerne pas uniquement le modèle

Il est important de ne pas réduire le MLOps à l’entraînement d’un modèle.

Un système d’IA en production doit également prendre en compte :

  • la sécurité des APIs ;
  • la gestion des secrets ;
  • l’authentification ;
  • les permissions ;
  • le stockage des données ;
  • les sauvegardes ;
  • la disponibilité ;
  • les logs ;
  • le monitoring ;
  • la gestion des versions ;
  • la reproductibilité des expériences.

Un bon modèle dans une infrastructure mal configurée reste un problème de production.


🚀 Du notebook à la production

On peut résumer le parcours d’un projet IA de cette manière :

🧪 Recherche
     ↓
📓 Prototype
     ↓
🧠 Modèle
     ↓
🔌 API
     ↓
🐳 Docker
     ↓
⚙️ CI/CD
     ↓
☁️ Déploiement
     ↓
📊 Monitoring
     ↓
🔄 Amélioration continue

C’est cette transition entre expérimentation et production qui constitue l’un des principaux enjeux du MLOps.


🎯 Pourquoi apprendre le MLOps ?

Le développement de modèles d’IA ne représente qu’une partie du travail nécessaire pour construire un produit réellement exploitable.

Comprendre le MLOps permet de mieux maîtriser :

  • le déploiement des modèles ;
  • les APIs ;
  • Docker ;
  • le cloud ;
  • les pipelines CI/CD ;
  • le monitoring ;
  • le versionnement ;
  • l’automatisation ;
  • l’administration des infrastructures.

C’est donc un domaine situé à la rencontre de plusieurs compétences :

Machine Learning + DevOps + Cloud + Développement + Administration système.


📌 Conclusion

Faire fonctionner un modèle dans un notebook est une étape importante, mais le transformer en service fiable demande une architecture et des processus adaptés.

Le MLOps apporte justement cette approche en combinant développement Machine Learning, automatisation, déploiement, conteneurisation et surveillance.

Avec des outils comme Python, FastAPI, Docker, Git, CI/CD, Kubernetes, MLflow ou Prometheus, il devient possible de construire un cycle plus reproductible entre le développement du modèle et son utilisation en production.

Le véritable objectif n’est donc pas simplement de créer un modèle performant.

Il faut également pouvoir le déployer, le surveiller, le maintenir, le mettre à jour et le faire évoluer.

Newsletter

Recevez nos prochains articles.

Un email à chaque nouvel article. Nous collectons uniquement votre adresse email (voir notre politique de confidentialité).