ML-Anwendungen

ML-Anwendungen sind eine eigenständige Darstellung von ML-Anwendungsfällen in Data Science.

ML-Anwendungen sind eine neue Funktion in Data Science, die eine robuste MLOps-Plattform für die Bereitstellung von KI/ML bereitstellt. Es standardisiert die Verpackung und Bereitstellung von KI/ML-Funktionen, sodass Sie maschinelles Lernen als Service erstellen, bereitstellen und betreiben können. Mit ML-Anwendungen können Sie Data Science nutzen, um KI-/ML-Anwendungsfälle zu implementieren und sie für Ihre Anwendungen oder Kunden in der Produktion bereitzustellen. Durch die Verkürzung des Entwicklungslebenszyklus von Monaten auf Wochen verkürzen ML-Anwendungen die Markteinführungszeit und reduzieren gleichzeitig die betriebliche Komplexität und die Gesamtbetriebskosten. Es bietet eine End-to-End-Plattform für die Bereitstellung, Validierung und Förderung von ML-Lösungen in jeder Phase - von der Entwicklung und Qualitätssicherung bis hin zur Vorproduktion und Produktion.

ML-Anwendungen unterstützen auch eine entkoppelte Architektur, indem sie eine einheitliche Integrationsschicht zwischen KI/ML-Funktionen und Clientanwendungen bereitstellen. Auf diese Weise können ML-Lösungen unabhängig entwickelt, getestet und weiterentwickelt werden, ohne dass Änderungen an der Clientanwendung erforderlich sind. Dies ermöglicht eine nahtlose Integration und schnellere Innovation.

ML-Anwendungen sind ideal für SaaS-Anbieter, die ML-Funktionen über eine Kundenflotte hinweg bereitstellen und verwalten müssen und gleichzeitig eine strikte Daten- und Workload-Isolation sicherstellen. Dadurch können SaaS-Anbieter vielen Mandanten dieselben ML-gestützten Funktionen bereitstellen, ohne die Sicherheit oder betriebliche Effizienz zu beeinträchtigen. Unabhängig davon, ob es sich um die Einbettung KI-gesteuerter Erkenntnisse, die Automatisierung der Entscheidungsfindung oder die Aktivierung von Vorhersageanalysen handelt, stellt ML Applications sicher, dass jeder SaaS-Kunde von einer vollständig verwalteten und isolierten ML-Bereitstellung profitiert.

Über SaaS hinaus eignen sich ML-Anwendungen auch ideal für Deployments mit mehreren Regionen und Unternehmen, die einen ML-Marktplatz aufbauen möchten, auf dem Anbieter KI-/ML-Lösungen registrieren, teilen und monetarisieren können. Kunden können diese ML-Funktionen mit minimalem Aufwand nahtlos instanziieren und in ihre Workflows integrieren.

Etwas

Beispiel: Eine ML-Anwendung für einen Anwendungsfall für eine Kundenabwanderungsvorhersage könnte Folgendes umfassen:

  • eine Pipeline mit Aufnahme-, Transformations- und Schulungsschritten, die Trainingsdaten vorbereiten, ein neues Modell trainieren und bereitstellen.
  • Bucket, mit dem aufgenommene und transformierte Daten gespeichert werden.
  • Trigger, der als Einstiegspunkt fungiert und eine sichere Ausführung von Pipelineausführungen im Kontext eines bestimmten SaaS-Kunden sicherstellt.
  • Ein Zeitplan, der regelmäßige Ausführungen der Trainingspipeline auslöst, um das Modell auf dem neuesten Stand zu halten.
  • Modell-Deployment, das Vorhersageanforderungen von Kunden verarbeitet.

Mit ML-Anwendungen können Sie die gesamte Implementierung als Code darstellen und in einem Quellcode-Repository speichern und versionieren. Die Lösung ist als ML-Anwendungspackage verpackt, das hauptsächlich Metadaten enthält. Die Metadaten umfassen Versionierungsinformationen, den Provisioning-Vertrag und Deklarationen von Umgebungsabhängigkeiten, wodurch das Package regionsunabhängig und umgebungsunabhängig wird. Nach der Erstellung kann das Package ohne Änderungen in jeder Zielumgebung bereitgestellt werden. So können Sie die Verpackung und Lieferung Ihrer ML-Funktionalität standardisieren.

