Connect with us

Intelligence artificielle

Guide des outils MLOps : Weights & Biases, Comet et plus

mm
MLOps Tools Guide: Weights & Biases, Comet and More

Les opérations de machine learning (MLOps) sont un ensemble de pratiques et de principes visant à unifier les processus de développement, de déploiement et de maintenance de modèles de machine learning dans des environnements de production. Il combine des principes de DevOps, tels que l’intégration continue, la livraison continue et la surveillance continue, avec les défis uniques de la gestion des modèles de machine learning et des jeux de données.

À mesure que l’adoption de la machine learning dans diverses industries continue de croître, la demande d’outils MLOps robustes a également augmenté. Ces outils aident à rationaliser l’ensemble du cycle de vie des projets de machine learning, de la préparation des données à la formation du modèle, au déploiement et à la surveillance. Dans ce guide complet, nous allons explorer certains des principaux outils MLOps disponibles, notamment Weights & Biases, Comet et d’autres, ainsi que leurs fonctionnalités, cas d’utilisation et exemples de code.

Qu’est-ce que MLOps ?

MLOps, ou les opérations de machine learning, est un domaine multidisciplinaire qui combine les principes de ML, de l’ingénierie logicielle et des pratiques DevOps pour rationaliser le déploiement, la surveillance et la maintenance des modèles de ML dans des environnements de production. En établissant des flux de travail standardisés, en automatisant les tâches répétitives et en mettant en œuvre des mécanismes de surveillance et de gouvernance robustes, MLOps permet aux organisations d’accélérer le développement de modèles, d’améliorer la fiabilité du déploiement et de maximiser la valeur tirée des initiatives de ML.

Construire et maintenir des pipelines ML

Lorsque vous construisez un produit ou un service basé sur la machine learning, la formation et l’évaluation d’un modèle sur quelques échantillons du monde réel ne signifie pas nécessairement la fin de vos responsabilités. Vous devez rendre ce modèle disponible aux utilisateurs finals, le surveiller et le réentraîner pour de meilleures performances si nécessaire. Un pipeline de machine learning (ML) traditionnel est une collection de différentes étapes qui incluent la collecte de données, la préparation des données, la formation et l’évaluation du modèle, le réglage des hyperparamètres (si nécessaire), le déploiement et la mise à l’échelle du modèle, la surveillance, la sécurité et la conformité, et l’intégration et la livraison continues.

Une équipe d’ingénierie de la machine learning est responsable de travailler sur les quatre premières étapes du pipeline ML, tandis que les deux dernières étapes relèvent de la responsabilité de l’équipe des opérations. Puisqu’il existe une délimitation claire entre les équipes de machine learning et d’opérations pour la plupart des organisations, une collaboration et une communication efficaces entre les deux équipes sont essentielles pour le développement, le déploiement et la maintenance réussis des systèmes de ML. Cette collaboration entre les équipes de ML et d’opérations est ce que l’on appelle MLOps et se concentre sur la rationalisation du processus de déploiement des modèles de ML en production, ainsi que sur leur maintenance et leur surveillance. Bien que MLOps soit un abréviation pour ML et opérations, ne vous y trompez pas, car il peut permettre une collaboration entre les data scientists, les ingénieurs DevOps et les équipes IT.

La responsabilité principale de MLOps est de faciliter une collaboration efficace entre les équipes de ML et d’opérations pour améliorer le rythme de développement et de déploiement des modèles avec l’aide de pratiques d’intégration et de développement continus (CI/CD) complétées par la surveillance, la validation et la gouvernance des modèles de ML. Les outils et logiciels qui facilitent l’automatisation de l’IC, le développement facile, le déploiement à grande échelle, la rationalisation des flux de travail et l’amélioration de la collaboration sont souvent appelés outils MLOps. Après avoir effectué de nombreuses recherches, j’ai compilé une liste d’outils MLOps utilisés dans de grandes entreprises technologiques comme Netflix, Uber, DoorDash, LUSH, etc. Nous allons en discuter plus en détail dans cet article.

Types d’outils MLOps

Les outils MLOps jouent un rôle essentiel à chaque étape du cycle de vie de la machine learning. Dans cette section, vous verrez une ventilation claire des rôles d’une liste d’outils MLOps à chaque étape du cycle de vie de la ML.

