Applications d'apprentissage automatique

Les applications d'apprentissage automatique sont une représentation autonome des cas d'utilisation d'apprentissage automatique dans Data Science.

Les applications ML sont une nouvelle fonctionnalité de Data Science qui fournit une plate-forme MLOps robuste pour la livraison d'IA/ML. Il standardise le packaging et le déploiement des fonctionnalités d'IA/ML, ce qui vous permet de créer, de déployer et d'utiliser le machine learning en tant que service. Avec les applications de machine learning, vous pouvez tirer parti de Data Science pour implémenter des cas d'utilisation d'IA/ML et les provisionner en production pour vos applications ou vos clients. En raccourcissant le cycle de développement de plusieurs mois à plusieurs semaines, les applications ML accélèrent le délai de mise sur le marché tout en réduisant la complexité opérationnelle et le coût total de possession. Elle fournit une plate-forme de bout en bout pour le déploiement, la validation et la promotion des solutions de machine learning à chaque étape, du développement et de l'assurance qualité à la préproduction et à la production.

Les applications de machine learning prennent également en charge une architecture découplée en fournissant une couche d'intégration unifiée entre les fonctionnalités d'IA/ML et les applications client. Cela permet le développement, les tests et l'évolution indépendants des solutions de machine learning sans nécessiter de modifications de l'application client, ce qui permet une intégration transparente et une innovation plus rapide.

Les applications ML sont idéales pour les fournisseurs SaaS qui ont besoin de provisionner et de maintenir des fonctionnalités ML sur une flotte de clients tout en garantissant un isolement strict des données et des charges de travail. Elle permet aux fournisseurs SaaS de fournir les mêmes fonctionnalités basées sur le machine learning à de nombreux locataires sans compromettre la sécurité ou l'efficacité opérationnelle. Qu'il s'agisse d'intégrer des informations basées sur l'IA, d'automatiser la prise de décision ou d'activer l'analyse prédictive, les applications de machine learning garantissent que chaque client SaaS bénéficie d'un déploiement de machine learning entièrement géré et isolé.

Au-delà de SaaS, les applications d'apprentissage automatique sont également idéales pour les déploiements multirégionaux et les entreprises qui cherchent à créer un marché d'apprentissage automatique où les fournisseurs peuvent s'inscrire, partager et monétiser des solutions d'IA/apprentissage automatique. Les clients peuvent instancier et intégrer ces fonctionnalités d'apprentissage automatique en toute transparence dans leurs workflows avec un minimum d'effort.

Quelque chose

Par exemple, une application d'apprentissage automatique pour un cas d'utilisation de prédiction de l'attrition des clients peut se composer des éléments suivants :

  • un pipeline avec des étapes d'assimilation, de transformation et d'entraînement qui préparent les données d'entraînement, entraînent un nouveau modèle et le déploient.
  • Bucket utilisé pour stocker les données ingérées et transformées.
  • Déclencheur qui fait office de point d'entrée et garantit l'exécution sécurisée des exécutions de pipeline dans le contexte d'un client SaaS spécifique.
  • Programmation qui déclenche des exécutions périodiques du pipeline d'entraînement afin de maintenir le modèle à jour.
  • Déploiement de modèle qui répond aux demandes de prédiction provenant des clients.

Les applications ML vous permettent de représenter l'ensemble de l'implémentation sous forme de code, et de la stocker et de la gérer sous forme de version dans un référentiel de code source. La solution est packagée sous la forme d'un package d'application ML qui contient principalement des métadonnées. Les métadonnées incluent les informations de gestion des versions, le contrat de provisionnement et les déclarations de dépendances d'environnement, ce qui rend le package indépendant de la région et de l'environnement. Une fois créé, le package peut être déployé dans n'importe quel environnement cible sans modification. Cela permet de standardiser le packaging et la livraison de vos fonctionnalités de machine learning.

Lorsqu'une application d'apprentissage automatique est déployée, elle est représentée par des ressources d'application d'apprentissage automatique et d'implémentation d'application d'apprentissage automatique. A ce stade, il peut être provisionné pour utilisation. En général, une application client (telle qu'une plate-forme SaaS, un système d'entreprise ou un outil d'automatisation de workflow) demande au service d'application ML de provisionner une nouvelle instance de l'application ML pour un client ou une unité opérationnelle spécifique. Ce n'est qu'à ce stade que la solution est entièrement instanciée et prête à l'emploi.