Wenn eine ML-Anwendung bereitgestellt wird, wird sie durch ML-Anwendungs- und ML-Anwendungsimplementierungsressourcen dargestellt. In diesem Stadium kann es zur Verwendung bereitgestellt werden. In der Regel fordert eine Clientanwendung (wie eine SaaS-Plattform, ein Unternehmenssystem oder ein Workflowautomatisierungstool) den ML-Anwendungsservice an, eine neue Instanz der ML-Anwendung für einen bestimmten Kunden oder eine bestimmte Betriebseinheit bereitzustellen. Erst zu diesem Zeitpunkt ist die Lösung vollständig instanziiert und einsatzbereit.

Zusammenfassend lässt sich sagen, dass ML-Anwendungen eine standardisierte Möglichkeit bieten, ML-Funktionen in großem Maßstab zu erstellen, zu verpacken und bereitzustellen, was die Komplexität reduziert und die Produktionszeit in verschiedenen Szenarien verkürzt, darunter:

  • SaaS KI-Einführung, bei der SaaS-Plattformen ML-Funktionen für Tausende von Kunden integrieren und gleichzeitig Sicherheit, Skalierbarkeit und betriebliche Effizienz gewährleisten müssen.
  • Multiregionale Bereitstellungen, bei denen die ML-Funktionalität konsistent an verschiedenen Standorten mit minimalem Betriebsaufwand bereitgestellt werden muss.
  • KI-Einführung in Unternehmen, bei der Unternehmen isolierte ML-Instanzen über Teams, Geschäftseinheiten oder Tochtergesellschaften hinweg bereitstellen und gleichzeitig Governance und Compliance aufrechterhalten müssen.
  • ML-Marktplätze, auf denen Anbieter ML-Lösungen verpacken und verteilen können, sodass Kunden sie einfach als Service entdecken, bereitstellen und verwenden können.

Über SaaS hinaus können ML-Anwendungen in verschiedenen anderen Szenarios verwendet werden. Sie sind überall dort von Vorteil, wo oft eine ML-Lösung bereitgestellt werden muss, z. B. über verschiedene geografische Standorte hinweg. Außerdem können ML-Anwendungen verwendet werden, um einen Marktplatz zu schaffen, auf dem Anbieter ihre Anwendungen registrieren und sie Kunden als Service anbieten können, die sie dann instanziieren und verwenden können.

Die ML-Anwendungsfunktion selbst ist kostenlos. Ihnen wird nur die zugrunde liegende Infrastruktur (Compute, Storage und Networking) berechnet, die ohne zusätzliches Markup verwendet wird.

ML-Anwendungsressourcen

Von ML-Apps bereitgestellte OCI-Ressourcen:
ML-Anwendung
Eine Ressource, die einen ML-Anwendungsfall darstellt und als Dach für ML-Anwendungsimplementierungen und -instanzen dient. Es definiert und repräsentiert eine ML-Lösung, mit der Anbieter ML-Features für Verbraucher bereitstellen können.
ML-Anwendungsimplementierung
Eine Ressource, die eine bestimmte Lösung für den ML-Anwendungsfall darstellt, der von einer ML-Anwendung definiert wird. Es enthält alle Implementierungsdetails, die eine Instanziierung der Lösung für Verbraucher ermöglichen. Eine ML-Anwendung kann nur eine Implementierung enthalten.
ML-Anwendungsimplementierungsversion
Eine schreibgeschützte Ressource, die einen Snapshot einer ML-Anwendungsimplementierung darstellt. Die Version wird automatisch erstellt, wenn eine ML-Anwendungsimplementierung einen neuen konsistenten Status erreicht.
ML-Anwendungsinstanz
Eine Ressource, die eine einzelne isolierte Instanz einer ML-Anwendung darstellt, mit der Verbraucher die bereitgestellte ML-Funktionalität konfigurieren und verwenden können. ML-Anwendungsinstanzen spielen eine entscheidende Rolle bei der Definition von Grenzen für die Isolation von Daten, Workloads und Modellen. Diese Isolationsebene ist für SaaS-Organisationen von wesentlicher Bedeutung, da sie die Trennung und Sicherheit der Ressourcen ihrer Kunden sicherstellen können.
ML-Anwendungsinstanzansicht
Eine schreibgeschützte Ressource, bei der es sich um eine automatisch verwaltete Kopie der ML-Anwendungsinstanz handelt, die um zusätzliche Details wie Referenzen auf Instanzkomponenten erweitert wurde. Dadurch können Anbieter den Verbrauch ihrer ML-Anwendungen verfolgen. Das bedeutet, dass Provider Implementierungsdetails von Instanzen beobachten, überwachen und Fehler beheben können. Wenn Consumer und Provider in verschiedenen Mandanten arbeiten, sind ML-Anwendungsinstanzansichten die einzige Möglichkeit für Provider, Informationen über den Verbrauch ihrer Anwendungen zu sammeln.
Hinweis

