Configurer un environnement MLOps sur Google Cloud

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Ce guide de référence décrit l'architecture d'un environnement d'opérations de machine learning (MLOps) sur Google Cloud. Il accompagne les ateliers pratiques de GitHub qui vous guident tout au long du processus de provisionnement et de configuration de l'environnement décrit ici.

Presque tous les secteurs adoptent le machine learning (ML) à un rythme de plus en plus rapide. Pour tirer le meilleur parti du ML, il est essentiel de créer des moyens de déployer et d'exploiter efficacement les systèmes de ML. Ce guide est destiné aux ingénieurs en machine learning (ML) et DevOps. Cela suppose que vous maîtrisiez les bases des fonctionnalités et produits Google Cloud suivants :

  • Projets Google Cloud
  • Cloud Storage
  • Cloud privé virtuel
  • Google Kubernetes Engine (GKE)
  • AI Platform
  • Dataflow
  • Cloud SQL
  • BigQuery

Dans ce guide, nous partons également du principe que vous maîtrisez TensorFlow et TensorFlow Extended (TFX), et que vous souhaitez les exploiter pour créer des pipelines de ML de production.

Présentation de l'architecture de l'environnement MLOps

L'environnement MLOps est conçu pour fournir les fonctionnalités suivantes :

  • Environnement de test : environnement puissant et interactif qui prend en charge l'expérimentation et le développement collaboratif des pipelines de ML.
  • Service d'entraînement : service évolutif qui peut exécuter des tâches d'entraînement à nœud unique et distribuées dans divers frameworks de ML, et peut utiliser l'accélération matérielle.
  • Service de prédiction : service évolutif qui permet l'inférence de modèles hautes performances, par lot et en ligne.
  • Traitement de données distribué : service évolutif qui permet de gérer des tâches de prétraitement à grande échelle sur des données par lot et par flux.
  • Pipelines de ML : service d'orchestration optimisé pour définir, exécuter et surveiller des workflows de ML.
  • Dépôt de métadonnées : dépôt qui suit et analyse les métadonnées pour le ML.
  • Magasin d'artefacts : magasin d'objets sécurisé, hautement durable et évolutif pour gérer les artefacts de ML.
  • Entrepôt de données : service d'entreposage de données intégré aux services de ML.
  • Registre de conteneurs : service sécurisé permettant de gérer les images Docker.
  • Service CI/CD : service flexible permettant de définir des workflows pour créer, tester et déployer des charges de travail dans plusieurs environnements.
  • Gestion de code source : système permettant de stocker, gérer et suivre le code de ML.

Le schéma suivant montre un exemple de l'architecture qui fournit les fonctionnalités MLOps décrites dans ce document. L'environnement comprend un ensemble de services Google Cloud intégrés.

Architecture comprenant des ressources Google Cloud qui met en œuvre un environnement MLOps.

Le tableau suivant indique les principaux services Google Cloud utilisés dans cet environnement.

Service Description
Dépôt GitHub Dans cet environnement, le dépôt GitHub est utilisé comme dépôt de gestion de code source. Cependant, vous pouvez utiliser n'importe quel système de contrôle de version basé sur Git.
Cloud Build Cloud Build est un service qui exécute des routines CI/CD sur l'infrastructure Google Cloud. Dans cet environnement, Cloud Build est utilisé pour créer, tester et déployer des pipelines de machine learning.
Notebooks Vertex AI Workbench gérés par l'utilisateur Vertex AI Workbench vous permet de créer et de gérer des notebooks gérés par l'utilisateur, qui sont des instances de machine virtuelle (VM) pré-empaquetées avec JupyterLab. Ce produit comporte une suite préinstallée de bibliothèques de deep learning Python et R. Dans cet environnement, les notebooks JupyterLab sont utilisés pour les tests et le développement de ML.
Google Kubernetes Engine GKE est une plate-forme de qualité professionnelle pour applications en conteneurs. Dans cet environnement, GKE permet d'héberger les services Kubeflow Pipelines.
TensorFlow Extended (TFX) TFX est un framework intégré permettant de mettre en œuvre des tâches et des workflows de ML évolutifs et hautes performances. Dans cet environnement, TFX est utilisé pour mettre en œuvre le pipeline d'entraînement de ML de bout en bout pour les charges de travail TensorFlow.
Kubeflow Pipelines Kubeflow Pipelines est un service Kubeflow permettant de composer et d'automatiser des systèmes de ML, et de fournir une interface utilisateur pour gérer les tests et les exécutions. Dans cet environnement, Kubeflow Pipelines est utilisé en tant qu'orchestrateur pour TFX.
Container Registry Container Registry est un espace centralisé qui permet à une équipe de stocker et gérer des images Docker. Dans cet environnement, Container Registry est utilisé pour stocker les images de conteneur qui sont produites par la routine CI/CD de Cloud Build.
AI Platform Training AI Platform Training est un service sans serveur entièrement géré qui permet d'entraîner des modèles de ML à grande échelle. Le service peut exploiter des accélérateurs cloud (GPU et TPU). Dans cet environnement, AI Platform Training est utilisé pour entraîner des modèles de ML en production pendant les phases d'entraînement continu et de test.
AI Platform Prediction AI Platform Prediction est un service d'autoscaling sans serveur qui permet d'héberger des modèles de ML en tant qu'API. Dans cet environnement, AI Platform Prediction est utilisé pour inférer des modèles entraînés pour l'inférence en ligne.
Dataflow Dataflow est un service évolutif sans serveur pour le traitement de données distribué, pour les charges de travail par lot ou par flux. Dans cet environnement, Dataflow est utilisé pour l'extraction, la validation et la transformation de données ainsi que pour l'évaluation de modèles dans le pipeline de ML.
Cloud Storage Cloud Storage est un magasin d'objets simple, fiable et hautement durable. Dans cet environnement, Cloud Storage est utilisé comme magasin d'artefacts dans lequel sont enregistrés les résultats des étapes du pipeline de ML.
Cloud SQL Cloud SQL est un service de base de données relationnelle entièrement géré. Dans cet environnement, il est utilisé en tant que backend pour le service ML Metadata et pour les métadonnées de Kubeflow Pipelines.
BigQuery BigQuery est un entrepôt de données cloud sans serveur et économique à l'échelle du pétaoctet. Dans cet environnement, BigQuery est utilisé en tant que source pour les données récurrentes d'entraînement et d'évaluation de ML.