Pour résumer, les applications de machine learning fournissent un moyen standardisé de créer, de packager et de fournir des fonctionnalités de machine learning à grande échelle, ce qui réduit la complexité et accélère la mise en production dans divers scénarios, notamment :

  • SaaS Adoption de l'IA, où les plates-formes SaaS doivent intégrer des fonctionnalités de machine learning pour des milliers de clients tout en garantissant la sécurité, l'évolutivité et l'efficacité opérationnelle.
  • Déploiements multi-région, où les fonctionnalités d'apprentissage automatique doivent être provisionnées de manière cohérente à différents endroits avec des frais généraux opérationnels minimes.
  • Adoption de l'IA d'entreprise, où les entreprises doivent déployer des instances de machine learning isolées entre les équipes, les unités opérationnelles ou les filiales tout en maintenant la gouvernance et la conformité.
  • Les places de marché du ML, où les fournisseurs peuvent packager et distribuer des solutions de ML, permettant aux clients de les découvrir, de les déployer et de les utiliser facilement en tant que service.

Au-delà de SaaS, les applications ML peuvent être utilisées dans divers autres scénarios. Ils sont bénéfiques partout où il est nécessaire de provisionner une solution d'apprentissage automatique à plusieurs reprises, par exemple sur différents sites géographiques. En outre, les applications ML peuvent être utilisées pour créer un marché où les fournisseurs peuvent enregistrer leurs applications et les offrir en tant que service aux clients, qui peuvent ensuite les instancier et les utiliser.

La fonctionnalité d'applications ML elle-même est gratuite. Vous êtes uniquement facturé pour l'infrastructure sous-jacente (calcul, stockage et réseau) utilisée, sans majoration supplémentaire.

Ressources des applications d'apprentissage automatique

Ressources OCI fournies par les applications d'apprentissage automatique :
Application d'apprentissage automatique
Ressource qui représente un cas d'utilisation d'apprentissage automatique et sert d'égide pour les implémentations et les instances d'application d'apprentissage automatique. Il définit et représente une solution de machine learning, permettant aux fournisseurs de fournir des fonctionnalités de machine learning aux consommateurs.
Implémentation d'application d'apprentissage automatique
Ressource qui représente une solution spécifique pour le cas d'utilisation d'apprentissage automatique défini par une application d'apprentissage automatique. Il contient tous les détails d'implémentation qui permettent l'instanciation de la solution pour les consommateurs. Une application d'apprentissage automatique ne peut avoir qu'une seule implémentation.
Version d'implémentation d'application d'apprentissage automatique
Ressource en lecture seule qui représente un instantané d'une implémentation d'application d'apprentissage automatique. La version est créée automatiquement lorsqu'une implémentation d'application d'apprentissage automatique atteint un nouvel état cohérent.
Instance d'application d'apprentissage automatique
Ressource qui représente une instance isolée unique d'une application d'apprentissage automatique permettant aux consommateurs de configurer et d'utiliser la fonctionnalité d'apprentissage automatique fournie. Les instances d'application de machine learning jouent un rôle crucial dans la définition des limites pour l'isolement des données, des charges de travail et des modèles. Ce niveau d'isolement est essentiel pour les entreprises SaaS car cela signifie qu'elles peuvent assurer la séparation et la sécurité des ressources de leurs clients.
Vue Instance d'application d'apprentissage automatique
Ressource en lecture seule, qui est une copie gérée automatiquement de l'instance d'application d'apprentissage automatique étendue avec des détails supplémentaires tels que des références aux composants d'instance. Il permet aux fournisseurs de suivre la consommation de leurs applications d'apprentissage automatique. Cela signifie que les fournisseurs peuvent observer les détails d'implémentation des instances, les surveiller et les dépanner. Lorsque les consommateurs et les fournisseurs travaillent dans des locations différentes, les vues d'instance d'application d'apprentissage automatique sont le seul moyen pour les fournisseurs de collecter des informations sur la consommation de leurs applications.
Remarque

Les ressources d'application d'apprentissage automatique sont en lecture seule dans la console OCI. Pour la gestion et la création des ressources, vous pouvez utiliser l'interface de ligne de commande mlapp qui fait partie de l'exemple de projet, de l'interface de ligne de commande oci ou des API d'application d'apprentissage automatique.

Concepts relatifs aux applications d'apprentissage automatique