ML-Anwendungsressourcen sind in der OCI-Konsole schreibgeschützt. Zur Verwaltung und Erstellung der Ressourcen können Sie die mlapp-CLI verwenden, die Teil des Beispielprojekts der ML-Anwendung, der oci-CLI oder der APIs ist.

ML-Anwendungskonzepte

ML-Anwendungen führen zwei Schlüsselkonzepte ein:
  • ML-Anwendungspackage
  • ML-Anwendungstrigger
Obwohl dies keine OCI-Ressourcen sind, sind sie für das Verständnis und den Betrieb von ML-Anwendungen unerlässlich.
ML-Anwendungspackage
Ermöglicht ein standardisiertes Packaging von ML-Funktionen, das umwelt- und regionsunabhängig ist. Sie enthält Implementierungsdetails wie Terraform-Komponenten, -Deskriptoren und -Konfigurationsschema. Sie ist eine portable Lösung, die in jedem Mandanten, jeder Region oder jeder Umgebung verwendet werden kann. Infrastrukturabhängigkeiten der enthaltenen Implementierung (z.B. VCN und Log-OCIDs), die für eine Region oder Umgebung spezifisch sind, werden während des Uploadprozesses als Packageargumente bereitgestellt.
ML-Anwendungstrigger
Mit Triggern können ML-Anwendungsprovider den Auslösemechanismus für ihre ML-Jobs oder -Pipelines angeben, wodurch die Implementierung von vollständig automatisierten MLOps vereinfacht wird. Trigger sind die Einstiegspunkte für die Ausführungen Ihrer ML-Workflows. Sie werden durch YAML-Dateien im ML Applications-Package als Instanzkomponenten definiert. Trigger werden automatisch erstellt, wenn eine neue ML-Anwendungsinstanz erstellt wird, jedoch nur, wenn alle anderen Instanzkomponenten erstellt werden. Wenn ein Trigger erstellt wird, kann er sich also auf andere Instanzkomponenten beziehen, die zuvor erstellt wurden.

ML-Anwendungsrollen

Bei der Arbeit mit ML-Anwendungen ist es wichtig, zwischen zwei Schlüsselrollen zu unterscheiden:
  • Provider
  • Consumer
Provider
Provider sind OCI-Kunden, die ML-Features erstellen, bereitstellen und betreiben. Sie verpacken und stellen ML-Features als ML-Anwendungen und -Implementierungen bereit. Sie verwenden ML-Anwendungen, um Verbrauchern Prognoseservices as-a-Service bereitzustellen. Sie stellen sicher, dass die bereitgestellten Vorhersageservices den vereinbarten Service Level Agreements (SLAs) entsprechen.
Consumer
Verbraucher sind OCI-Kunden, die ML-Anwendungsinstanzen erstellen und von diesen Instanzen angebotene Vorhersageservices verwenden. In der Regel sind Verbraucher SaaS-Anwendungen wie Fusion. Sie verwenden ML-Anwendungen, um ML-Funktionen zu integrieren und für ihre Kunden bereitzustellen.

Lifecycle Management

ML-Anwendungen decken den gesamten Lebenszyklus von ML-Lösungen ab.

Dies beginnt mit frühen Designphasen, in denen sich Teams auf Verträge einigen können und unabhängig arbeiten können. Sie umfasst Produktionsbereitstellung, Flottenmanagement und die Einführung neuer Versionen.

Build

Darstellung als Code
Die gesamte Lösung, einschließlich aller Komponenten und Workflows, wird als Code dargestellt. Dies fördert Best Practices für die Softwareentwicklung wie Konsistenz und Reproduzierbarkeit.
Automatisierung
Mit ML-Anwendungen ist die Automatisierung einfach. Mit Data Science Scheduler, ML-Pipelines und ML-Anwendungs-Triggern können Sie sich auf die Automatisierung der Workflows in der Lösung konzentrieren. Die Automatisierung von Provisioning- und Konfigurationsflüssen wird vom ML Application Service verwaltet.
Standardisierte Verpackung
ML-Anwendungen bieten ein umgebungsunabhängiges und regionsunabhängiges Packaging, einschließlich Metadaten für Versionierung, Abhängigkeiten und Provisioning-Konfigurationen.

Bereitstellen

