← Retourner à la liste des articles
Image blog
Auteur

Par Maxime Jumelle

CTO & Co-Founder

Publié le 11 févr. 2021

Catégorie MLOps

Machine Learning Engineer : définition, comment se former

C'est l'un des profils dont les entreprises ont le plus besoin aujourd’hui. Le Machine Learning Engineer s'est imposé comme le profil idéal pour industrialiser et mettre en production des projets Data Science. En plus de ses compétences déjà solides en Machine Learning, il utilise les outils et services du Cloud pour déployer des modèles et des API sur des infrastructures complexes.

Mais concrètement, en quoi est-il différent du Data Scientist ? Et lorsque l'on parle du Cloud, que fait-il exactement ?

Pourquoi le Machine Learning Engineer ?

Pour bien comprendre comment les choses ont évolué pour que ce profil apparaisse, revenons rapidement sur le cycle de vie d'un projet Data. Nous pouvons distinguer ces projets en deux phases.

  • La phase d'expérimentation, où l'on cherche à construire un algorithme de Machine Learning permettant de répondre à une problématique spécifique. Cette phase contient non seulement les opérations de collecte et de transformation de données, mais aussi les étapes de modélisation (comprenant l'optimisation des modèles, leur validation et leur interprétation).
  • La phase de déploiement, où l'on souhaite exposer le modèle (régulièrement sous forme d'API) sur un serveur distant dans le Cloud. Cette phase, beaucoup plus orienté développement, est plus complexe à appréhender pour des profils n'ayant pas ou peu pratiqué d'administration système et Cloud.

À lire aussi : découvrez notre formation MLOps


Et c'est là une des premières difficultés que rencontre un Data Scientist : il y a une fracture en terme d'outils et de techniques entre les deux phases. L'une demande des connaissances en Python et en statistiques, alors que l'autre nécessite des compétences en Software Engineering et DevOps.

Intéressons-nous à la phase de déploiement. Afin de fournir des prédictions, l'API exposé a besoin du modèle pour calculer ces prédictions. Mais elle doit également avoir à disposition des transformations des données qui avaient été utilisées pour entraîner ce même modèle. En effet, pour que le modèle puisse correctement calculer les prédictions, le format des données fournies en entrée doit être identique au format des données utilisé pour entraîner le modèle, sinon, nous aurons au mieux des erreurs de prédictions, ou au pire un crash de l'API !

Il est donc indispensable d'avoir exactement les même transformations entre la phase d'expérimentation et la phase de déploiement. En voyant ces deux phases, plusieurs questions surviennent.

  • Comment mettre à jour le modèle et l’insérer dans le pipeline de production ?
  • Comment stocker le modèle et comment garder une traçabilité ?
  • Comment s’assurer que les données vont subir les mêmes transformations dans les deux phases ?
  • Comment automatiser ces deux phases tout en gardant une cohérence ?

Pour avoir toutes ces fonctionnalités, il faut intégrer les bonnes pratiques de développement logiciel et gérer le cycle de vie des modèles pour déployer en continu. C'est justement ce qu'on appelle l'approche MLOps !

L'approche MLOps

Formellement, le MLOps est une adaptation des pratiques DevOps aux problématiques spécifiques des projets Data Science. L'objectif est d'utiliser les outils DevOps que les développeurs ont l'habitude de manipuler pour les applications, et les transposer dans le contexte de la Data Science.

enter image description here

Centralisation

Étant donné que les phases d'expérimentation et de déploiement sont potentiellement des codes sources différents, il est important de pouvoir centraliser les artifacts (modèle, graphiques, paramètres, etc) du projet dans un seul dépôt. L'intérêt de cette centralisation est double : pouvoir assurer une traçabilité des différentes expérimentations réalisées, et faciliter la lecture/écriture des artifacts entre les différents pipelines.

Cette réalisation permet un fonctionnement asynchrone entre les deux pipelines : nous pouvons tout à fait exécuter plusieurs fois le pipeline ML sans mettre en production les modèles générés tant que ces derniers n'obtiennent pas une certaine performance minimale. Aujourd'hui, un des outils les plus populaires pour centraliser les modèles de Machine Learning est MLflow.

Cet outil dispose de plusieurs composantes pertinentes pour centraliser les artifacts et les modèles.

  • MLflow Tracking est l'API et l'interface utilisateur pour logger les hyper-paramètres, le versioning de code et les artifacts.
  • MLflow Projects est un format standard pour package un code source et le ré-utiliser dans plusieurs projets.
  • MLflow Models est un format de packaging pour les modèles de Machine Learning.
  • MLflow Registry est le registre de modèle qui permet de s'assurer que les modèles respectent certaines contraintes.

