DevOps pour le Machine Learning

Effectué

DevOps et MLOps

DevOps est décrit comme l’union des personnes, des processus et des produits pour permettre la livraison continue de valeur à nos utilisateurs finaux, par Donovan Brown dans Qu’est-ce que DevOps ?.

Pour comprendre comment il est utilisé lors de l’utilisation de modèles Machine Learning, examinons quelques principes DevOps essentiels plus loin.

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 des principes DevOps est de fournir rapidement une valeur à l’utilisateur final.

Si vous souhaitez fournir plus facilement de la valeur en intégrant des modèles Machine Learning dans des pipelines de transformation de données ou des applications en temps réel, vous tirerez parti 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 machine learning (MLOps).

Vue d’ensemble des trois processus MLOps

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 machine learning pour lesquelles un scientifique des données est responsable. Un scientifique des données effectuera :

    • Analyse exploratoire des données (EDA)
    • Ingénierie des caractéristiques
    • Entraînement et réglage du modèle
  • 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éer : Créez les scripts d’entraînement et d’évaluation du modèle.
    3. Vérifier : vérifiez la qualité du code et du modèle.
    4. Package : préparez-vous au déploiement en préparant la solution.
  • OPS fait référence aux opérations et inclut :

    1. Libérer : déployer le modèle en production.
    2. Configurer : normaliser les configurations d’infrastructure avec l’infrastructure en tant que code (IaC).
    3. Surveiller : effectuez le suivi des métriques et vérifiez que le modèle et l’infrastructure fonctionnent comme prévu.

Examinons quelques principes DevOps essentiels pour MLOps.

Principes DevOps

L’un des principes fondamentaux de DevOps est l’automatisation. En automatisant les tâches, nous aspirons à obtenir plus rapidement de nouveaux modèles déployés en production. 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 vous assurer 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 signifie 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 par des tests automatisés.

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

  • Refactorisation du code exploratoire dans des notebooks Jupyter en scripts Python ou R.
  • Linting pour rechercher des 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.
  • Tests unitaires 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 comme 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 entraîner le modèle, vous devez mettre 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 le empaqueter et le déployer dans un environnement de préproduction . En testant le modèle dans un environnement de pré-production, vous pouvez vérifier si tout fonctionne comme prévu.

Une fois que le déploiement du modèle dans la phase de préproduction est terminé avec succès et sans erreur, vous pouvez approuver son déploiement dans l’environnement de production .

Pour collaborer sur les scripts Python ou R pour entraîner 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 à un projet logiciel peuvent être stockés.

Avec les projets 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.

Remarque

De préférence, vous ne stockez pas les données d’apprentissage dans votre référentiel. Au lieu de cela, les données d’apprentissage 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 dépôts Git sont disponibles à l'aide d'Azure Repos dans Azure DevOps ou d'un dépôt GitHub .

En hébergeant tout le code pertinent 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éterminer qui travaille sur la 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 Machine Learning.

La planification agile signifie que vous isolez le travail dans les sprints. Les sprints sont de courtes périodes pendant lesquelles 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.

L’apprentissage d’un modèle 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 des données. Vous devrez également ajuster le modèle pour mieux s’aligner sur les nouvelles exigences métier.

Pour éviter de consacrer trop de temps à l’entraînement 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 en tant que code (IaC)

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

Pour répéter et automatiser l’infrastructure nécessaire pour entraîner et déployer votre modèle, votre équipe utilisera l’infrastructure en tant que code (IaC). Lorsque vous entraînez 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 dans le parcours de transformation DevOps