Serviceverwaltetes Deployment
Sie können Ihre ML-Lösungen als ML-Anwendungsressourcen bereitstellen und verwalten. Wenn Sie Ihre ML-Anwendungsimplementierungsressource erstellen, können Sie Ihre Implementierung als ML-Anwendungspackage bereitstellen. Der ML-Anwendungsservice orchestriert das Deployment für Sie, validiert Ihre Implementierung und erstellt die entsprechenden OCI-Ressourcen.
Umgebungen
Mit ML-Anwendungen können Anbieter verschiedene Lebenszyklusumgebungen wie Entwicklung, Qualitätssicherung und Vorproduktion bereitstellen und so eine kontrollierte Einführung von ML-Anwendungen in die Produktion ermöglichen. In der Produktion bieten einige Unternehmen Kunden mehrere Umgebungen an, wie "Staging" und "Production". Mit ML-Anwendungen können neue Versionen in "Staging" bereitgestellt, evaluiert und getestet werden, bevor sie zur "Produktion" hochgestuft werden. Dadurch haben Kunden eine große Kontrolle über die Aufnahme neuer Versionen, einschließlich ML-Funktionen.
Regionsübergreifende Bereitstellung
Stellen Sie Lösungen in verschiedenen Regionen bereit, einschließlich nichtkommerzieller, wie Regierungsregionen.

Einsetzen

As-a-Service-Bereitstellung
Anbieter bieten Vorhersage-Services "as-a-Service", die alle Wartungs- und Betriebsabläufe abwickeln. Kunden nutzen die Prognoseservices, ohne Implementierungsdetails anzuzeigen.
Monitoring und Fehlerbehebung
Vereinfachte Überwachung, Fehlerbehebung und Ursachenanalyse mit detaillierter Versionierung, Rückverfolgbarkeit und kontextbezogenen Erkenntnissen.
Lösungsfähigkeit
Helfen Sie dabei, schnelle Iterationen, Upgrades und Patches ohne Ausfallzeiten bereitzustellen, um eine kontinuierliche Verbesserung und Anpassung an die Kundenanforderungen sicherzustellen.

Wichtige Features

Zu den wichtigsten Features von ML-Anwendungen gehören:

As-a-Service-Bereitstellung
Mit ML-Anwendungen können Teams Vorhersagedienste als SaaS (Software-as-a-Service) erstellen und bereitstellen. Das bedeutet, dass Anbieter Lösungen verwalten und weiterentwickeln können, ohne Kunden zu beeinträchtigen. ML-Anwendungen dienen als Metaservice und erleichtern die Erstellung neuer Vorhersageservices, die als SaaS-Angebote genutzt und skaliert werden können.
OCI-nativ
Die nahtlose Integration mit OCI-Ressourcen gewährleistet Konsistenz und vereinfacht die Bereitstellung über Umgebungen und Regionen hinweg.
Standardverpackung
Umweltunabhängiges und regionunabhängiges Packaging standardisiert die Implementierung und erleichtert die globale Bereitstellung von ML-Anwendungen.
Mandantenisolierung
Stellt eine vollständige Isolierung von Daten und Workloads für jeden Kunden sicher und verbessert so die Sicherheit und Compliance.
Versionieren
Unterstützt sich entwickelnde Implementierungen mit unabhängigen Release-Prozessen und ermöglicht schnelle Updates und Verbesserungen.
Upgrades ohne Ausfallzeiten
Automatisierte Instanzupgrades stellen einen kontinuierlichen Service ohne Unterbrechungen sicher.
Mandantenübergreifendes Provisioning
Unterstützt die mandantenübergreifende Beobachtbarkeit und den Marktverbrauch und erweitert die Bereitstellungsmöglichkeiten.

ML Applications führt die folgenden Ressourcen ein:

  • ML-Anwendung
  • ML-Anwendungsimplementierung
  • ML-Anwendungsimplementierungsversion
  • ML-Anwendungsinstanz
  • ML-Anwendungsinstanzansicht

Mehrwert

ML-Anwendungen dienen als Platform-as-a-Service (PaaS) und bieten Unternehmen das grundlegende Framework und die erforderlichen Services zum Erstellen, Bereitstellen und Verwalten von ML-Features in großem Maßstab.

Dadurch erhalten Teams eine vordefinierte Plattform für die Modellierung und Bereitstellung von ML-Anwendungsfällen, sodass keine benutzerdefinierten Frameworks und Tools entwickelt werden müssen. So können Teams ihre Bemühungen auf die Entwicklung innovativer KI-Lösungen konzentrieren und so sowohl die Markteinführungszeit als auch die Gesamtbetriebskosten für ML-Funktionen reduzieren.

