DevOps pour le Machine Learning

Effectué

DevOps et MLOps

DevOps est décrit comme l’association de personnes, de processus et de produits visant à fournir de la valeur à nos utilisateurs finaux de façon continue, par Donovan Brown dans Qu’est-ce que DevOps ?.

Pour comprendre comment il est utilisé lors de l’utilisation de modèles de Machine Learning, nous allons explorer davantage certains principes DevOps essentiels.

DevOps est une combinaison d’outils et de pratiques qui guident les développeurs dans la création d’applications robustes et reproductibles. L’objectif de l’utilisation de principes DevOps consiste à fournir rapidement une valeur à l’utilisateur final.

Si vous souhaitez fournir plus facilement une valeur en intégrant des modèles de Machine Learning dans des pipelines de transformation de données ou des applications en temps réel, vous bénéficierez de l’implémentation de principes DevOps. En savoir plus sur DevOps vous aidera à organiser et automatiser votre travail.

La création, le déploiement et la surveillance de modèles robustes et reproductibles pour fournir de la valeur à l’utilisateur final est l’objectif des opérations de Machine Learning (MLOps).

MLOps overview of three processes

Il existe trois processus que nous voulons combiner chaque fois que nous parlons d’opérations de Machine Learning (MLOps) :

  • ML inclut toutes les charges de travail de Machine Learning pour lesquelles un scientifique des données est responsable. Un scientifique des données effectuera les tâches suivantes :

    • Analyse exploratoire des données
    • Ingénierie des caractéristiques
    • Formation et réglage des modèles
  • DEV fait référence au développement logiciel, qui inclut :

    1. Plan : définissez les exigences et les métriques de performances du modèle.
    2. Création : créez les scripts de formation et de scoring du modèle.
    3. Vérification : vérifiez la qualité du code et du modèle.
    4. Package : préparez-vous au déploiement en préproduction de la solution.
  • OPS fait référence aux opérations et inclut :

    1. Publier : déployez le modèle en production.
    2. Configurer : normalisez les configurations d’infrastructure avec Infrastructure as Code (IaC).
    3. Surveiller : effectuez le suivi des métriques et vérifiez que le modèle et l’infrastructure fonctionnent comme prévu.

Nous allons parcourir certains principes DevOps qui sont essentiels pour MLOps.

Principes DevOps

L’automatisation constitue l’un des principes fondamentaux de DevOps. En automatisant les tâches, nous aspirons à obtenir de nouveaux modèles déployés en production plus rapidement. Grâce à l’automatisation, vous allez également créer des modèles reproductibles fiables et cohérents entre les environnements.

En particulier lorsque vous souhaitez améliorer votre modèle régulièrement au fil du temps, l’automatisation vous permet d’effectuer rapidement toutes les activités nécessaires pour garantir que le modèle en production est toujours le modèle le plus performant.

Un concept clé pour atteindre l’automatisation est CI/CD, qui représente l’intégration continue et la livraison continue.

Intégration continue

L’intégration continue couvre les activités de création et de vérification. L’objectif est de créer le code et de vérifier la qualité du code et du modèle en effectuant des tests automatisés.

Avec MLOps, l’intégration continue peut inclure :

  • Refactorisation du code exploratoire dans les notebooks Jupyter dans des scripts Python ou R.
  • Linting pour vérifier les erreurs programmatiques ou stylistiques dans les scripts Python ou R. Par exemple, vérifiez si une ligne de votre script contient moins de 80 caractères.
  • Test unitaire pour vérifier les performances du contenu des scripts. Par exemple, vérifiez si le modèle génère des prédictions précises sur un jeu de données de test.

Pour effectuer des tests unitaires et de linting, vous pouvez utiliser des outils d’automatisation tels qu’Azure Pipelines dans Azure DevOps ou GitHub Actions.

Livraison continue

