Créer un pipeline MLOps évolutif sur OCI à l'aide des services OCI natifs et du flux ML
L'architecture aide les organisations à opérationnaliser les modèles d'apprentissage automatique avec cohérence, gouvernance, vitesse, reproductibilité, déploiement automatisé, gestion du cycle de vie des modèles et observabilité.
La solution intègre OCI DevOps, Oracle Cloud Infrastructure Data Science et Oracle Cloud Infrastructure Kubernetes Engine (OKE) pour automatiser le cycle d'apprentissage automatique de bout en bout. Les charges de travail d'entraînement sont conteneurisées et exécutées en tant que tâches Oracle Cloud Infrastructure Data Science déclenchées par les pipelines DevOps, tandis que MLflow déployé sur OKE fournit des fonctions de suivi des expériences et de registre de modèles, avec des artefacts stockés dans le stockage d'objets OCI. Après l'entraînement, OCI DevOps déploie automatiquement le dernier modèle approuvé à partir du registre de modèles MLflow vers OKE, et l'accès aux services MLflow et d'inférence est fourni au moyen de l'équilibreur de charge OCI.
Avant de commencer
Avant de déployer cette solution, assurez-vous que les conditions préalables suivantes sont remplies :
- Une location Oracle Cloud Infrastructure active avec des limites de service suffisantes.
- Les compartiments configurés pour l'isolement de l'environnement, comme le développement, les tests et la production.
- Politiques du service de gestion des identités et des accès pour OCI pour :
- Service DevOps pour OCI
- Service de science des données pour Oracle Cloud Infrastructure
- OKE
- Service de stockage d'objets pour OCI
- Service de chambre forte pour OCI
- Service d'avis pour OCI
- Équilibreur de charge OCI
- Réseau en nuage virtuel (VCN) configuré avec :
- Sous-réseaux privés pour OKE et Oracle Cloud Infrastructure Data Science.
- Sous-réseau public pour l'équilibreur de charge OCI si un accès externe est requis.
- Passerelle de service OCI.
- Passerelle NAT.
- Grappe OKE provisionnée pour :
- MLflow en tant que service MLOps.
- Charges de travail d'inférence.
- MLflow déployé sur OKE, configuré avec :
- Stockage d'objets OCI en tant que magasin d'artefacts.
- Registre de modèles activé.
- Un projet OCI DevOps avec :
- Référentiels sources.
- Pipelines de compilation et de déploiement.
- Sujets et abonnements du service Avis OCI configurés.
- Connaissance des flux de travail d'apprentissage automatique, de Docker et de Kubernetes.
Architecture
Les tâches d'entraînement extraient des images de conteneur du registre de conteneurs OCI (OCIR) et accèdent aux jeux de données à partir d'Oracle Cloud Infrastructure Object Storage au moyen d'Oracle Cloud Infrastructure Service Gateway. Lors de l'exécution, les mesures et les artefacts d'entraînement sont enregistrés dans le flux ML s'exécutant sur OCI Kubernetes Engine, les artefacts étant conservés dans le service Stockage d'objets OCI pour plus de durabilité et d'évolutivité.
Une fois l'entraînement terminé, le modèle est enregistré dans le registre de modèles MLflow et promu au moyen d'étapes définies. Le service OCI DevOps déclenche automatiquement un pipeline de déploiement qui extrait la dernière version du modèle approuvé et le déploie vers OCI Kubernetes Engine en tant que service d'inférence. Le service MLflow (plan de contrôle MLOps) et les points d'extrémité d'inférence sont exposés au moyen d'Oracle Cloud Infrastructure Load Balancer, fournissant une couche d'accès unifiée et évolutive. Tout au long du pipeline, Oracle Cloud Infrastructure Notifications fournit des mises à jour en temps réel pour les étapes de création, de formation et de déploiement. La solution s'exécute dans un VCN sécurisé, à l'aide du réseau privé, d'Oracle Cloud Infrastructure Vault pour la gestion des clés secrètes, et d'Oracle Cloud Infrastructure Logging et d'Oracle Cloud Infrastructure Monitoring pour l'observabilité.
Le diagramme suivant illustre cette architecture de référence.
auto-mlops-pipeline-ocidevops-arch-oracle.zip#GUID-3A0A729D-6AD6-4CC7-9EFA-51F02B8941EA
Cette architecture comprend les composants suivants :
- Infrastructure
- Domaine de disponibilité
Les domaines de disponibilité sont des centres de données indépendants et autonomes dans une région. Les ressources physiques de chaque domaine de disponibilité sont isolées des ressources des autres domaines de disponibilité, ce qui garantit la tolérance aux pannes. Les domaines de disponibilité ne partagent pas les éléments d'infrastructure (alimentation ou refroidissement, par exemple) ni le réseau de domaines de disponibilité interne. Ainsi, une défaillance d'un domaine de disponibilité ne doit pas avoir d'incidence sur les autres domaines de disponibilité de la région.
- Compartiment
Les compartiments sont des partitions logiques interrégionales dans une location OCI. Utilisez des compartiments pour organiser, contrôler l'accès et définir des quotas d'utilisation pour vos ressources Oracle Cloud. Dans un compartiment donné, vous définissez des politiques qui contrôlent l'accès et définissent des privilèges pour les ressources.
- Passerelle Internet
Une passerelle Internet permet le trafic entre les sous-réseaux publics d'un VCN et le réseau Internet public.
- Région OCI
Une région OCI est une zone géographique localisée qui contient un ou plusieurs centres de données, des domaines de disponibilité d'hébergement. Les régions sont indépendantes les unes des autres, et de grandes distances peuvent les séparer (à travers les pays ou même les continents).
- Liste de sécurité
Pour chaque sous-réseau, vous pouvez créer des règles de sécurité qui spécifient la source, la destination et le type de trafic autorisé à entrer et à sortir du sous-réseau.
- Passerelle de service
Une passerelle de service fournit un accès à partir d'un VCN à d'autres services, tels que Oracle Cloud Infrastructure Object Storage. Le trafic entre le réseau VCN et le service Oracle circule sur la structure réseau Oracle et ne passe pas par Internet.
- Location
Une location est une partition sécurisée et isolée qu'Oracle configure dans Oracle Cloud lors de votre inscription à OCI. Vous pouvez créer, organiser et administrer vos ressources sur OCI dans votre location. Une location est synonyme d'une société ou d'une organisation. Habituellement, une société aura une seule location et reflétera sa structure organisationnelle au sein de cette location. Une seule location est généralement associée à un seul abonnement, et un seul abonnement ne comporte généralement qu'une seule location.
- Réseau en nuage virtuel et sous-réseau OCI
Un réseau en nuage virtuel (VCN) est un réseau défini par logiciel personnalisable, configuré dans une région OCI. Comme les réseaux de centre de données traditionnels, les réseaux en nuage virtuels vous permettent de contrôler votre environnement de réseau. Un VCN peut disposer de plusieurs blocs de routage inter-domaine (CIDR) sans chevauchement que vous pouvez modifier après avoir créé le VCN. Vous pouvez segmenter un VCN en sous-réseaux, dont la portée peut concerner une région ou un domaine de disponibilité. Un sous-réseau est constitué d'un intervalle contigu d'adresses qui ne chevauchent pas les autres sous-réseaux dans le réseau en nuage virtuel. Vous pouvez modifier la taille d'un sous-réseau après sa création. Un sous-réseau peut être public ou privé.
- Domaine de disponibilité
- Oracle Services Network (OSN)
- Service de journalisation pour OCIOracle Cloud Infrastructure Logging est un service hautement évolutif et entièrement géré qui permet d'accéder aux types de journaux suivants à partir de vos ressources en nuage :
- Journaux de vérification : Journaux liés aux événements produits par le service de vérification pour OCI.
- Journaux de service : Journaux publiés par des services individuels tels que le service Passerelle d'API OCI, les événements OCI, le service Fonctions OCI, l'équilibreur de charge OCI, le service Stockage d'objets OCI et les journaux de flux de réseau VCN.
- Journaux personnalisés : Journaux contenant des informations de diagnostic provenant d'applications personnalisées, d'autres fournisseurs de services infonuagiques ou d'un environnement sur place.
- Surveillance OCI
Oracle Cloud Infrastructure Monitoring surveille vos ressources en nuage, de manière active et passive, et utilise des alarmes pour vous aviser lorsque les mesures répondent aux déclencheurs spécifiés.
- Service d'avis pour OCI
Le service d'avis pour OCI diffuse des messages vers des composants répartis en utilisant un modèle de publication-abonnement à faible latence, afin d'assurer une livraison durable, sécurisée et très fiable des messages pour des applications hébergées sur OCI.
- Oracle Services Network
Oracle Services Network (OSN) est un réseau conceptuel sur OCI qui est réservé aux services Oracle. Ces services ont des adresses IP publiques accessibles sur Internet. Les hôtes en dehors d'Oracle Cloud peuvent accéder à OSN en privé à l'aide d'Oracle Cloud Infrastructure FastConnect ou d'une connexion RPV. Les hôtes de vos réseaux en nuage virtuels peuvent accéder à OSN en privé au moyen d'une passerelle de service.
- Chambre forte OCI
Oracle Cloud Infrastructure Vault vous permet de créer et de gérer de manière centralisée les clés de chiffrement qui protègent vos données et les données d'identification de clé secrète que vous utilisez pour sécuriser l'accès à vos ressources dans le nuage. La gestion des clés par défaut est les clés gérées par Oracle. Vous pouvez également utiliser des clés gérées par le client qui utilisent le service Chambre forte OCI. Le service de chambre forte pour OCI offre un jeu étoffé d'API REST pour gérer les chambres fortes et les clés.
- Service de pare-feu d'application Web pour OCI
Le service Oracle Cloud Infrastructure Web Application Firewall (WAF) est un service d'application en périphérie de réseau, régional et conforme à la norme PCI (Payment Card Industry), attaché à un point d'application, tel qu'un équilibreur de charge ou un nom de domaine d'application Web. Le service WAF protège les applications contre le trafic Internet malveillant ou indésirable. Le service WAF peut protéger tout point d'extrémité accessible sur Internet en appliquant uniformément des règles à vos applications.
- Service de journalisation pour OCI
- Services et produits
- Service de science des données pour OCI
Oracle Cloud Infrastructure Data Science est une plateforme entièrement gérée et sans serveur que les équipes de science des données peuvent utiliser pour créer, entraîner et gérer des modèles d'apprentissage automatique sur OCI. Il peut facilement s'intégrer à d'autres services OCI tels qu'Oracle Autonomous AI Lakehouse, Oracle Cloud Infrastructure Object Storage, etc. Vous pouvez créer et évaluer des modèles d'apprentissage automatique de haute qualité qui augmentent la flexibilité de l'entreprise en mettant rapidement à profit des données fiables de l'entreprise, et vous pouvez soutenir des objectifs d'affaires axés sur les données avec un déploiement plus facile des modèles d'apprentissage automatique.
La fonction Tâches du service Science des données permet aux experts en science des données de définir et d'exécuter des tâches d'apprentissage automatique pouvant être répétées sur une infrastructure entièrement gérée.
La fonction de déploiement de modèle du service Science des données permet aux experts en science des données de déployer des modèles entraînés en tant que points d'extrémité HTTP entièrement gérés qui peuvent fournir des prédictions en temps réel, fournissant des informations aux processus et aux applications, et permettant à l'entreprise de réagir aux événements pertinents lorsqu'ils se produisent.
- Service DevOps pour OCI
Oracle Cloud Infrastructure DevOps (opérations de développement) est une plate-forme complète d'intégration et de développement en continu permettant aux développeurs de simplifier et d'automatiser leur cycle de développement logiciel. Le service DevOps pour OCI permet aux développeurs et aux opérateurs de développer, de créer, de tester et de déployer des logiciels de manière collaborative. Les développeurs et les opérateurs bénéficient d'une visibilité tout au long du cycle de développement grâce à un historique des validations de source lors des phases de création, de test et de déploiement.
- Service de gestion des identités et des accès pour OCI
Le service Oracle Cloud Infrastructure Identity and Access Management (IAM) fournit un contrôle d'accès utilisateur pour OCI et Oracle Cloud Applications. L'API IAM et l'interface utilisateur vous permettent de gérer les domaines d'identité et les ressources qu'ils contiennent. Chaque domaine d'identité OCI IAM représente une solution autonome de gestion des identités et des accès ou une population d'utilisateurs différente.
- Grappe Kubernetes
Une grappe Kubernetes est un ensemble de machines qui exécutent des applications conteneurisées. Kubernetes fournit une plate-forme portable, extensible et à code source libre pour gérer les charges de travail et les services conteneurisés dans ces noeuds. Une grappe Kubernetes est formée de noeuds de travail et de noeuds de plan de contrôle.
- Équilibreur de charge
Oracle Cloud Infrastructure Load Balancer assure la répartition automatisée du trafic d'un point d'entrée unique vers plusieurs serveurs.
- Service de stockage d'objets pour OCI
Le service de stockage d'objets pour OCI donne accès à de grandes quantités de données structurées et non structurées de tous types, notamment des sauvegardes de base de données, des données analytiques et du contenu enrichi, comme des images et des vidéos. Vous pouvez stocker des données en toute sécurité directement à partir d'applications ou de la plate-forme en nuage. Vous pouvez adapter le stockage sans que la performance ou la fiabilité des services soit affectée.
Utilisez le stockage standard pour le stockage "à chaud" auquel vous devez accéder rapidement, immédiatement et fréquemment. Utilisez le stockage d'archives pour le stockage "à froid" que vous conservez pendant de longues périodes et auquel vous accédez rarement.
- Service de science des données pour OCI
- Flux d'apprentissage automatique (sur Moteur Kubernetes)
MLflow est une plate-forme à code source libre pour la gestion du cycle de vie de l'apprentissage automatique, comprenant le suivi des expériences et le registre de modèles. Il peut être déployé sur Kubernetes à des fins d'évolutivité. Dans cette architecture, MLflow s'exécute sur Kubernetes Engine, stocke les artefacts dans le stockage d'objets OCI et tient à jour le registre de modèles en tant que source de vérité pour les modèles de production. Il permet le contrôle des versions, la gouvernance et la promotion contrôlée des modèles.
- OCI Container Registry (OCIR)
OCI Container Registry est un registre Docker privé géré pour le stockage et la gestion des images de conteneur. Il s'intègre à OCI Identity and Access Management pour un contrôle d'accès sécurisé. Dans cette architecture, il stocke l'entraînement avec numéro de version et les images de conteneur de service. Ces images sont consommées par les tâches du service de science des données et les déploiements de Kubernetes Engine.
Recommandations
- VCN
- Lorsque vous créez un VCN, déterminez le nombre de blocs CIDR requis et la taille de chaque bloc en fonction du nombre de ressources que vous prévoyez d'attacher aux sous-réseaux du VCN.
- Utilisez des blocs CIDR qui se trouvent dans l'espace d'adresses IP privées standard et sélectionnez des blocs CIDR qui ne chevauchent aucun autre réseau dans Oracle Cloud Infrastructure, votre centre de données sur place ou un autre fournisseur de nuage pour lequel vous avez l'intention de configurer des connexions privées.
- Après avoir créé un VCN, vous pouvez modifier, ajouter et supprimer ses blocs CIDR.
- Lorsque vous concevez les sous-réseaux, tenez compte du flux de trafic et des exigences de sécurité. Attachez toutes les ressources d'un niveau ou d'un rôle spécifique au même sous-réseau, ce qui peut servir de limite de sécurité.
- Utiliser des sous-réseaux régionaux.
- Sécurité
- Utilisez Oracle Cloud Guard pour surveiller et maintenir la sécurité de vos ressources dans Oracle Cloud Infrastructure de manière proactive. Le service de protection d'infrastructure en nuage utilise des recettes de détecteur que vous pouvez définir pour examiner vos ressources afin de détecter les failles de sécurité et pour surveiller les opérateurs et les utilisateurs à la recherche d'activités à risque. Lorsqu'une mauvaise configuration ou une activité non sécurisée est détectée, le service de protection d'infrastructure en nuage recommande des actions correctives et aide à effectuer ces actions, en fonction des recettes de répondant que vous pouvez définir.
- Pour les ressources nécessitant une sécurité maximale, Oracle recommande d'utiliser des zones de sécurité. Une zone de sécurité est un compartiment associé à une recette de politiques de sécurité définie par Oracle et basée sur les meilleures pratiques. Par exemple, les ressources d'une zone de sécurité ne doivent pas être accessibles par Internet public et doivent être chiffrées à l'aide de clés gérées par le client. Lors de la création et de la mise à jour de ressources dans une zone de sécurité, Oracle Cloud Infrastructure valide les opérations en fonction des politiques dans la recette de zone de sécurité et refuse les opérations qui violent l'une des politiques.
- Protection d'infrastructure en nuage
- Cloner et personnaliser les recettes par défaut fournies par Oracle pour créer des recettes de détecteur et de répondant personnalisées. Ces recettes vous permettent de spécifier le type de violation de la sécurité qui génère un avertissement et les actions autorisées. Par exemple, vous pouvez détecter les seaux de stockage d'objets dont la visibilité est réglée à Public.
- Appliquez Oracle Cloud Guard au niveau de la location pour couvrir la portée la plus large et réduire le fardeau administratif lié à la maintenance de plusieurs configurations.
- Vous pouvez également utiliser la fonction Liste gérée pour appliquer certaines configurations aux détecteurs.
- Groupes de sécurité de réseau
- Vous pouvez utiliser des groupes de sécurité de réseau pour définir un jeu de règles de trafic entrant et sortant qui s'appliquent à des cartes vNIC spécifiques. Utilisez des groupes de sécurité de réseau plutôt que des listes de sécurité, car ces derniers vous permettent de séparer l'architecture du sous-réseau VCN des exigences de sécurité de votre application.
- OKE
- Déployez les charges de travail MLflow et d'inférence dans des espaces de noms distincts. Activez l'ajustement automatique et utilisez plusieurs groupes de noeuds pour l'isolement de la charge de travail. Utilisez des contrôleurs ou des équilibreurs de charge entrants pour exposer en toute sécurité les services d'inférence.
- Service de stockage d'objets pour OCI
- Utilisez le stockage d'objets OCI pour les jeux de données, les modèles entraînés et les artefacts MLflow. Activer le contrôle des versions et les politiques de cycle de vie pour optimiser le stockage et tenir à jour le lignage des modèles.
- Service de science des données pour Oracle Cloud Infrastructure
- Utiliser des tâches en conteneur pour la formation afin d'assurer la reproductibilité. Évitez les flux de travail manuels basés sur des carnets en production. Intégrez MLflow pour le suivi des expériences.
- Équilibreur de charge OCI
- Utilisez un équilibreur de charge pour exposer l'interface utilisateur/l'API de flux ML et les points d'extrémité d'inférence. Configurez des modules d'écoute et des jeux dorsaux pour différents services. Utilisez HTTPS pour un accès sécurisé et intégrez-le au DNS si nécessaire.
Points à considérer
Tenez compte des points suivants lors du déploiement de cette architecture de référence.
- Performance : Utilisez l'ajustement automatique dans OKE pour les charges de travail d'inférence et optimisez les formes de tâche du service Science des données pour l'entraînement. Assurez-vous que MLflow évolue correctement avec les artefacts soutenus par le stockage d'objets et que l'équilibreur de charge est correctement dimensionné pour gérer le trafic.
- Sécurité : Appliquez des politiques de gestion des identités et des accès pour OCI avec privilèges minimes et utilisez le service Chambre forte OCI pour la gestion des clés secrètes. Restreindre l'accès au flux ML, au stockage d'objets OCI et aux points d'extrémité d'inférence.
- Disponibilité : Déploiement dans les domaines de disponibilité et d'erreur. Utilisez les fonctions de haute disponibilité du service OKE et assurez-vous que les services MLflow sont résilients.
- Coût : Utilisez l'ajustement automatique pour optimiser l'utilisation du service de calcul. Appliquez des politiques de cycle de vie dans le stockage d'objets OCI et les groupes de noeuds OKE de taille droite. Arrêtez les ressources inutilisées.
Informations complémentaires
Pour en savoir plus sur le service Science des données, OCI DevOps, OKE et les services connexes dans cette architecture, voir les ressources suivantes :