ML-Anwendungen bieten Unternehmen APIs und Abstraktionen, um den gesamten Lebenszyklus von ML-Anwendungsfällen zu überwachen. Implementierungen werden als Code dargestellt, in ML-Anwendungspakete verpackt und in ML-Anwendungsimplementierungsressourcen bereitgestellt. Historische Versionen von Implementierungen werden als Ressourcen der ML-Anwendungsimplementierungsversion verfolgt. ML Applications ist der Klebstoff, der die Rückverfolgbarkeit aller Komponenten gewährleistet, die von den Implementierungen, der Versionierung und Umgebungsinformationen sowie von Kundenverbrauchsdaten verwendet werden. Mit ML-Anwendungen erhalten Unternehmen präzise Einblicke in die Bereitstellung von ML-Implementierungen in Umgebungen und Regionen, in denen Kunden bestimmte Anwendungen verwenden, und den Gesamtzustand der ML-Flotte. Darüber hinaus bieten ML-Anwendungen Instanz-Recovery-Funktionen, die ein einfaches Recovery nach Infrastruktur- und Konfigurationsfehlern ermöglichen.

Mit klar definierten Grenzen unterstützt ML Applications die Erstellung von Provisioning- und Vorhersageverträgen, sodass Teams Aufgaben effizienter aufteilen und bewältigen können. Beispiel: Teams, die an Clientanwendungscode arbeiten (z.B. eine SaaS-Plattform oder ein Unternehmenssystem), können nahtlos mit ML-Teams zusammenarbeiten, indem sie sich auf Vorhersageverträge einigen, sodass beide Teams unabhängig arbeiten können. Ebenso können ML-Teams Provisioning-Verträge definieren, sodass Teams Provisioning- und Konfigurationsaufgaben autonom ausführen können. Diese Entkopplung beseitigt Abhängigkeiten und beschleunigt die Lieferzeiten.

ML-Anwendungen optimieren die Entwicklung von ML-Lösungen, indem sie den Versionsupgradeprozess automatisieren. Updates werden vollständig von ML-Anwendungen orchestriert, um Fehler zu minimieren und die Skalierung von Lösungen auf viele Instanzen (Kunden) zu ermöglichen. Implementierer können Änderungen in einer Kette von Lebenszyklusumgebungen (z. B. Entwicklung, Qualitätssicherung, Vorproduktion, Produktion) fördern und überprüfen und so die Kontrolle über die Freigabe von Änderungen an Kunden behalten.

Die Mandantenisolation zeichnet sich als wesentlicher Vorteil von ML-Anwendungen durch die vollständige Trennung von Daten und Workloads für jeden Kunden aus und verbessert so die Sicherheit und Compliance. Im Gegensatz zu herkömmlichen Methoden, die auf prozessbasierter Isolation basieren, können Kunden mit ML-Anwendungen Einschränkungen basierend auf Berechtigungen implementieren und die Mandantenisolation auch bei Defekten schützen.

ML-Anwendungen wurden unter Berücksichtigung der Skalierbarkeit entwickelt, sodass große Unternehmen, insbesondere SaaS-Organisationen, eine standardisierte Plattform für die ML-Entwicklung nutzen können, um Konsistenz in vielen Teams zu gewährleisten. Hunderte ML-Lösungen können entwickelt werden, ohne dass die gesamte ML-Initiative ins Chaos stürzt. Dank der Automatisierung, die sich auf die Implementierung von ML-Pipelines, die Bereitstellung von Modellen und die Bereitstellung erstreckt, können SaaS-Unternehmen die Entwicklung von ML-Features für SaaS industrialisieren und Millionen von Pipelines und Modellen effizient verwalten, die autonom in der Produktion ausgeführt werden.

Time to Market

Standardisierte Implementierung
Beseitigt die Notwendigkeit benutzerdefinierter Frameworks, sodass sich Teams auf geschäftliche Anwendungsfälle konzentrieren können.
Automatisierung
Erhöht die Geschwindigkeit und reduziert manuelle Eingriffe, die für die Skalierung von SaaS-Lösungen entscheidend sind.
Trennung von Anliegen
Klare Grenzen, Verträge und APIs ermöglichen es verschiedenen Teams, unabhängig zu arbeiten und die Entwicklung und Bereitstellung zu optimieren.

Entwicklungs- und Betriebskosten

Geringere Entwicklungskosten
Die Verwendung vordefinierter Services reduziert den Bedarf an grundlegenden Arbeiten.
Lösungsfähigkeit
Schnelle Iterationen und unabhängige Upgrades ohne Ausfallzeiten sorgen für kontinuierliche Verbesserungen.
Verfolgbarkeit
Detaillierte Einblicke in Umgebungen, Komponenten und Coderevisionen erleichtern das Verständnis und die Verwaltung von ML-Lösungen.
Automatisierte Bereitstellung und Beobachtbarkeit
Vereinfacht die Verwaltung und Überwachung von ML-Lösungen und reduziert so den Betriebsaufwand.
Flottenmanagement
Verwalten Sie den gesamten Lebenszyklus von ML-Anwendungsinstanzen in großem Maßstab. ML-Anwendungen bieten Einblick in alle bereitgestellten Instanzen, unterstützen flottenweite Updates und Upgrades und ermöglichen das Provisioning und Deprovisioning nach Bedarf. Außerdem können ML-Lösungen, die mit ML-Anwendungen erstellt wurden, mit OCI Monitoring überwacht werden, um Performance und Zustand zu verfolgen.