Les applications d'apprentissage automatique présentent deux concepts clés :
  • Package d'applications d'apprentissage automatique
  • Déclencheur d'application d'apprentissage automatique
Bien qu'il ne s'agisse pas de ressources OCI, elles sont essentielles à la compréhension et à l'exploitation des applications ML.
Package d'applications d'apprentissage automatique
Permet un packaging standardisé des fonctionnalités d'apprentissage automatique indépendantes de l'environnement et des régions. Il contient des détails d'implémentation, tels que les composants Terraform, les descripteurs et le schéma de configuration. Il s'agit d'une solution portable qui peut être utilisée dans n'importe quelle location, région ou environnement. Les dépendances d'infrastructure de l'implémentation contenue (par exemple, les OCID de VCN et de journal) propres à une région ou à un environnement sont fournies en tant qu'arguments de package lors du processus de téléchargement.
Déclencheur d'application d'apprentissage automatique
Les déclencheurs permettent aux fournisseurs d'applications de machine learning d'indiquer le mécanisme de déclenchement de leurs travaux ou pipelines de machine learning, facilitant ainsi l'implémentation d'une solution MLOps entièrement automatisée. Les déclencheurs sont les points d'entrée pour les exécutions de vos workflows de machine learning. Ils sont définis par des fichiers YAML dans le package ML Applications en tant que composants d'instance. Les déclencheurs sont créés automatiquement lorsqu'une instance d'application d'apprentissage automatique est créée, mais uniquement lorsque tous les autres composants d'instance sont créés. Ainsi, lorsqu'un déclencheur est créé, il peut faire référence à d'autres composants d'instance créés auparavant.

Rôles d'application ML

Lorsque vous utilisez des applications d'apprentissage automatique, il est important de faire la distinction entre deux rôles clés :
  • Fournisseurs
  • Clients
Fournisseur
Les fournisseurs sont des clients OCI qui créent, déploient et exploitent des fonctionnalités de machine learning. Ils packagent et déploient des fonctionnalités d'apprentissage automatique en tant qu'applications et implémentations d'apprentissage automatique. Ils utilisent les applications ML pour fournir des services de prédiction en tant que service aux consommateurs. Ils s'assurent que les services de prédiction fournis respectent leurs accords de niveau de service (SLA) convenus.
Destinataire
Les consommateurs sont des clients OCI qui créent des instances d'application ML et utilisent les services de prédiction offerts par ces instances. En général, les consommateurs sont des applications SaaS telles que Fusion. Ils utilisent les applications ML pour intégrer les fonctionnalités ML et les fournir à leurs clients.

Gestion du cycle de vie

Les applications d'apprentissage automatique couvrent l'ensemble du cycle de vie des solutions d'apprentissage automatique.

Cela commence par les premières étapes de conception, où les équipes peuvent s'entendre sur des contrats et commencer à travailler indépendamment. Elle inclut le déploiement de production, la gestion de flotte et le déploiement de nouvelles versions.

Construction

Représentation sous forme de code
L'ensemble de la solution, y compris tous ses composants et workflows, est représenté sous forme de code. Cela favorise les meilleures pratiques de développement de logiciels telles que la cohérence et la reproductibilité.
Automatisation
Avec les applications de machine learning, l'automatisation est simple. Vous pouvez vous concentrer sur l'automatisation des workflows au sein de la solution à l'aide du planificateur Data Science, des pipelines ML et des déclencheurs d'application ML. L'automatisation des flux de provisionnement et de configuration est gérée par le service d'application ML.
Emballage standardisé
Les applications d'apprentissage automatique fournissent des packages indépendants de l'environnement et des régions, y compris des métadonnées pour la gestion des versions, les dépendances et les configurations de provisionnement.

Déploiement

Déploiement géré par le service
Vous pouvez déployer et gérer vos solutions de machine learning en tant que ressources d'application de machine learning. Lorsque vous créez votre ressource d'implémentation d'application ML, vous pouvez déployer votre implémentation packagée en tant que package d'application ML. Le service applicatif d'apprentissage automatique orchestre le déploiement pour vous, en validant votre implémentation et en créant les ressources OCI correspondantes.
Environnements
Les applications d'apprentissage automatique permettent aux fournisseurs de se déployer dans divers environnements de cycle de vie tels que le développement, l'assurance qualité et la préproduction, ce qui permet un déploiement contrôlé des applications d'apprentissage automatique en production. En production, certaines entreprises offrent aux clients plusieurs environnements, tels que la "préparation" et la "production". Avec les applications de machine learning, les nouvelles versions peuvent être déployées, évaluées et testées en "préparation" avant d'être promues en "production". Cela donne aux clients un grand contrôle sur l'adoption des nouvelles versions, y compris les fonctionnalités de machine learning.
Déploiement inter-région
Déployez des solutions dans différentes régions, y compris des régions non commerciales telles que les régions gouvernementales.