Outils d’orchestration de pipeline

L’orchestration de pipeline en termes de machine learning fait référence au processus de gestion et de coordination des différentes tâches et composants impliqués dans le flux de travail de bout en bout de la ML, de la préparation des données à la formation du modèle, en passant par le déploiement et la surveillance du modèle.

Les logiciels MLOps sont vraiment populaires dans cet espace car ils offrent des fonctionnalités telles que la gestion des flux de travail, la gestion des dépendances, la parallélisation, le contrôle de version et l’automatisation du déploiement, permettant aux organisations de rationaliser leurs flux de travail de ML, d’améliorer la collaboration entre les data scientists et les ingénieurs, et d’accélérer la livraison de solutions de ML.

Cadres de formation de modèles

Cette étape implique le processus de création et d’optimisation de modèles prédictifs avec des données étiquetées et non étiquetées. Lors de la formation, les modèles apprennent les modèles et les relations sous-jacents dans les données, en ajustant leurs paramètres pour minimiser la différence entre les résultats prévus et réels. Vous pouvez considérer cette étape comme la plus intensive en code de l’ensemble du pipeline de ML. C’est la raison pour laquelle les data scientists doivent être activement impliqués dans cette étape, car ils doivent essayer différents algorithmes et combinaisons de paramètres.

Les cadres de machine learning comme scikit-learn sont très populaires pour la formation de modèles de machine learning, tandis que TensorFlow et PyTorch sont populaires pour la formation de modèles d’apprentissage profond qui comprennent différents réseaux de neurones.

Plateformes de déploiement et de service de modèles

Une fois que l’équipe de développement a terminé la formation du modèle, elle doit le rendre disponible pour l’inférence dans l’environnement de production où ces modèles peuvent générer des prévisions. Cela implique généralement de déployer le modèle sur une infrastructure de service, de configurer des API pour la communication, de gérer les versions de modèles et d’assurer la mise à l’échelle, l’équilibrage de charge et la performance.

Les outils MLOps offrent des fonctionnalités telles que la conteneurisation, l’orchestration, la gestion des versions de modèles, les tests A/B et la journalisation, permettant aux organisations de déployer et de servir des modèles de ML de manière efficace et efficiente.

Outils de surveillance et d’observabilité

Le développement et le déploiement de modèles ne sont pas un processus unique. Lorsque vous développez un modèle sur une certaine distribution de données, vous vous attendez à ce que le modèle fasse des prévisions pour la même distribution de données en production. Ce n’est pas idéal, car la distribution des données est susceptible de changer dans le monde réel, ce qui entraîne une dégradation de la puissance prédictive du modèle, ce que l’on appelle la dérive des données. Il n’y a qu’un seul moyen de détecter la dérive des données, en surveillant continuellement vos modèles en production.

La surveillance et l’observabilité de la machine learning impliquent la surveillance de métriques clés telles que la précision des prévisions, la latence, le débit et l’utilisation des ressources, ainsi que la détection d’anomalies, de dérive et de changements de concept dans la distribution des données. Les outils de surveillance MLOps peuvent automatiser la collecte de données de télémétrie, permettre l’analyse et la visualisation en temps réel des métriques, et déclencher des alertes et des actions en fonction de seuils ou de conditions prédéfinis.

Plateformes de collaboration et de suivi d’expériences

Supposons que vous travailliez sur le développement d’un système de ML avec une équipe de data scientists. Si vous n’utilisez pas un mécanisme qui suit quels modèles ont été essayés, qui travaille sur quelle partie du pipeline, etc., il vous sera difficile de déterminer quels modèles ont déjà été essayés par vous ou par d’autres. Il peut y avoir le cas où deux développeurs travaillent sur le développement de la même fonctionnalité, ce qui est vraiment une perte de temps et de ressources. Et puisque vous ne suivez rien lié à votre projet, vous ne pouvez certainement pas utiliser ces connaissances pour d’autres projets, limitant ainsi la reproductibilité.