Principales décisions en termes d'architecture

Les produits et technologies de MLOps évoluent et s'améliorent rapidement. Pour simplifier la conception et prendre en charge les modifications incrémentielles à mesure que de nouveaux produits et services sont disponibles, les décisions suivantes sont à la base de l'architecture d'environnement MLOps décrite dans ce guide :

  • Utiliser les services gérés si possible.
  • Utiliser un déploiement autonome de Kubeflow Pipelines.
  • Utiliser des images Docker pour fournir des environnements d'exécution cohérents pour les tests, l'entraînement et l'inférence.

Les sections suivantes contiennent des détails sur ces décisions de conception.

Utiliser des services Google Cloud entièrement gérés

Dans cet environnement MLOps, des services entièrement gérés servent à mettre en œuvre une capacité donnée. En fait, à l'exception des pipelines et des métadonnées de ML, toutes les fonctionnalités de cet environnement sont fournies via des services entièrement gérés.

Étant donné que les pipelines et les métadonnées de ML ne sont pas encore disponibles en tant que services entièrement gérés, ils sont mis en œuvre dans cette conception en utilisant un déploiement autonome de Kubeflow Pipelines Open Source sur GKE.

Utiliser un déploiement autonome de Kubeflow Pipelines

Les pipelines et les métadonnées de ML sont des fonctionnalités essentielles d'un environnement MLOps. Dans l'environnement décrit dans ce guide de référence, ils sont fournis par Kubeflow Pipelines. Kubeflow Pipelines est un composant essentiel de Kubeflow. Au lieu de déployer Kubeflow dans son ensemble, vous pouvez déployer uniquement des services Kubeflow Pipelines. Ce type de déploiement est appelé déploiement autonome de Kubeflow Pipelines.

Le schéma suivant illustre une vue simplifiée du déploiement autonome de Kubeflow Pipelines dans l'environnement.

Déploiement autonome de Kubeflow Pipelines dans l'exemple d'environnement.

Dans cet environnement, les services Kubeflow Pipelines et ML Metadata sont déployés sur un cluster GKE dédié. Le cluster est installé dans un réseau cloud privé virtuel (VPC) dédié. Les services Kubeflow Pipelines et ML Metadata sont configurés pour utiliser Cloud Storage et Cloud SQL afin de stocker les métadonnées de ML et de gérer les artefacts de ML. Les services utilisent le proxy Cloud SQL pour accéder à Cloud SQL. L'interface utilisateur Web et les API REST pour Kubeflow Pipelines sont exposées via une URL publique à l'aide d'un proxy et d'un agent d'inversion.

Les ateliers pratiques qui accompagnent ce guide de référence fournissent des instructions détaillées pour le provisionnement et le déploiement des services de l'environnement, y compris le déploiement autonome de Kubeflow Pipelines.

Utiliser des images Docker pour maintenir des environnements d'exécution cohérents

Dans la plupart des environnements de ML, il est essentiel de maintenir des environnements d'exécution cohérents. Par exemple, les versions des packages Python utilisées dans un environnement de test doivent être compatibles avec les versions utilisées dans les environnements d'entraînement continu ou d'inférence de modèles, ou être identiques à ces versions.

L'approche adoptée dans ce guide de référence consiste à utiliser des images Docker pour maintenir la cohérence des environnements d'exécution entre les instances de notebooks gérés par l'utilisateur Vertex AI Workbench, AI Platform Training et TFX sur Kubeflow Pipelines. Pour mettre en œuvre un workflow de ML donné, l'environnement dispose d'une image de conteneur de base qui inclut toutes les dépendances requises par le code pour l'inférence, l'entraînement et le prétraitement des données. Dans la mesure du possible, les services utilisés pour développer et rendre opérationnel le workflow sont configurés de sorte à utiliser des dérivés de l'image de base.

Par exemple, les instances de notebooks gérés par l'utilisateur Vertex AI Workbench utilisées pour les tests sont provisionnées à l'aide d'images Docker personnalisées dérivées de l'image de base. En outre, les tâches AI Platform Training utilisées pour l'entraînement continu sont exécutées à l'aide d'images de conteneurs personnalisées qui sont également dérivées de l'image de base.

Les ateliers pratiques accompagnant ce guide de référence comprennent des instructions sur la configuration et la création d'un exemple d'image de base et sur le provisionnement d'une instance de notebooks gérés par l'utilisateur.

Étape suivante