Utiliser

Livraison en tant que service
Les fournisseurs fournissent des services de prédiction "en tant que service", gérant l'ensemble de la maintenance et des opérations. Les clients utilisent les services de prédiction, sans voir les détails d'implémentation.
Surveillance et dépannage
Surveillance, dépannage et analyse de cause racine simplifiés grâce à la gestion détaillée des versions, à la traçabilité et aux informations contextuelles.
Evolvabilité
Aidez à fournir des itérations, des mises à niveau et des correctifs rapides sans temps d'arrêt, garantissant une amélioration continue et une adaptation aux besoins des clients.

Fonctions principales

Les principales fonctionnalités des applications d'apprentissage automatique sont les suivantes :

Livraison en tant que service
ML Applications permet aux équipes de créer et de fournir des services de prédiction en tant que SaaS (logiciel en tant que service). Cela signifie que les fournisseurs peuvent gérer et faire évoluer des solutions sans affecter les clients. Les applications de machine learning servent de méta-service, facilitant la création de nouveaux services de prédiction pouvant être utilisés et mis à l'échelle en tant qu'offres SaaS.
natif d'OCI
L'intégration transparente aux ressources OCI garantit la cohérence et simplifie le déploiement entre les environnements et les régions.
Emballage standard
Les packages indépendants de l'environnement et de la région standardisent l'implémentation, ce qui facilite le déploiement des applications de machine learning à l'échelle mondiale.
Isolation des locataires
Assure une isolation complète des données et des charges de travail pour chaque client, améliorant ainsi la sécurité et la conformité.
Gestion des versions
Prend en charge l'évolution des implémentations avec des processus de version indépendants, permettant des mises à jour et des améliorations rapides.
Mises à niveau sans temps d'arrêt
Les mises à niveau automatisées des instances garantissent un service continu sans interruption.
Provisionnement inter-locations
Prend en charge l'observabilité inter-locations et la consommation du marché, ce qui étend les possibilités de déploiement.

Les applications d'apprentissage automatique présentent les ressources suivantes :

  • Application d'apprentissage automatique
  • Implémentation d'application d'apprentissage automatique
  • Version d'implémentation d'application d'apprentissage automatique
  • Instance d'application d'apprentissage automatique
  • Vue Instance d'application d'apprentissage automatique

Valeur ajoutée

Les applications ML servent de plateforme en tant que service (PaaS), fournissant aux entreprises la structure fondamentale et les services nécessaires pour créer, déployer et gérer des fonctionnalités ML à grande échelle.

Cela permet aux équipes de disposer d'une plate-forme prédéfinie pour la modélisation et le déploiement de cas d'utilisation du machine learning, éliminant ainsi la nécessité de développer des structures et des outils personnalisés. Ainsi, les équipes peuvent consacrer leurs efforts à l'élaboration de solutions d'IA innovantes, réduisant ainsi le temps de mise sur le marché et le coût total de possession des fonctionnalités de machine learning.

Les applications ML offrent aux entreprises des API et des abstractions pour superviser l'ensemble du cycle de vie des cas d'utilisation du ML. Les implémentations sont représentées sous forme de code, packagées dans des packages d'applications ML et déployées vers des ressources d'implémentation d'applications ML. Les versions historiques des implémentations sont suivies en tant que ressources de version d'implémentation d'application ML. ML Applications est la colle qui établit la traçabilité de tous les composants utilisés par les implémentations, la gestion des versions et les informations d'environnement, ainsi que les données de consommation des clients. Grâce aux applications de machine learning, les entreprises obtiennent des informations précises sur les implémentations de machine learning déployées dans les environnements et les régions, sur les clients qui utilisent des applications spécifiques et sur l'état général de la flotte de machine learning. De plus, ML Applications offre des fonctionnalités de récupération d'instance, permettant une récupération facile des erreurs d'infrastructure et de configuration.