Les outils de collaboration et de suivi d’expériences MLOps permettent aux data scientists et aux ingénieurs de collaborer efficacement, de partager des connaissances et de reproduire des expériences pour le développement et l’optimisation de modèles. Ces outils offrent des fonctionnalités telles que le suivi d’expériences, la gestion des versions, le suivi de la lignée et le registre de modèles, permettant aux équipes de consigner des expériences, de suivre les modifications et de comparer les résultats à différentes itérations de modèles de ML.

Stockage et versionnage de données

Lorsque vous travaillez sur les pipelines de ML, vous apportez des modifications importantes aux données brutes lors de la phase de prétraitement. Pour une raison ou une autre, si vous n’êtes pas en mesure de former votre modèle immédiatement, vous souhaitez stocker ces données prétraitées pour éviter un travail répétitif. La même chose s’applique au code, vous voudrez toujours continuer à travailler sur le code que vous avez laissé dans votre session précédente.

Les outils de stockage et de versionnage de données MLOps offrent des fonctionnalités telles que le versionnage de données, la gestion d’artefacts, le suivi de métadonnées et la lignée de données, permettant aux équipes de suivre les modifications, de reproduire des expériences et d’assurer la cohérence et la reproductibilité à différentes itérations de modèles de ML.

Calcul et infrastructure

Lorsque vous parlez de la formation, du déploiement et de la mise à l’échelle des modèles, tout se résume au calcul et à l’infrastructure. Surtout à l’heure actuelle, où les grands modèles de langage (LLM) font leur chemin pour de nombreux projets d’IA générative basés sur l’industrie. Vous pouvez certainement former un simple classificateur sur un système avec 8 Go de RAM et sans périphérique GPU, mais il ne serait pas prudent de former un modèle de LLM sur la même infrastructure.

Les outils de calcul et d’infrastructure offrent des fonctionnalités telles que la conteneurisation, l’orchestration, la mise à l’échelle automatique et la gestion des ressources, permettant aux organisations d’utiliser efficacement les ressources cloud, l’infrastructure sur site ou les environnements hybrides pour les charges de travail de ML.

Meilleurs outils et plateformes MLOps pour 2024

Bien que Weights & Biases et Comet soient des startups MLOps émergentes, plusieurs autres outils sont disponibles pour prendre en charge les différents aspects du cycle de vie de la machine learning. Voici quelques exemples notables :

  • MLflow : MLflow est une plateforme open source qui aide à gérer l’ensemble du cycle de vie de la machine learning, y compris le suivi d’expériences, la reproductibilité, le déploiement et un registre de modèles central.
  • Kubeflow : Kubeflow est une plateforme open source conçue pour simplifier le déploiement de modèles de machine learning sur Kubernetes. Il fournit un ensemble complet d’outils pour la préparation des données, la formation de modèles, l’optimisation de modèles, le service de prévisions et la surveillance de modèles en production.
  • BentoML : BentoML est un outil Python pour le déploiement et la maintenance de modèles de machine learning en production. Il prend en charge l’inférence parallèle, le regroupement adaptatif et l’accélération matérielle, permettant un service de modèle efficace et évolutif.
  • TensorBoard : Développé par l’équipe TensorFlow, TensorBoard est un outil de visualisation open source pour les expériences de machine learning. Il permet aux utilisateurs de suivre les métriques, de visualiser les graphiques de modèles, de projeter des embeddings et de partager les résultats d’expériences.
  • Evidently : Evidently AI est une bibliothèque Python open source pour la surveillance des modèles de machine learning pendant le développement, la validation et en production. Il vérifie la qualité des données et des modèles, la dérive des données, la dérive de la cible et les performances de régression et de classification.
  • Amazon SageMaker : Amazon Web Services SageMaker est une solution MLOps complète qui couvre la formation de modèles, le suivi d’expériences, le déploiement de modèles, la surveillance et plus encore. Il fournit un environnement collaboratif pour les équipes de data science, permettant l’automatisation des flux de travail de ML et la surveillance continue des modèles en production.

Qu’est-ce que Weights & Biases ?

Weights & Biases (W&B) est une plateforme populaire de suivi et de visualisation d’expériences de machine learning qui aide les data scientists et les praticiens de la ML à gérer et à analyser leurs modèles avec facilité. Il offre une suite d’outils qui prennent en charge chaque étape du flux de travail de ML, de la configuration du projet au déploiement du modèle.