Sicherheit und Zuverlässigkeit

Daten- und Workload-Isolation
Stellt sicher, dass die Daten und Workloads jedes Kunden sicher isoliert sind.
Zuverlässigkeit
Automatisierte Updates und robuste Überwachung beseitigen Fehler und gewährleisten einen stabilen Betrieb.
Kein lautes Nachbarproblem
Stellt sicher, dass Workloads sich nicht gegenseitig beeinträchtigen, sodass Performance und Stabilität erhalten bleiben.

Build- und Deployment-Workflow

Die Entwicklung von ML-Anwendungen ähnelt der Standardsoftwareentwicklung.

Ingenieure und Data Scientists verwalten ihre Implementierung in einem Quellcode-Repository. Dabei werden ML-Anwendungsdokumentation und -Repositorys als Anleitung verwendet. Sie beginnen in der Regel mit dem Klonen eines Beispielprojekts des ML Applications-Teams, das Best Practices fördert und SaaS-Teams dabei hilft, schnell mit der Entwicklung zu beginnen und gleichzeitig eine steile Lernkurve zu vermeiden.

Durch die Einführung eines voll funktionsfähigen End-to-End-Beispiels können Teams das Beispiel schnell erstellen, bereitstellen und bereitstellen und sich schnell mit ML-Anwendungen vertraut machen. Anschließend können sie den Code ändern, um eine bestimmte Geschäftslogik hinzuzufügen, z.B. einen Vorverarbeitungsschritt zur Schulungspipeline oder einen benutzerdefinierten Schulungscode.Text

Entwicklung und Tests können lokal auf ihren Computern durchgeführt werden. Die Einrichtung von Continuous Integration/Continuous Delivery (CI/CD) ist jedoch für schnellere Releasezyklen, verbesserte Zusammenarbeit und Konsistenz unerlässlich. Teams können anhand von Beispielen und Tools des ML-Anwendungsteams CI/CD-Pipelines implementieren.

CI/CD-Pipelines stellen die ML-Anwendung in der erforderlichen Umgebung (z.B. Entwicklung) bereit und führen Integrationstests durch, um die Richtigkeit der ML-Lösung unabhängig von der SaaS-App sicherzustellen. Diese Tests können die Anwendung und ihre Implementierung bereitstellen, Testinstanzen erstellen, den Trainingsfluss auslösen und das bereitgestellte Modell testen. End-to-End-Tests stellen eine ordnungsgemäße Integration mit der Anwendung SaaS sicher.

Wenn Ihre ML-Anwendung bereitgestellt wird, wird sie zusammen mit einer ML-Anwendungsimplementierung als ML-Anwendungsressource dargestellt. Mit der Ressource "ML Application Implementation Version" können Sie Informationen zu den verschiedenen Versionen verfolgen, die Sie bereitgestellt haben. Beispiel: Version 1.3 ist die neueste bereitgestellte Version, mit der die vorherige Version 1.2 aktualisiert wird.

Die CI/CD-Pipelines müssen die Lösung über Lebenszyklusumgebungen bis hin zur Produktion fördern. In der Produktion ist es oft erforderlich, die ML-Anwendung in mehreren Regionen bereitzustellen, um sie an das Deployment der Clientanwendung anzupassen. Wenn Kunden über mehrere Produktionsumgebungen verfügen (z.B. Staging und Produktion), müssen die CI/CD-Pipelines die ML-Anwendung über all diese Umgebungen hinweg fördern.

Sie können ML-Pipelines als Anwendungskomponenten in Ihren ML-Anwendungen verwenden, um einen mehrstufigen Workflow zu implementieren. ML-Pipelines können dann beliebige Schritte oder Jobs orchestrieren, die Sie implementieren müssen.

Deployment-Vorgang

Der Deployment-Vorgang umfasst mehrere wichtige Schritte, um sicherzustellen, dass ML-Anwendungen in allen Umgebungen korrekt implementiert und aktualisiert werden.