Avec des limites bien définies, ML Applications aide à établir des contrats de provisionnement et de prédiction, permettant aux équipes de diviser et de conquérir les tâches plus efficacement. Par exemple, les équipes travaillant sur le code d'application client (par exemple, une plate-forme SaaS ou un système d'entreprise) peuvent collaborer de manière transparente avec les équipes de machine learning en s'accordant sur des contrats de prédiction, ce qui permet aux deux équipes de travailler indépendamment. De même, les équipes de machine learning peuvent définir des contrats de provisionnement, ce qui permet aux équipes de gérer les tâches de provisionnement et de configuration de manière autonome. Ce découplage élimine les dépendances et accélère les délais de livraison.

Les applications de machine learning rationalisent l'évolution des solutions de machine learning en automatisant le processus de mise à niveau des versions. Les mises à jour sont entièrement orchestrées par les applications de machine learning, ce qui réduit les erreurs et permet la mise à l'échelle des solutions vers de nombreuses instances (clients). Les responsables de l'implémentation peuvent promouvoir et vérifier les modifications dans une chaîne d'environnements de cycle de vie (par exemple, développement, assurance qualité, pré-prod, production), en gardant le contrôle sur la publication des modifications pour les clients.

L'isolement des locataires se distingue comme un avantage clé des applications ML, garantissant une séparation complète des données et des charges de travail pour chaque client, améliorant ainsi la sécurité et la conformité. Contrairement aux méthodes traditionnelles reposant sur l'isolement basé sur les processus, ML Applications permet aux clients d'implémenter des restrictions basées sur des privilèges, protégeant ainsi l'isolement des locataires même en cas de défauts.

Conçues en tenant compte de l'évolutivité, les applications de machine learning signifient que les grandes entreprises, en particulier les entreprises SaaS, peuvent adopter une plate-forme standardisée pour le développement du machine learning, garantissant la cohérence entre de nombreuses équipes. Des centaines de solutions de machine learning peuvent être développées sans que toute l'initiative de machine learning ne tombe dans le chaos. Grâce à l'automatisation couvrant la mise en œuvre des pipelines de machine learning, le déploiement de modèles et le provisionnement, les entreprises SaaS peuvent industrialiser le développement de fonctionnalités de machine learning pour SaaS et gérer efficacement des millions de pipelines et de modèles fonctionnant de manière autonome en production.

Délai de commercialisation

Implémentation standardisée
Élimine le besoin de structures personnalisées, ce qui permet aux équipes de se concentrer sur les cas d'utilisation métier.
Automatisation
Améliore la vitesse et réduit les interventions manuelles, cruciales pour la mise à l'échelle des solutions SaaS.
Séparation des préoccupations
Des limites, des contrats et des API clairs permettent à différentes équipes de travailler indépendamment, rationalisant le développement et le déploiement.

Coûts de développement et d'exploitation

Réduction des coûts de développement
L'utilisation de services prédéfinis réduit le besoin de travail de base.
Evolvabilité
Des itérations rapides et des mises à niveau indépendantes sans temps d'arrêt garantissent une amélioration continue.
Traçabilité
Des informations détaillées sur les environnements, les composants et les révisions de code aident à comprendre et à gérer les solutions de machine learning.
Provisionnement et observabilité automatisés
Simplifie la gestion et la surveillance des solutions de machine learning, réduisant ainsi les frais opérationnels.
Gestion du parc
Gérer le cycle de vie complet des instances d'application d'apprentissage automatique à grande échelle. Les applications de machine learning offrent une visibilité sur toutes les instances provisionnées, prennent en charge les mises à jour et les mises à niveau à l'échelle du parc, et permettent le provisionnement et le déprovisionnement selon les besoins. En outre, les solutions de machine learning créées avec les applications de machine learning peuvent être surveillées à l'aide d'OCI Monitoring pour suivre les performances et l'état.

Sécurité et fiabilité

Isolation des données et des charges de travail
S'assure que les données et les charges de travail de chaque client sont isolées en toute sécurité.
Fiabilité
Les mises à jour automatisées et la surveillance robuste éliminent les erreurs et assurent la stabilité des opérations.
Aucun problème de voisin bruyant
Garantit que les charges de travail n'interfèrent pas les unes avec les autres, en maintenant les performances et la stabilité.

Workflow de création et de déploiement

Le développement des applications ML ressemble au développement de logiciels standard.