Caractéristiques clés de Weights & Biases

  1. Suivi et journalisation d’expériences : W&B permet aux utilisateurs de journaliser et de suivre des expériences, en capturant des informations essentielles telles que les hyperparamètres, l’architecture du modèle et les détails du jeu de données. En journalisant ces paramètres, les utilisateurs peuvent facilement reproduire des expériences et comparer les résultats, facilitant la collaboration entre les membres de l’équipe.
import wandb

# Initialiser W&B
wandb.init(project="my-project", entity="my-team")

# Journaliser les hyperparamètres
config = wandb.config
config.learning_rate = 0.001
config.batch_size = 32

# Journaliser les métriques pendant la formation
wandb.log({"loss": 0.5, "accuracy": 0.92})
  1. Visualisations et tableaux de bord : W&B fournit un tableau de bord interactif pour visualiser les résultats d’expériences, facilitant l’analyse des tendances, la comparaison de modèles et l’identification des domaines d’amélioration. Ces visualisations incluent des graphiques personnalisables, des matrices de confusion et des histogrammes. Le tableau de bord peut être partagé avec des collaborateurs, permettant une communication et un partage de connaissances efficaces.
# Journaliser une matrice de confusion
wandb.log({"confusion_matrix": wandb.plot.confusion_matrix(predictions, labels)})

# Journaliser un graphique personnalisé
wandb.log({"chart": wandb.plot.line_series(x=[1, 2, 3], y=[[1, 2, 3], [4, 5, 6]])})
  1. Versionnage et comparaison de modèles : Avec W&B, les utilisateurs peuvent facilement suivre et comparer différentes versions de leurs modèles. Cette fonctionnalité est particulièrement précieuse lorsqu’ils expérimentent avec différentes architectures, hyperparamètres ou techniques de prétraitement. En conservant un historique de modèles, les utilisateurs peuvent identifier les meilleures configurations et prendre des décisions éclairées.
# Enregistrer un artefact de modèle
wandb.save("model.h5")

# Journaliser plusieurs versions d'un modèle
with wandb.init(project="my-project", entity="my-team"):
# Former et journaliser la version 1 du modèle
wandb.log({"accuracy": 0.85})

with wandb.init(project="my-project", entity="my-team"):
# Former et journaliser la version 2 du modèle
wandb.log({"accuracy": 0.92})
  1. Intégration avec des frameworks ML populaires : W&B s’intègre sans effort avec des frameworks de ML populaires tels que TensorFlow, PyTorch et scikit-learn. Il propose des intégrations légères qui nécessitent des modifications de code minimales, permettant aux utilisateurs de tirer parti des fonctionnalités de W&B sans perturber leurs flux de travail existants.
import wandb
import tensorflow as tf

# Initialiser W&B et journaliser les métriques pendant la formation
wandb.init(project="my-project", entity="my-team")
wandb.tensorflow.log(tf.summary.scalar('loss', loss))

Qu’est-ce que Comet ?

Comet est une plateforme de machine learning basée sur le cloud où les développeurs peuvent suivre, comparer, analyser et optimiser des expériences. Il est conçu pour être rapide à installer et facile à utiliser, permettant aux utilisateurs de commencer à suivre leurs expériences de ML avec seulement quelques lignes de code, sans s’appuyer sur une bibliothèque spécifique.