Zunächst müssen Sie sicherstellen, dass die Ressourcen für die Implementierung von ML-Anwendungen und ML-Anwendungen vorhanden sind. Wenn nicht, werden sie erstellt. Wenn sie bereits vorhanden sind, werden sie aktualisiert:

  1. Erstellen oder aktualisieren Sie die ML-Anwendungsressource. Dies stellt den gesamten ML-Anwendungsfall und alle zugehörigen Ressourcen und Informationen dar.
  2. Erstellen oder aktualisieren Sie die ML Application Implementation-Ressource. Dies ist unter den ML-Anwendungsressourcen vorhanden und stellt die Implementierung dar, mit der Sie sie verwalten können. Sie benötigen die ML-Anwendungsimplementierung, um Ihr Implementierungspaket bereitzustellen.
  3. Laden Sie das ML-Anwendungspaket hoch. Dieses Package enthält die Implementierung Ihrer ML-Anwendung zusammen mit anderen Metadaten, die als ZIP-Archiv mit einer bestimmten Struktur verpackt sind.

Wenn ein Package in eine ML-Anwendungsimplementierungsressource hochgeladen wird, validiert der ML-Anwendungsservice es und führt dann das Deployment aus. Die wichtigsten Schritte beim Deployment des Pakets sind:

  1. Die Anwendungskomponenten (mehrmandantenfähige Komponenten) werden instanziiert.
  2. Alle vorhandenen ML-Anwendungsinstanzressourcen, die bereits für SaaS-Kunden bereitgestellt wurden, werden aktualisiert. Die Instanzkomponenten jeder Instanz werden entsprechend den neu hochgeladenen Definitionen aktualisiert.

Provisioning-Ablauf

Bevor ML-Anwendungsinstanzen bereitgestellt werden können, muss die ML-Anwendung bereitgestellt und bei der Clientanwendung registriert werden.

1. Kundenabonnement und ML-Anwendungsprüfung
Der Provisioning-Ablauf beginnt, wenn ein Kunde die Clientanwendung abonniert. Die Clientanwendung prüft, ob ML-Anwendungen für den Kunden bereitgestellt werden.
2. Provisioning-Anforderung
Wenn ML-Anwendungen erforderlich sind, kontaktiert die Clientanwendung den ML-Anwendungsservice und fordert das Provisioning einer Instanz an, einschließlich mandantenspezifischer Konfigurationsdetails.
3. ML-Anwendungsinstanz erstellen und konfigurieren
Der ML-Anwendungsservice erstellt die ML-Anwendungsinstanzressource mit der spezifischen Konfiguration. Diese Ressource wird von der Clientanwendung verwaltet, die die Instanz aktivieren, deaktivieren, neu konfigurieren oder löschen kann. Außerdem erstellt der ML-Anwendungsservice eine ML-Anwendungsinstanzansichtsressource für Provider, um sie über den Verbrauch und die Instanzkomponenten der ML-Anwendung zu informieren. Der ML-Anwendungsservice erstellt auch alle in der Implementierung definierten Instanzkomponenten, wie Trigger, Buckets, Pipelineausführungen, Jobläufe und Modell-Deployments.
Text
Hinweis

Wenn nach der Erstellung von Instanzen ein neues ML-Anwendungspackage bereitgestellt wird, stellt der ML-Anwendungsservice sicher, dass alle Instanzen mit den neuesten Implementierungsdefinitionen aktualisiert werden.

Laufzeitablauf

Wenn Ihre ML-Anwendung für einen Kunden bereitgestellt wird, wird die gesamte Implementierung vollständig instanziiert.

In der Regel führt die ML-Anwendung Trainingspipelines aus, um Modelle zu trainieren und Vorhersageanforderungen von der Clientanwendung zu verarbeiten. Die Implementierungskomponenten können in zwei Gruppen unterteilt werden:
Mehrmandantenfähige Komponenten
In einer ML-Anwendung nur einmal instanziiert, sodass alle Kunden (z.B. ML-Pipelines) unterstützt werden. Sie werden als Anwendungskomponenten definiert.
Einzelmandantenkomponenten
Wird für jeden Kunden instanziiert und nur im Kontext eines bestimmten Kunden ausgeführt. Sie werden als Instanzkomponenten definiert.
Text

Pipelines oder Jobs in Ihrer Implementierung werden durch Trigger gestartet. Trigger erstellen Pipeline- und Jobläufe im Kontext jedes Kunden und übergeben die entsprechenden Parameter (Kontext) an die erstellten Ausführungen. Außerdem sind Trigger für die Mandantenisolierung unerlässlich. Sie stellen sicher, dass der Resource Principal (Identität) der ML-Anwendungsinstanzressourcen von allen Workloads geerbt wird, die sie starten. Auf diese Weise können Sie Policys erstellen, die eine Sicherheitssandbox für jede bereitgestellte Instanz einrichten.