Les ingénieurs et les data scientists gèrent leur implémentation dans un référentiel de code source, à l'aide de la documentation et des référentiels ML Applications pour obtenir des conseils. Ils commencent généralement par cloner un exemple de projet fourni par l'équipe des applications de machine learning, qui promeut les meilleures pratiques et aide les équipes SaaS à commencer rapidement le développement tout en évitant une courbe d'apprentissage raide.

En commençant par un exemple de bout en bout entièrement fonctionnel, les équipes peuvent rapidement créer, déployer et provisionner l'exemple, se familiariser rapidement avec les applications ML. Ils peuvent ensuite modifier le code pour ajouter une logique métier spécifique, telle que l'ajout d'une étape de prétraitement au pipeline de formation ou d'un code de formation personnalisé.texte

Le développement et les tests peuvent être effectués localement sur leurs ordinateurs, mais la configuration de l'intégration continue / livraison continue (CI / CD) est essentielle pour accélérer les cycles de versions, améliorer la collaboration et la cohérence. Les équipes peuvent utiliser des exemples et des outils fournis par l'équipe de ML Application pour implémenter des pipelines CI/CD.

Les pipelines CI/CD déploient l'application ML dans l'environnement requis (par exemple, Développement) et effectuent des tests d'intégration pour garantir l'exactitude de la solution ML indépendamment de l'application SaaS. Ces tests peuvent déployer l'application et son implémentation, créer des instances de test, déclencher le flux d'entraînement et tester le modèle déployé. Les tests de bout en bout garantissent une intégration correcte avec l'application SaaS.

Lorsque votre application d'apprentissage automatique est déployée, elle est représentée sous forme de ressource d'application d'apprentissage automatique avec une implémentation d'application d'apprentissage automatique. La ressource Version d'implémentation de l'application ML permet de suivre les informations sur les différentes versions que vous avez déployées. Par exemple, la version 1.3 est la dernière version déployée, qui met à jour la version 1.2 précédente.

Les pipelines d'intégration continue et de déploiement continu doivent promouvoir la solution tout au long du cycle de vie jusqu'à la production. En production, il est souvent nécessaire de déployer l'application ML vers plusieurs régions pour l'aligner sur le déploiement de l'application client. Lorsque les clients disposent de plusieurs environnements de production (par exemple, la préparation et la production), les pipelines CI/CD doivent promouvoir l'application ML dans tous ces environnements.

Vous pouvez utiliser ML Pipelines comme composants d'application de vos applications ML pour implémenter un workflow en plusieurs étapes. Les pipelines de machine learning peuvent ensuite orchestrer des étapes ou des travaux arbitraires que vous devez implémenter.

Opération de déploiement

L'opération de déploiement implique plusieurs étapes clés pour garantir que les applications de machine learning sont correctement implémentées et mises à jour dans les environnements.

Tout d'abord, il est nécessaire de s'assurer que les ressources d'application ML et d'implémentation d'application ML existent. Sinon, ils sont créés. S'ils existent déjà, ils sont mis à jour :

  1. Créez ou mettez à jour la ressource d'application ML. Cela représente l'ensemble du cas d'utilisation de l'apprentissage automatique et toutes les ressources et informations associées.
  2. Créez ou mettez à jour la ressource d'implémentation d'application ML. Il existe sous les ressources d'application d'apprentissage automatique et représente l'implémentation, ce qui vous permet de le gérer. Vous avez besoin de l'implémentation d'application ML pour déployer votre package d'implémentation.
  3. Téléchargez le package d'application ML. Ce package contient l'implémentation de votre application ML avec d'autres métadonnées, packagées sous forme d'archive ZIP avec une structure spécifique.

Lorsqu'un package est téléchargé vers une ressource d'implémentation d'application ML, le service d'application ML le valide, puis effectue le déploiement. Pour le simplifier, les étapes clés du déploiement du package sont les suivantes :

  1. Les composants d'application (composants colocatifs) sont instanciés.
  2. Toutes les ressources d'instance d'application ML existantes déjà provisionnées pour les clients SaaS sont mises à jour. Les composants d'instance de chaque instance sont mis à jour pour correspondre aux définitions nouvellement téléchargées.

Flux de provisionnement

Pour que les instances d'application ML puissent être provisionnées, l'application ML doit être déployée et enregistrée dans l'application client.