Caractéristiques clés de Comet

  1. Visualisations personnalisées : Comet permet aux utilisateurs de créer des visualisations personnalisées pour leurs expériences et leurs données. De plus, les utilisateurs peuvent tirer parti de visualisations fournies par la communauté sur des panneaux, améliorant ainsi leur capacité à analyser et à interpréter les résultats.
  2. Surveillance en temps réel : Comet fournit des statistiques et des graphiques en temps réel sur les expériences en cours, permettant aux utilisateurs de surveiller la progression et les performances de leurs modèles pendant la formation.
  3. Comparaison d’expériences : Avec Comet, les utilisateurs peuvent facilement comparer leurs expériences, y compris le code, les métriques, les prévisions, les connaissances et plus encore. Cette fonctionnalité facilite l’identification des modèles et des configurations les plus performants.
  4. Débogage et suivi d’erreurs : Comet permet aux utilisateurs de déboguer les erreurs de modèles, les erreurs spécifiques à l’environnement et d’autres problèmes qui peuvent survenir pendant la formation et l’évaluation.
  5. Surveillance de modèles : Comet permet aux utilisateurs de surveiller leurs modèles et de recevoir des notifications lorsqu’il y a des problèmes ou des bogues, garantissant une intervention et une mitigation rapides.
  6. Collaboration : Comet prend en charge la collaboration au sein des équipes et avec les parties prenantes commerciales, permettant un partage de connaissances et une communication efficaces.
  7. Intégration de framework : Comet peut s’intégrer facilement avec des frameworks de ML populaires tels que TensorFlow, PyTorch et d’autres, le rendant un outil polyvalent pour différents projets et cas d’utilisation.

Choisir l’outil MLOps approprié

Lors de la sélection d’un outil MLOps pour votre projet, il est essentiel de prendre en compte des facteurs tels que la familiarité de votre équipe avec des frameworks spécifiques, les exigences du projet, la complexité du modèle (ou des modèles) et l’environnement de déploiement. Certains outils peuvent être mieux adaptés à des cas d’utilisation spécifiques ou s’intégrer plus en douceur avec votre infrastructure existante.

De plus, il est important d’évaluer la documentation de l’outil, le soutien de la communauté et la facilité de configuration et d’intégration. Un outil bien documenté avec une communauté active peut considérablement accélérer la courbe d’apprentissage et faciliter la résolution des problèmes.

Meilleures pratiques pour un MLOps efficace

Pour maximiser les avantages des outils MLOps et garantir le déploiement réussi et la maintenance de modèles, il est crucial de suivre les meilleures pratiques. Voici quelques considérations clés :

  1. Journalisation cohérente : Assurez-vous que tous les hyperparamètres, les métriques et les artefacts pertinents sont journalisés de manière cohérente à travers les expériences. Cela favorise la reproductibilité et facilite la comparaison entre les différentes exécutions.
  2. Collaboration et partage : Tirez parti des fonctionnalités de collaboration des outils MLOps pour partager des expériences, des visualisations et des connaissances avec les membres de l’équipe. Cela favorise l’échange de connaissances et améliore les résultats du projet.
  3. Documentation et notes : Maintenez une documentation et des notes complètes au sein de l’outil MLOps pour capturer les détails des expériences, les observations et les connaissances. Cela aide à comprendre les expériences passées et facilite les itérations futures.
  4. Intégration et déploiement continus (CI/CD) : Mettez en place des pipelines CI/CD pour vos modèles de machine learning pour garantir des tests automatisés, des déploiements et une surveillance. Cela rationalise le processus de déploiement et réduit le risque d’erreurs.

Exemples de code et cas d’utilisation

Pour mieux comprendre l’utilisation pratique des outils MLOps, explorons quelques exemples de code et des cas d’utilisation.

Suivi d’expériences avec Weights & Biases

Weights & Biases propose une intégration transparente avec des frameworks de machine learning populaires comme PyTorch et TensorFlow. Voici un exemple de la façon dont vous pouvez journaliser des métriques et les visualiser pendant la formation du modèle avec PyTorch :

import wandb
import torch
import torchvision

# Initialiser W&B
wandb.init(project="image-classification", entity="my-team")

# Charger les données et le modèle
train_loader = torch.utils.data.DataLoader(...)
model = torchvision.models.resnet18(pretrained=True)

# Configurer la boucle de formation
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
criterion = torch.nn.CrossEntropyLoss()

for epoch in range(10):
for inputs, labels in train_loader:
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()

# Journaliser les métriques
wandb.log({"loss": loss.item()})

# Enregistrer le modèle
torch.save(model.state_dict(), "model.pth")
wandb.save("model.pth")

Dans cet exemple, nous initialisons une exécution W&B, formons un modèle ResNet-18 sur une tâche de classification d’images et journalisons la perte d’entraînement à chaque étape. Nous enregistrons également le modèle formé comme un artefact en utilisant wandb.save(). W&B suit automatiquement les métriques système comme l’utilisation du GPU, et nous pouvons visualiser la progression de l’entraînement, les courbes de perte et les métriques système dans le tableau de bord W&B.