Après avoir vérifié la qualité du code des scripts Python ou R utilisés pour former le modèle, vous souhaiterez apporter le modèle en production. La livraison continue implique les étapes à suivre pour déployer un modèle en production, de préférence en automatisant autant que possible.

Pour déployer un modèle en production, vous devez d’abord l’empaqueter et le déployer dans un environnement de préproduction. En préproduisant le modèle dans un environnement de préproduction, vous pouvez vérifier si tout fonctionne comme prévu.

Une fois le déploiement du modèle dans la phase intermédiaire réussie et sans erreurs, vous pouvez approuver le déploiement du modèle dans l’environnement de production.

Pour collaborer sur les scripts Python ou R pour former le modèle et tout code nécessaire pour déployer le modèle dans chaque environnement, vous allez utiliser le contrôle de code source.

Contrôle de code source

Le contrôle de code source (ou contrôle de version) est obtenu le plus souvent en utilisant un référentiel Git. Un référentiel fait référence à l’emplacement où tous les fichiers pertinents d’un projet logiciel peuvent être stockés.

Avec les projets de Machine Learning, vous disposez probablement d’un référentiel pour chaque projet que vous avez. Le référentiel inclut des notebooks Jupyter, des scripts de formation, des scripts de scoring et des définitions de pipeline entre autres.

Notes

De préférence, vous ne stockez pas de données de formation dans votre référentiel. Au lieu de cela, les données de formation sont stockées dans une base de données ou un lac de données et Azure Machine Learning récupère les données directement à partir de la source de données à l’aide de magasins de données.

Les référentiels basés sur Git sont disponibles à l’aide d’Azure Repos dans Azure DevOps ou d’un référentiel GitHub.

En hébergeant tout le code approprié dans un référentiel, vous pouvez facilement collaborer sur le code et suivre les modifications apportées par un membre de l’équipe. Chaque membre peut travailler sur sa propre version du code. Vous serez en mesure de voir toutes les modifications passées et vous pouvez passer en revue les modifications avant qu’elles ne soient validées dans le référentiel principal.

Pour décider qui travaille sur quelle partie du projet, il est recommandé d’utiliser la planification agile.

Planification agile

Comme vous souhaitez qu’un modèle soit rapidement déployé en production, la planification agile est idéale pour les projets de Machine Learning.

La planification agile signifie que vous isolez le travail dans les sprints. Les sprints sont de courte durée pendant lesquels vous souhaitez atteindre une partie des objectifs du projet.

L’objectif est de planifier des sprints pour améliorer rapidement l’un des codes. Qu’il s’agisse de code utilisé pour l’exploration de données et de modèles ou pour déployer un modèle en production.

Le formation d’un modèle de Machine Learning peut être un processus sans fin. Par exemple, en tant que scientifique des données, vous devrez peut-être améliorer les performances du modèle en raison de la dérive de données. Vous devrez également ajuster le modèle pour qu’il s’aligne mieux sur les nouvelles exigences métier.

Pour éviter de consacrer trop de temps à la formation du modèle, la planification agile peut aider à étendre le projet et à aider tout le monde à s’aligner en s’accordant sur les résultats à court terme.

Pour planifier votre travail, vous pouvez utiliser un outil comme Azure Boards dans Azure DevOps ou des problèmes GitHub.

Infrastructure as code (IaC)

L’application de principes DevOps aux projets de Machine Learning signifie que vous souhaitez créer des solutions reproductibles robustes. En d’autres termes, tout ce que vous faites ou créez, vous devriez être en mesure de répéter et d’automatiser.

Pour répéter et automatiser l’infrastructure nécessaire pour former et déployer votre modèle, votre équipe utilisera Infrastructure as Code (IaC). Lorsque vous formez et déployez des modèles sur Azure, IaC signifie que vous définissez toutes les ressources Azure nécessaires dans le processus dans le code et que le code est stocké dans un référentiel.

Conseil

Familiarisez-vous avec DevOps en explorant les modules Microsoft Learn sur le parcours de transformation DevOps