1. Abonnement client et vérification de l'application ML
Le flux de provisionnement démarre lorsqu'un client s'abonne à l'application client. L'application client vérifie si des applications d'apprentissage automatique sont provisionnées pour le client.
2. Demande de provisionnement
Si des applications d'apprentissage automatique sont nécessaires, l'application client contacte le service d'application d'apprentissage automatique et demande à provisionner une instance, y compris les détails de configuration propres au locataire.
3. Créer et configurer une instance d'application d'apprentissage automatique
Le service d'application ML crée la ressource d'instance d'application ML avec la configuration spécifique. Cette ressource est gérée par l'application client, qui peut activer, désactiver, reconfigurer ou supprimer l'instance. En outre, le service d'application ML crée une ressource de vue d'instance d'application ML pour que les fournisseurs les informent de la consommation et des composants d'instance de l'application ML. Le service d'application ML crée également tous les composants d'instance définis dans l'implémentation, tels que les déclencheurs, les buckets, les exécutions de pipeline, les exécutions de travail et les déploiements de modèle.
texte
Remarque

Lorsqu'un nouveau package d'application d'apprentissage automatique est déployé après la création des instances, le service d'application d'apprentissage automatique s'assure que toutes les instances sont mises à jour avec les dernières définitions d'implémentation.

Flux d'exécution

Lorsque votre application d'apprentissage automatique est provisionnée pour un client, l'ensemble de l'implémentation est entièrement instanciée.

En général, l'application d'apprentissage automatique exécute des pipelines d'entraînement pour entraîner des modèles et répondre aux demandes de prédiction de l'application client. Les composants d'implémentation peuvent être divisés en deux groupes :
Composants colocatifs
Instancié une seule fois dans une application d'apprentissage automatique, prenant en charge tous les clients (par exemple, les pipelines d'apprentissage automatique). Elles sont définies en tant que composants d'application.
Composants à locataire unique
Instancié pour chaque client, exécuté uniquement dans le contexte d'un client particulier. Elles sont définies en tant que composants d'instance.
texte

Les pipelines ou les travaux de votre implémentation sont démarrés par des déclencheurs. Les déclencheurs créent des exécutions de pipeline et de travail dans le contexte de chaque client, en transmettant les paramètres appropriés (contexte) aux exécutions créées. En outre, les déclencheurs sont essentiels pour assurer l'isolement des locataires. Ils garantissent que le principal de ressource (identité) des ressources d'instance d'application d'apprentissage automatique est hérité par toutes les charges globales qu'ils démarrent. Vous pouvez ainsi créer des stratégies qui établissent un modèle d'environnement restreint de sécurité pour chaque instance provisionnée.

Les pipelines vous permettent de définir un ensemble d'étapes et de les orchestrer. Par exemple, un flux standard peut impliquer l'ingestion de données à partir de l'application client, leur transformation dans un format adapté à l'entraînement, puis l'entraînement et le déploiement de nouveaux modèles.

Le déploiement de modèle est utilisé en tant que back-end de prédiction mais n'est pas accessible directement par l'application client. L'application client, qui peut être à locataire unique (provisionnée pour chaque client) ou colocative (servant de nombreux clients), obtient des prédictions en contactant le routeur de prédiction d'application ML. Le routeur de prédiction trouve le back-end de prédiction correct en fonction de l'instance utilisée et du cas d'utilisation de prédiction implémenté par votre application.

Exemple de risque fœtal

Examinons les détails d'implémentation d'un exemple d'application ML pour comprendre comment en implémenter une.

Nous utilisons une application de prédiction du risque fœtal qui exploite les données de cardiotocographie (CTG) pour classer l'état de santé d'un fœtus. Cette application vise à aider les professionnels de la santé en prédisant si l'état fœtal est normal, risqué ou anormal sur la base des dossiers d'examen CTG.

Détails d'implémentation

