cover machine learning model

Comment déployer un modèle de machine learning ?

Cet article vous invite à faire un petit tour d’horizon de la manière de passer de l’exploration à la production lorsque vous travaillez avec des modèles de machine learning. Quelles sont les principales étapes du cycle de vie des modèles de ML ? Dans la dernière partie de l’article, nous montrerons un exemple d’architecture basée sur Docker et hébergée dans le cloud pour déployer votre modèle de machine learning.

De l'exploration à la production

Chaque cas d’utilisation en data science est un petit voyage qui nécessite souvent de passer d’un problème opérationnel peu clair à une réponse formelle et précise. Cette réponse aura un impact réel sur la vie quotidienne des employés ou des clients. Dès le début, ce voyage vous mettra au défi de « sortir des sentiers battus » car il s’agit d’un domaine nouveau et en pleine évolution, et il existe peu de normes. Il est assez rare qu’une pratique ou une technologie mise en œuvre avec succès par une entreprise produise les mêmes avantages pour une autre, simplement en achetant les mêmes technologies.

Les projets de machine learning sont confrontés à l’incertitude à chaque étape, de l’identification des cas d’utilisation à la livraison, donc restez ouvert aux nouvelles approches en vue d’une scalabitité progressive. Si vous lisez cet article, cela signifie probablement que vous cherchez des moyens de pousser votre modèle un peu plus loin. Le roadbook de cet article est composé de trois étapes principales entre lesquelles des points de repos permettent de décider de poursuivre ou non le voyage.

Etape #1 - Le Proof of Concept (POC)

Votre point de départ est de définir clairement les résultats de votre projet ML. Le résultat sera ce que votre modèle fera de la prédiction. Le résultat est le but de ce que vous faites. Au cours de cette étape, vous définissez les besoins de l’entreprise et développez le premier modèle de machine learning pour qualifier les données. Idéalement, vous évaluez également le gain commercial attendu et le retour sur investissement associé. Facile à dire, mais difficile à faire.

Note : Identifiez les bénéfices que les cas d’utilisation cibleront (croissance des revenus ou réduction des coûts) et estimez une fourchette de potentiels EBITDA.

À la fin de cette étape, vous présentez un POC fraîchement créé et validé.

Etape #2 - Prototyping

Si vos modèles sont concluants et que les entrepreneurs sont confiants dans les résultats, vous pouvez aller de l’avant pour encadrer un pilote fonctionnel en collaboration avec les équipes IT. L’objectif est maintenant de qualifier fonctionnellement et techniquement votre use case. Pour ce faire, vous commencez par :

  • Définir votre architecture cible ;
  • La connexion aux sources de données ;
  • Automatisation du traitement et de l’exécution des données ;
  • Déploiement d’un système de surveillance.

L’idée derrière cette étape est de développer rapidement une véritable application pour recueillir les réactions des utilisateurs et préparer l’industrialisation. A l’issue de cette étape, vous disposez d’un prototype opérationnel et partiellement automatisé de votre future application ML. Dès lors, vous êtes prêt à en confier la responsabilité principale à vos équipes IT. Mais avant cela, vous devez nettoyer, emballer et préparer le code pour l’industrialisation.

Etape #3 - Packaging & Preparing

Pour packager le code, vous devez répondre à deux questions principales :

Question #1 – Quels types de technologie pour déployer votre pilote fonctionnel ?

En termes d’environnement technologique, il y a différents points à aborder :

  • Langage de programmation : pour le développement d’applications et de fonctions. Par exemple, quel langage utiliser pour automatiser l’acquisition, l’exploration et la prédiction des données ?
  • L’infrastructure : cloud ou non, privée, hybride ou publique ?
  • Technologie open source : acceptée ou interdite ? Par exemple, pour les tableaux de bord, la surveillance des systèmes, etc.

Question #2 – Quel type de méthodes pour livrer le code ?

  • Versionning du code,
  • Options de déploiement des modèles,
  • Intégration continue / Livraison continue (CI/CD),
  • Stratégie de tests : unité, acceptation, intégration.

Une fois que ce sera fait, il sera temps de s’occuper de l’automatisation du traitement et de la surveillance de l’ensemble du pipeline de données, de l’extraction à l’exposition. Habituellement, cette partie est prise en charge par les équipes IT des grandes organisations.

Exemple d'une architecture basée sur Docker compose et hébergée dans le cloud

Avant de montrer un exemple d’architecture pour déployer votre modèle de machine learning, nous allons préciser ce qu’est Docker compose et ses caractéristiques.

Juste un petit rappel : Docker est un outil de conteneur d’application. Un conteneur est une sorte de machine virtuelle qui exécute une application dans un environnement dédié.

Très souvent, pour exécuter votre application ML, vous devez faire tourner de nombreuses applications différentes. C’est là que Docker compose joue un rôle important. Docker compose est un orchestrateur de conteneurs. Il nous permet de lancer une architecture faite de services à l’intérieur de conteneurs.

Nous revenons maintenant à notre étude de cas et présentons le cadre suivant :

  • Python pour le développement d’applications et de fonctions :
  • Infrastructure cloud (ex : AWS)
  • Certaines technologies open source (ex : Grafana SuperSet, Airflow)
  • Git pour le versioning de code
  • Docker pour le déploiement
  • Jenkins pour la CI/CD.

Comme nous pouvons le voir ci-dessus, l’infrastructure hébergée dans le cloud comprend des capacités de stockage et de calcul. Les données brutes et traitées avec des prédictions seront stockées sur une instance de stockage. Tous les traitements sont exécutés sur une instance de calcul. L’instance de calcul permet également d’exposer les ports et les points d’extrémité pour que d’autres applications puissent consommer les données stockées.

Derrière les « autres applications », on trouve le tableau de bord, la surveillance, Jupiter Lab pour l’informatique interactive en Python, etc.

Pour faciliter le déploiement, il est bénéfique d’utiliser les conteneurs Docker pour packager chaque application avec ses dépendances et Docker compose pour orchestrer tous les conteneurs

Il existe des tonnes d’autres architectures et environnements technologiques possibles que vous pourriez choisir pour déployer vos modèles ML. N’oubliez pas qu’il n’y a pas de solution unique. Soyez créatif. Nous espérons que vous avez apprécié cet article et que vous vous êtes inspiré pour mettre en production votre modèle de machine learning afin de le rendre utile aux clients ou aux employés en interne ! 

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest

Leave a Comment

Read our latest blog posts