Surveillance de modèles avec Evidently

Evidently est un outil puissant pour la surveillance des modèles de machine learning en production. Voici un exemple de la façon dont vous pouvez l’utiliser pour surveiller la dérive des données et les performances du modèle :

import evidently
import pandas as pd
from evidently.model_monitoring import ModelMonitor
from evidently.model_monitoring.monitors import DataDriftMonitor, PerformanceMonitor

# Charger les données de référence
ref_data = pd.read_csv("reference_data.csv")

# Charger les données de production
prod_data = pd.read_csv("production_data.csv")

# Charger le modèle
model = load_model("model.pkl")

# Créer des moniteurs de données et de performances
data_monitor = DataDriftMonitor(ref_data)
perf_monitor = PerformanceMonitor(ref_data, model)

# Surveiller les données et les performances
model_monitor = ModelMonitor(data_monitor, perf_monitor)
model_monitor.run(prod_data)

# Générer un rapport HTML
model_monitor.report.save_html("model_monitoring_report.html")

Dans cet exemple, nous chargeons les données de référence et de production, ainsi que le modèle formé. Nous créons des instances de DataDriftMonitor et PerformanceMonitor pour surveiller la dérive des données et les performances du modèle, respectivement. Nous exécutons ensuite ces moniteurs sur les données de production en utilisant ModelMonitor et générons un rapport HTML avec les résultats.

Déploiement avec BentoML

BentoML simplifie le processus de déploiement et de maintenance de modèles de machine learning. Voici un exemple de la façon dont vous pouvez empaqueter et déployer un modèle scikit-learn en utilisant BentoML :

import bentoml
from bentoml.io import NumpyNdarray
from sklearn.linear_model import LogisticRegression

# Former le modèle
clf = LogisticRegression()
clf.fit(X_train, y_train)

# Définir le service BentoML
class LogisticRegressionService(bentoml.BentoService):
@bentoml.api(input=NumpyNdarray(), batch=True)
def predict(self, input_data):
return self.artifacts.clf.predict(input_data)

@bentoml.artifacts([LogisticRegression.artifacts])
def pack(self, artifacts):
artifacts.clf = clf

# Empaqueter et enregistrer le modèle
svc = bentoml.Service("logistic_regression", runners=[LogisticRegressionService()])
svc.pack().save()

# Déployer le modèle
svc = LogisticRegressionService.load()
svc.start()

Dans cet exemple, nous formons un modèle de régression logistique de scikit-learn et définissons un service BentoML pour servir des prévisions. Nous empaqueterons ensuite le modèle et ses artefacts en utilisant bentoml.Service et enregistrons-le sur le disque. Enfin, nous chargeons le modèle enregistré et démarrons le service BentoML, le rendant disponible pour servir des prévisions.

Conclusion

Dans le domaine en constante évolution de la machine learning, les outils MLOps jouent un rôle crucial pour rationaliser l’ensemble du cycle de vie des projets de machine learning, de l’expérimentation et du développement au déploiement et à la surveillance. Des outils comme Weights & Biases, Comet, MLflow, Kubeflow, BentoML et Evidently offrent une gamme de fonctionnalités et de capacités pour prendre en charge les différents aspects du flux de travail MLOps.

En exploitant ces outils, les équipes de data science peuvent améliorer la collaboration, la reproductibilité et l’efficacité, tout en garantissant le déploiement de modèles de machine learning fiables et performants dans les environnements de production. À mesure que l’adoption de la machine learning continue de croître à travers les industries, l’importance des outils et des pratiques MLOps ne fera que croître, stimulant l’innovation et permettant aux organisations de tirer pleinement parti des technologies d’intelligence artificielle et de machine learning.

J'ai passé les cinq dernières années à me plonger dans le monde fascinant de l'apprentissage automatique et de l'apprentissage profond. Ma passion et mon expertise m'ont conduit à contribuer à plus de 50 projets de génie logiciel divers, avec un accent particulier sur l'IA/ML. Ma curiosité permanente m'a également attiré vers le traitement automatique des langues, un domaine que je suis impatient d'explorer plus en détail.