L'implémentation suit le modèle de prédiction en ligne standard et se compose d'un pipeline avec des étapes d'assimilation, de transformation et d'entraînement de modèle et de déploiement.

  1. Ingestion : cette étape prépare l'ensemble de données brut et le stocke dans le bucket d'instance.

  2. Transformation : la préparation des données est effectuée à l'aide de la bibliothèque ADS. Cela implique les étapes suivantes :

    • Echantillonnage : l'ensemble de données est orienté vers les cas normaux. L'échantillonnage est donc effectué pour équilibrer les classes.
    • Redimensionnement des fonctionnalités : les fonctionnalités sont redimensionnées à l'aide de QuantileTransformer.
    • L'ensemble de données préparé est ensuite stocké à nouveau dans le bucket d'instance.
  3. Formation et déploiement de modèle : l'algorithme XGBoost est utilisé pour entraîner les modèles en raison de sa précision supérieure à celle des autres algorithmes (par exemple, Forêt aléatoire, KNN, SVM). La bibliothèque ADS est utilisée pour ce processus et le modèle entraîné est déployé vers le déploiement de modèle d'instance.

    La mise en œuvre consiste à :

    • Composants d'application : le composant principal est le pipeline qui orchestre trois travaux :
      1. Travail d'inclusion
      2. Travail de transformation
      3. Travail de formation
    • Composants d'instance : quatre composants d'instance sont définis ici :
      1. Bucket d'instance
      2. Modèle par défaut
      3. Déploiement de modèle
      4. Déclencheur de pipeline
    • descriptor.yaml : contient les métadonnées décrivant l'implémentation (le package).

Le code source est disponible dans ce projet.

Vérifiez le fichier descriptor.yaml :
descriptorSchemaVersion: 1.0
mlApplicationVersion: 1.0
implementationVersion: 1.2
 
# Package arguments allow you to resolve dependencies of your implementation that are environment-specific.
# Typically, OCIDs of infrastructure resources like subnets, data science projects, logs, etc., are passed as package arguments.
# For illustration purposes, only 2 package arguments are listed here.
packageArguments:
 
  # The implementation needs a subnet, and it is environment-specific. It is provided as a package argument.
  subnet_id:
    type: ocid
    mandatory: true
    description: "Subnet OCID for ML Job"
 
  # similarly for the ID of a data science project
  data_science_project_id:
    type: ocid
    mandatory: true
    description: "Project OCID for ML Job"
 
# Configuration schema allows you to define the schema for your instance configuration.
# It will be used during provisioning, and the initial configuration provided must conform to the schema.
configurationSchema:
   
  # The implementation needs to know the name of the external bucket (not managed by ML Apps) where the raw dataset is available.
  external_data_source:
    type: string
    mandatory: true
    description: "External Data Source (OCI Object Storage Service URI in form of <a target="_blank" href="oci://">oci://</a><bucket_name>@<namespace>/<object_name>"
    sampleValue: "<a target="_blank" href="oci://test_data_fetalrisk@mynamespace/test_data.csv">oci://test_data_fetalrisk@mynamespace/test_data.csv</a>"
 
# This application provides 1 prediction use case (1 prediction service).
onlinePredictionUseCases:
  - name: "fetalrisk"

Toutes les ressources OCI utilisées dans votre implémentation sont définies à l'aide de Terraform. Terraform vous permet d'indiquer de manière déclarative les composants nécessaires à votre implémentation.

Le pipeline et tous les travaux sont définis de la même manière à l'aide de Terraform. Exemple de définition de travail d'injection :
# For illustration purposes, only a partial definition is listed here.
resource oci_datascience_job ingestion_job {
  compartment_id = var.app_impl.compartment_id
  display_name = "Ingestion_ML_Job"
  delete_related_job_runs = true
  job_infrastructure_configuration_details {
    block_storage_size_in_gbs = local.ingestion_job_block_storage_size
    job_infrastructure_type   = "STANDALONE"
    shape_name                = local.ingestion_job_shape_name
    job_shape_config_details {
      memory_in_gbs = 16
      ocpus         = 4
    }
    subnet_id                 = var.app_impl.package_arguments.subnet_id
  }
  job_artifact = "./src/01-ingestion_job.py"
}
Terraform est également utilisé pour les composants d'instance. Exemple de définition de bucket :
resource "oci_objectstorage_bucket" "data_storage_bucket" {
  compartment_id = var.compartment_ocid
  namespace      = var.bucket_namespace
  name           = "ml-app-fetal-risk-bucket-${var.instance_id}"
  access_type    = "NoPublicAccess"
}

Les composants d'instance font généralement référence à des variables propres à l'instance, telles que l'ID d'instance. Vous pouvez utiliser des variables implicites définies par le service d'application ML. Lorsque vous avez besoin, par exemple, du nom de l'application, vous pouvez y faire référence avec ${var.ml_app_name}.

En conclusion, l'implémentation des applications ML nécessite quelques composants clés : un descripteur de package et quelques définitions Terraform. En suivant la documentation fournie, vous pouvez obtenir des détails sur la création de vos propres applications d'apprentissage automatique.