Créez un pipeline MLOps évolutif sur OCI à l'aide de services natifs OCI et de MLflow
L'architecture aide les entreprises à rendre opérationnels les modèles de machine learning avec cohérence, gouvernance, rapidité, 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 de vie du machine learning de bout en bout. Les workloads d'entraînement sont conteneurisés et exécutés en tant que travaux Oracle Cloud Infrastructure Data Science déclenchés par les pipelines DevOps, tandis que MLflow déployé sur OKE fournit des fonctionnalités de suivi d'expériences et de registre de modèles, avec des artefacts stockés dans OCI Object Storage. Après l'entraînement, OCI DevOps déploie automatiquement le dernier modèle approuvé du registre de modèles MLflow vers OKE, et l'accès aux services MLflow et d'inférence est fourni via OCI Load Balancer.
Avant de commencer
Avant de déployer cette solution, assurez-vous que les prérequis suivants sont remplis :
- Location Oracle Cloud Infrastructure active avec des limites de service suffisantes.
- Compartiments configurés pour l'isolation des environnements, tels que le développement, les tests et la production.
- Stratégies OCI Identity and Access Management pour :
- OCI DevOps
- Oracle Cloud Infrastructure Data Science
- OKE
- OCI Object Storage
- OCI Vault
- Notifications OCI
- Equilibreur de charge OCI
- Un réseau cloud virtuel configuré (VCN) 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.
- Un cluster OKE provisionné pour :
- MLflow en tant que service MLOps.
- Charges de travail d'inférence.
- MLflow déployé sur OKE, configuré avec :
- OCI Object Storage en tant que banque d'artefacts.
- Registre de modèles activé.
- Un projet OCI DevOps avec :
- Référentiels source.
- Créer et déployer des pipelines.
- Sujets et abonnements OCI Notifications configurés.
- Connaissance des workflows Docker, Kubernetes et de machine learning.
Architecture
Les travaux de formation extraient des images de conteneur à partir d'OCI Container Registry (OCIR) et accèdent aux ensembles de données à partir d'Oracle Cloud Infrastructure Object Storage via Oracle Cloud Infrastructure Service Gateway. Pendant l'exécution, les mesures et les artefacts d'entraînement sont consignés dans MLflow exécuté sur OCI Kubernetes Engine, les artefacts étant conservés dans OCI Object Storage à des fins 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 par étapes définies. OCI DevOps déclenche automatiquement un pipeline de déploiement qui extrait la dernière version de modèle approuvée et la déploie vers OCI Kubernetes Engine en tant que service d'inférence. Le service MLflow (plan de contrôle MLOps) et les adresses d'inférence sont exposés via 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 phases de création, de formation et de déploiement. La solution s'exécute dans un VCN sécurisé, à l'aide de réseaux privés, 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 schéma suivant illustre cette architecture de référence.
auto-mlops-pipeline-ocidevops-arch-oracle.zip#GUID-3A0A729D-6AD6-4CC7-9EFA-51F02B8941EA
Cette architecture comporte les composants suivants :
- Infrastructure
- Domaine de disponibilité
Les domaines de disponibilité sont des centres de données autonomes indépendants au sein d'une région. Les ressources physiques de chaque domaine de disponibilité sont isolées de celles des autres, ce qui garantit la tolérance aux pannes. Les domaines de disponibilité ne partagent ni infrastructure (par exemple, alimentation, système de refroidissement), ni réseau de domaine de disponibilité interne. Par conséquent, une panne sur un domaine de disponibilité ne doit pas affecter les autres domaines de disponibilité de la région.
- Compartiment
Les compartiments sont des partitions logiques inter-ré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 stratégies 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 précise qui contient des centres de données, hébergeant des domaines de disponibilité. Les régions sont indépendantes les une des autres et peuvent les séparer d'un pays ou d'un continent à l'autre, et les grandes distances peuvent les séparer.
- Liste de sécurité
Pour chaque sous-réseau, vous pouvez créer des règles de sécurité qui indiquent la source, la destination et le type de trafic autorisés à l'entrée et à la sortie du sous-réseau.
- Passerelle de service
Une passerelle de service fournit un accès à partir d'un VCN à d'autres services, tels qu'Oracle Cloud Infrastructure Object Storage. Le trafic entre le VCN et le service Oracle passe par la structure réseau Oracle et ne traverse pas Internet.
- Tenancy
Une location est une partition sécurisée et isolée qu'Oracle configure dans Oracle Cloud lorsque vous souscrivez à OCI. Vous pouvez créer, organiser et administrer vos ressources sur OCI dans votre location. Une location est synonyme d'entreprise ou d'organisation. Habituellement, une entreprise aura une seule location et reflétera sa structure organisationnelle au sein de cette location. Une location unique est généralement associée à un seul abonnement, et un seul abonnement n'a généralement qu'une seule location.
- Réseau et sous-réseau cloud virtuel OCI
Un réseau cloud virtuel est un réseau personnalisable défini par logiciel que vous configurez dans une région OCI. Comme les Réseaux de centre de données traditionnels, les Réseaux cloud virtuels vous donnent un contrôle sur l'environnement réseau. Un VCN peut comporter plusieurs blocs de routage interdomaine sans classe (CIDR) qui ne se chevauchent pas et que vous pouvez modifier une fois le VCN créé. Vous pouvez segmenter un réseau cloud virtuel en plusieurs sous-réseaux ciblant une région ou un domaine de disponibilité. Chaque sous-réseau est composé d'une plage contiguë d'adresses qui ne chevauchent pas celles des autres sous-réseaux du réseau cloud 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)
- Journalisation 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 dans le cloud :
- Journaux d'audit : journaux liés aux événements produits par OCI Audit.
- Journaux de service : journaux publiés par des services individuels tels que OCI API Gateway, OCI Events, OCI Functions, OCI Load Balancer, OCI Object Storage et les journaux de flux VCN.
- Journaux personnalisés : journaux contenant des informations de diagnostic issues d'applications personnalisées, d'autres fournisseurs cloud ou d'un environnement sur Site.
- Surveillance OCI
Oracle Cloud Infrastructure Monitoring surveille activement et passivement vos ressources cloud et utilise des alarmes pour vous avertir lorsque les mesures répondent à des déclencheurs spécifiés.
- Notifications OCI
OCI Notifications diffuse des messages vers des composants distribués à l'aide d'un modèle de publication-abonnement à faible latence, qui fournit des messages sécurisés, durables et hautement fiables pour les applications hébergées sur OCI.
- Oracle Services Network
Le réseau Oracle Services Network (OSN) est un réseau conceptuel sur OCI réservé aux services Oracle. Ces services possèdent des adresses IP publiques auxquelles vous pouvez accéder via Internet. Les hôtes en dehors d'Oracle Cloud peuvent accéder à OSN en privé à l'aide d'Oracle Cloud Infrastructure FastConnect ou de VPN Connect. Les hôtes de vos réseaux cloud virtuels peuvent accéder à OSN en privé via une passerelle de service.
- OCI Vault
Oracle Cloud Infrastructure Vault vous permet de créer et de gérer de manière centralisée les clés de cryptage qui protègent vos données et les informations d'identification de clé secrète que vous utilisez pour sécuriser l'accès à vos ressources dans le cloud. La gestion des clés par défaut est celle des clés gérées par Oracle. Vous pouvez également utiliser des clés gérées par le client qui utilisent OCI Vault. OCI Vault offre un riche ensemble d'API REST permettant de gérer les coffres et les clés.
- OCI Web Application Firewal
Oracle Cloud Infrastructure Web Application Firewall (WAF) est un service d'application en périphérie basé sur les régions et attaché à un point d'application, tel qu'un équilibreur de charge ou un nom d'application Web, compatible avec le secteur des cartes de paiement (PCI). WAF protège les applications du trafic Internet malveillant et indésirable. WAF peut protéger toutes les adresses Internet, en assurant l'exécution cohérente des règles sur l'ensemble de vos applications.
- Journalisation OCI
- Services et produits
- OCI Data Science
Oracle Cloud Infrastructure Data Science est une plate-forme 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 de machine learning de haute qualité qui augmentent la flexibilité de l'entreprise en mettant les données fiables de l'entreprise à fonctionner rapidement, et vous pouvez prendre en charge des objectifs commerciaux basés sur les données avec un déploiement plus facile des modèles de machine learning.
La fonctionnalité de travaux Data Science permet aux analystes de 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 fonctionnalité de déploiement de modèle Data Science permet aux analystes de données de déployer des modèles entraînés en tant qu'adresses HTTP entièrement gérées, capables de fournir des prédictions en temps réel, d'intégrer des informations dans les processus et les applications et de permettre à l'entreprise de réagir aux événements pertinents lorsqu'ils se produisent.
- OCI DevOps
Oracle Cloud Infrastructure DevOps (opérations de développement) est une plate-forme complète d'intégration continue/de livraison continue (CI/CD) qui permet aux développeurs de simplifier et d'automatiser leur cycle de développement logiciel. OCI DevOps permet aux développeurs et aux opérateurs de développer, de créer, de tester et de déployer des logiciels en collaboration. Les développeurs et les opérateurs bénéficient d'une visibilité sur l'ensemble du cycle de développement grâce à un historique des validations source via les phases de création, de test et de déploiement.
- OCI Identity and Access Management
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.
- Cluster Kubernetes
Un cluster Kubernetes est un ensemble de machines qui exécutent des applications en conteneur. Kubernetes fournit une plate-forme open source portable et extensible pour la gestion des charges de travail et des services en conteneur dans ces noeuds. Un cluster Kubernetes est constitué de noeuds de processus actif et de noeuds de plan de contrôle.
- Equilibreur de charge
Oracle Cloud Infrastructure Load Balancer fournit une distribution automatisée du trafic d'un point d'entrée unique à plusieurs serveurs.
- OCI Object Storage
OCI Object Storage fournit un accès à des quantités importantes de informations structurées et non, de tout type de contenu, y compris les sauvegardes de base de donnée, les données analytiques et le contenu enrichi tel que des images et des vidéos. Vous pouvez stocker des données en toute sécurité directement à partir des applications ou de la plate-forme cloud. Vous pouvez redimensionner le stockage sans dégradation des performances ni de la fiabilité de services.
Utilisez le stockage standard pour le stockage "à chaud" auquel vous devez accéder rapidement, immédiatement et fréquemment. Utilisez le stockage d'archive pour le stockage "à froid" que vous conservez pour de longues périodes et auquel il est rarement accessible.
- OCI Data Science
- MLflow (sur Kubernetes Engine)
MLflow est une plate-forme open source pour gérer le cycle de vie du machine learning, y compris le suivi des expériences et le registre des 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 OCI Object Storage et conserve le registre de modèles en tant que source d'informations fiables pour les modèles de production. Il permet la gestion 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é permettant de stocker et de gérer 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 les entraînements avec numéro de version et les images de conteneur. Ces images sont utilisées par les travaux Data Science et les déploiements 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 dans le VCN.
- Utilisez des blocs CIDR qui se trouvent dans l'espace d'adressage IP privé standard, et sélectionnez des blocs CIDR qui ne chevauchent aucun autre réseau dans Oracle Cloud Infrastructure, votre centre de données sur site ou un autre fournisseur cloud vers lequel vous prévoyez 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 de vos exigences en matière de flux de trafic et de sécurité. Associez toutes les ressources d'un niveau ou d'un rôle spécifique au même sous-réseau, qui peut servir de limite de sécurité.
- Utilisez 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. Cloud Guard utilise des recettes de détecteur que vous pouvez définir pour examiner vos ressources à la recherche de failles de sécurité et pour surveiller les opérateurs et les utilisateurs à la recherche d'activités à risque. Lorsqu'une erreur de configuration ou une activité non sécurisée est détectée, Cloud Guard recommande des actions correctives et aide à effectuer ces actions, en fonction des recettes de répondeur 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 stratégies de sécurité définie par Oracle basée sur les meilleures pratiques. Par exemple, les ressources d'une zone d'accès ne doivent pas être accessibles à partir du réseau Internet public et elles doivent être cryptées à l'aide de clés gérées par un client. Lorsque vous créez et mettez à jour des ressources dans une zone de sécurité, Oracle Cloud Infrastructure valide les opérations par rapports aux stratégies de la recette des zones de sécurité et refuse les opérations qui enfreignent les stratégies.
- Cloud Guard
- Clonez et personnalisez les recettes par défaut fournies par Oracle pour créer des recettes personnalisées de détecteur et de répondeur. Ces recettes vous permettent d'indiquer le type de violation de sécurité qui génère un avertissement et les actions autorisées à y être effectuées. Par exemple, vous pouvez détecter les buckets Object Storage dont la visibilité est définie sur Public.
- Appliquez Oracle Cloud Guard au niveau de la location pour couvrir la portée la plus large et réduire la charge administrative liée à la maintenance de plusieurs configurations.
- Vous pouvez également utiliser la fonctionnalité de liste gérée pour appliquer certaines configurations aux détecteurs.
- Groupes de sécurité réseau
- Vous pouvez utiliser des groupes de sécurité réseau pour définir un ensemble de règles entrantes et sortantes qui s'appliquent à des cartes d'interface réseau virtuelles spécifiques. Utilisez des groupes de sécurité réseau plutôt que des listes de sécurité, car les groupes de sécurité réseau vous permettent de séparer l'architecture de sous-réseau VCN des exigences de sécurité de votre application.
- OKE
- Déployez des charges de travail MLflow et d'inférence dans des espaces de noms distincts. Activer le redimensionnement automatique, et utiliser plusieurs pools de noeuds pour isoler la charge globale. Utilisez des contrôleurs entrants ou des équilibreurs de charge pour exposer en toute sécurité les services d'inférence.
- OCI Object Storage
- Utilisez OCI Object Storage pour les ensembles de données, les modèles entraînés et les artefacts de flux ML. Activer la gestion des versions et les stratégies de cycle de vie pour optimiser le stockage et maintenir le lignage des modèles.
- Oracle Cloud Infrastructure Data Science
- Utiliser des travaux en conteneur pour la formation afin d'assurer la reproductibilité. Évitez les workflows manuels basés sur des blocs-notes en production. Intégrez le MLflow pour le suivi des expériences.
- Equilibreur de charge OCI
- Utilisez un équilibreur de charge pour exposer l'interface utilisateur/API MLflow et les adresses d'inférence. Configurez des processus d'écoute et des ensembles back-end pour différents services. Utilisez HTTPS pour un accès sécurisé et intégrez-le au DNS si nécessaire.
Points à prendre en compte
Tenez compte des points suivants lors du déploiement de cette architecture de référence.
- Performances : utilisez le redimensionnement automatique dans OKE pour inférer des charges globales et optimisez les formes de travail Data Science pour l'entraînement. Assurez-vous que MLflow s'adapte correctement avec les artefacts soutenus par Object Storage et que l'équilibreur de charge est correctement dimensionné pour gérer le trafic.
- Sécurité : appliquez les stratégies OCI Identity and Access Management avec le moins de privilèges et utilisez OCI Vault pour la gestion des clés secrètes. Limitez l'accès à MLflow, OCI Object Storage et aux adresses d'inférence.
- Disponibilité : déploiement sur les domaines de disponibilité et de pannes. Utilisez les fonctionnalités de haute disponibilité OKE et assurez-vous que les services MLflow sont résilients.
- Coût : utilisez le redimensionnement automatique pour optimiser l'utilisation du calcul. Appliquez des stratégies de cycle de vie dans OCI Object Storage et des pools de noeuds OKE de taille appropriée. Arrêtez les ressources non utilisées.