Cette gestion des versions permet de garantir une cohérence entre les versions associées aux données (date d'extraction), du modèle et de l'API.

Software Engineering

Hérité des principes DevOps, le Software Engineering permet de construire un projet Data sous forme applicative, non plus avec des Jupyter Notebooks, mais avec des fichiers et une architecture de code modulaire. Plusieurs outils et frameworks existent pour gérer un projet Data Science en tant que Software Engineer, dont Kedro qui est de plus en plus utilisé. Créer un projet sous forme d'application requiert l'utilisation des bonnes pratiques.

  • Construire un projet code source, pouvant être répliqué dans n'importe quel environnement.
  • Respecter des normes (PEP 8) en appliquant du linting et du reformating.
  • Utiliser un outil de versioning (Git) et mettre à jour régulièrement ses fichiers.
  • Rédiger une documentation de ses pipelines et de son code pour améliorer la productivité en collaboration.
  • Réaliser des tests unitaires, d’intégration et de modèles.

Toutes ces bonnes pratiques visent toujours à s'assurer de la bonne exécution des phases dans des environnements distribués. Et c'est encore plus le cas lorsque cet environnement est automatisé.

Déploiement

Une des autres facettes très importantes pour le Machine Learning Engineer et qui est l'aboutissement du MLOps est le déploiement de modèles. Déployer un modèle de Machine Learning, c’est le rendre accessible aux utilisateurs autorisés depuis un serveur distant. Mais déployer un modèle de Machine Learning est difficile, et ce pour plusieurs raisons.

  • Cela nécessite des compétences très orientées système/DevOps, qui ne sont pas toujours facile à acquérir.
  • Le modèle doit est constamment « mis-à-jour » : un des phénomènes observés en production est le model drifting, où le modèle perd en pouvoir prédictif au fur et à mesure. Cela est en partie du à une dépendance temporelle présente dans les données, qui fait que les prédiction sont de moins en moins précises avec le temps.
  • Il faut garantir une haute disponibilité en fournissant des réponses avec de faibles latences.
  • Le modèle doit être scalable, c'est-à-dire pouvoir s'ajuster lorsque les charges deviennent importantes.
  • Du monitoring doit être mis en place pour vérifier la bonne exécution de l'API et du modèle tout au long de son fonctionnement.

À lire aussi : découvrez notre formation MLOps


Le Machine Learning Engineer doit donc s'armer d'outils adaptés qui améliorent l’efficacité opérationnelle. Pour cela, il va devoir mettre en place des méthodes d'automatisation et déterminer des plateformes cibles adapter pour héberger l'API. L'automatisation, déjà très présente pour l'approche DevOps,

Pour le déploiement, le Machine Learning Engineer dispose de plusieurs possibilités.

  • Les instances de machines virtuelles (ou Bare Metal), adaptées pour un déploiement pour tester le fonctionnement de l'API. Bien que plutôt facile à mettre en place, elles présentent beaucoup de défauts qui ne permettent pas une mise en production efficace.
  • Le serverless est une méthode de déploiement de plus en plus privilégiée, car elle est rapide à mettre en place et peut s'automatiser facilement.
  • Enfin, les plateformes d'orchestration dont Kubernetes est sûrement le plus populaire, sont les solutions les plus efficaces lorsque les charges deviennent très élevées. Il y a, en théorie, aucune limite en termes de ressources disponibles, permettant par d'exemple d'obtenir des clusters avec des centaines de processeurs et des milliers de Go de mémoire vive !

Pour résumer, le Machine Learning Engineer est aussi bien un Data Scientist qu'un DevOps sensible aux contraintes des projets Data.

Pour avoir plus détails, nous avions également organisé un Workshop sur le métier de Machine Learning Engineer.

Concrètement, par où commencer ?

On peut se sentir rapidement perdu lorsque l'on souhaite se former au ML Engineering. Et pour cause, difficile de s'y retrouver avec tous les outils disponibles !

Le plus important, c'est d'abord de consolider les bases en développement. Il faut maîtriser le langage Python, et pas uniquement l'utiliser. Pour cela, une bonne connaissance des concepts avancés tels que les opérateurs lambda, la gestion des exceptions ou les décorateurs de fonctions est indispensable.

Ensuite, le Software Engineering est une étape incontournable : il faut adapter les bonnes pratiques de développement dans les projets Data. Cela passe par l'élaboration d'une architecture de code en y intégrant les pratiques de collaboration, de tests et de documentation. L'utilisation d'un éditeur de code (IDE) type Visual Studio ou PyCharm te permettra d'être plus efficace, alors adopte-en un si ce n'est déjà pas le cas. 😉

Et enfin, il y a toute la chaîne MLOps. Du déclenchement automatisé avec des pipelines CI/CD en passant par du déploiement sur des plateformes d'orchestration, en ne négligeant pas la surveillance continue et la journalisation, c'est tout un nouveau monde à découvrir.

Si tu as aimé cet article, alors tu vas sûrement adorer la Blent Family où tu trouveras plein de bons conseils pour te former sur des sujets aussi technique que le MLOps !

Articles similaires

Blog

18 janv. 2022

MLOps

MLflow est une plateforme open source qui permet de **gérer le cycle de vie des modèles de Machine Learning. En particulier, grâce à MLflow, les modèles qui ont été entraînés à une date spécifique ainsi que les hyper-paramètres associés pourront être stockés, monitorés et réutilisés de manière efficace.

Maxime Jumelle

Maxime Jumelle

CTO & Co-Founder

Lire l'article

Blog

6 oct. 2021

MLOps

Tu as probablement déjà entendu parler de Kubernetes : c'est un outil extrêmement populaire dans le Cloud et qui est devenu, en quelques années, la référence en terme de déploiement d'applications dans le Cloud. Mais pourquoi (et surtout comment) Kubernetes est devenu la solution incontournable ? Et surtout, pour un Data Scientist, quel est le rapport avec Kubernetes et le Machine Learning ?

Maxime Jumelle

Maxime Jumelle

CTO & Co-Founder

Lire l'article

Blog

9 déc. 2020

MLOps

L'AutoML est une pratique courante dans les projets Data Scientist qui consiste à automatiser le création des modèles de Machine Learning. Cela va permettre de gagner du temps puisque cette pratique va tester à la fois plusieurs méthodes de transformations des données, mais aussi plusieurs modèles de Machine Learning pour ensuite les comparer et conserver le plus performant.

Maxime Jumelle

Maxime Jumelle

CTO & Co-Founder

Lire l'article