Mit Pipelines können Sie eine Gruppe von Schritten definieren und orchestrieren. Beispiel: Ein typischer Ablauf kann die Aufnahme von Daten aus der Clientanwendung, die Umwandlung in ein für das Training geeignetes Format sowie das Training und die Bereitstellung neuer Modelle umfassen.

Das Modell-Deployment wird als Vorhersage-Backend verwendet, wird jedoch nicht direkt von der Clientanwendung aufgerufen. Die Clientanwendung, die entweder ein Mandant (für jeden Kunden bereitgestellt) oder mehrmandantenfähig (für viele Kunden) sein kann, erhält Vorhersagen, indem sie sich an den ML Application Prediction Router wendet. Der Vorhersage-Router findet das richtige Vorhersage-Backend basierend auf der verwendeten Instanz und dem von Ihrer Anwendung implementierten Vorhersageanwendungsfall.

Beispiel für fetales Risiko

Sehen wir uns die Implementierungsdetails einer Beispiel-ML-Anwendung an, um zu verstehen, wie eine implementiert wird.

Wir verwenden eine fetale Risikoprädiktionsanwendung, die Kardiotokografie-(CTG-)Daten nutzt, um den Gesundheitsstatus eines Fötus zu klassifizieren. Diese Anwendung zielt darauf ab, medizinischem Fachpersonal zu helfen, indem sie vorhersagt, ob der fetale Zustand normal, riskant oder abnorm ist, basierend auf CTG-Prüfungsaufzeichnungen.

Implementierungs-Details

Die Implementierung folgt dem standardmäßigen Onlinevorhersagemuster und besteht aus einer Pipeline mit Trainings- und Bereitstellungsschritten für Aufnahme, Transformation und Modell.

  1. Aufnahme: Dieser Schritt bereitet das Raw-Dataset vor und speichert es im Instanz-Bucket.

  2. Transformation: Die Datenvorbereitung erfolgt mit der ADS-Bibliothek. Dazu gehören folgende Vorgänge:

    • Upsampling: Das Dataset ist auf normale Fälle ausgerichtet. Daher erfolgt ein Upsampling, um die Klassen auszugleichen.
    • Featureskalierung: Features werden mit QuantileTransformer skaliert.
    • Das vorbereitete Dataset wird dann wieder im Instanz-Bucket gespeichert.
  3. Modelltraining und -bereitstellung: Der XGBoost-Algorithmus wird für das Training der Modelle verwendet, da er im Vergleich zu anderen Algorithmen (z.B. Random Forest, KNN, SVM) überlegen ist. Die ADS-Library wird für diesen Prozess verwendet, und das trainierte Modell wird für das Instanzmodell-Deployment bereitgestellt.

    Die Implementierung besteht aus:

    • Anwendungskomponenten: Die Hauptkomponente ist die Pipeline, die drei Jobs orchestriert:
      1. Aufnahmejob
      2. Transformationsjob
      3. Ausbildungsjob
    • Instanzkomponenten: Hier werden vier Instanzkomponenten definiert:
      1. Instanz-Bucket
      2. Standardmodell
      3. Modell-Deployment
      4. Pipeline-Trigger
    • descriptor.yaml: Enthält die Metadaten, in denen die Implementierung (das Package) beschrieben wird.

Der Quellcode ist in diesem Projekt verfügbar.

Prüfen Sie die Datei 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"

Alle in Ihrer Implementierung verwendeten OCI-Ressourcen werden mit Terraform definiert. Mit Terraform können Sie die für Ihre Implementierung erforderlichen Komponenten deklarativ angeben.

Die Pipeline und alle Jobs werden auf ähnliche Weise mit Terraform definiert. Eine Beispieldefinition für einen Injection-Job:
# 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 wird auch für Instanzkomponenten verwendet. Beispiel für eine Bucket-Definition:
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"
}

Instanzkomponenten beziehen sich in der Regel auf instanzspezifische Variablen wie die Instanz-ID. Sie können sich auf implizite Variablen verlassen, die vom ML-Anwendungsservice definiert werden. Wenn Sie beispielsweise den Namen der Anwendung benötigen, können Sie ihn mit ${var.ml_app_name} referenzieren.

Zusammenfassend erfordert die Implementierung von ML-Anwendungen einige Schlüsselkomponenten: einen Packagedeskriptor und ein paar Terraform-Definitionen. Im Anschluss an die bereitgestellte Dokumentation erfahren Sie, wie Sie Ihre eigenen ML-Anwendungen erstellen.