In diesem Beitrag demonstrieren wir Kubeflow auf AWS (eine AWS-spezifische Distribution von Kubeflow) und den Mehrwert, den es gegenüber Open-Source-Kubeflow durch die Integration hochoptimierter, Cloud-nativer, unternehmensfähiger AWS-Services hinzufügt.
Kubeflow ist die Open-Source-Plattform für maschinelles Lernen (ML), die darauf abzielt, die Bereitstellung von ML-Workflows auf Kubernetes einfach, portabel und skalierbar zu machen. Kubeflow bietet viele Komponenten, darunter ein zentrales Dashboard, Jupyter-Notebooks für mehrere Benutzer, Kubeflow-Pipelines, KFServing und Katib sowie verteilte Schulungsoperatoren für TensorFlow, PyTorch, MXNet und XGBoost, um einfache, skalierbare und portable ML-Workflows zu erstellen .
AWS hat kürzlich Kubeflow v1.4 als Teil seiner eigenen Kubeflow-Distribution (genannt Kubeflow on AWS) eingeführt, die Data-Science-Aufgaben rationalisiert und dabei hilft, hochzuverlässige, sichere, portable und skalierbare ML-Systeme mit reduzierten Betriebskosten durch Integrationen mit verwalteten AWS-Services aufzubauen . Sie können diese Kubeflow-Distribution verwenden, um darauf ML-Systeme aufzubauen Amazon Elastic Kubernetes-Service (Amazon EKS) zum Erstellen, Trainieren, Optimieren und Bereitstellen von ML-Modellen für eine Vielzahl von Anwendungsfällen, einschließlich Computer Vision, Verarbeitung natürlicher Sprache, Sprachübersetzung und Finanzmodellierung.
Herausforderungen mit Open-Source-Kubeflow
Wenn Sie ein Open-Source-Kubeflow-Projekt verwenden, stellt es alle Komponenten der Kubeflow-Steuerungsebene und der Datenebene auf Kubernetes-Workerknoten bereit. Kubeflow-Komponentendienste werden als Teil der Kubeflow-Steuerungsebene bereitgestellt, und alle Ressourcenbereitstellungen im Zusammenhang mit Jupyter, Modelltraining, Tuning und Hosting werden auf der Kubeflow-Datenebene bereitgestellt. Die Kubeflow-Steuerungsebene und die Datenebene können auf demselben oder auf verschiedenen Kubernetes-Workerknoten ausgeführt werden. Dieser Beitrag konzentriert sich auf die Komponenten der Kubeflow-Steuerungsebene, wie im folgenden Diagramm dargestellt.
Dieses Bereitstellungsmodell bietet aus folgenden Gründen möglicherweise keine unternehmenstaugliche Erfahrung:
- Alle Heavy-Lifting-Infrastrukturkomponenten der Kubeflow-Steuerungsebene, einschließlich Datenbank, Speicher und Authentifizierung, werden im Kubernetes-Cluster-Worker-Knoten selbst bereitgestellt. Dies erschwert die Implementierung einer hochverfügbaren Konstruktionsarchitektur der Kubeflow-Steuerungsebene mit einem dauerhaften Zustand im Falle eines Ausfalls des Worker-Knotens.
- Von der Kubeflow-Steuerungsebene generierte Artefakte (z. B. MySQL-Instanzen, Pod-Protokolle oder MinIO-Speicher) wachsen mit der Zeit und benötigen skalierbare Speichervolumes mit kontinuierlichen Überwachungsfunktionen, um den wachsenden Speicherbedarf zu decken. Da die Kubeflow-Steuerungsebene Ressourcen mit den Workloads der Kubeflow-Datenebene teilt (z. B. für Trainingsjobs, Pipelines und Bereitstellungen), kann die richtige Dimensionierung und Skalierung von Kubernetes-Clustern und -Speichervolumes zu einer Herausforderung werden und zu erhöhten Betriebskosten führen.
- Kubernetes beschränkt die Größe der Protokolldatei, wobei die meisten Installationen das neueste Limit von 10 MB beibehalten. Standardmäßig werden die Pod-Protokolle unzugänglich, nachdem sie diese Obergrenze erreicht haben. Die Protokolle könnten auch unzugänglich werden, wenn Pods entfernt, abgestürzt, gelöscht oder auf einem anderen Knoten geplant werden, was sich auf die Verfügbarkeit und Überwachungsfunktionen Ihres Anwendungsprotokolls auswirken könnte.
Kubeflow auf AWS
Kubeflow on AWS bietet einen klaren Weg zur Nutzung von Kubeflow mit den folgenden AWS-Services:
- Anwendungs-Load-Balancer für sicheres externes Datenverkehrsmanagement über HTTPS
- Amazon CloudWatch für die dauerhafte Protokollverwaltung
- AWS Cognito zur Benutzerauthentifizierung mit Transport Layer Security (TLS)
- AWS Deep Learning Container für hochoptimierte Jupyter-Notebook-Server-Images
- Amazon Elastic File System (Amazon EFS) oder Amazon FSx für Lustre für eine einfache, skalierbare und serverlose Dateispeicherlösung für eine verbesserte Trainingsleistung
- Amazon EKS für verwaltete Kubernetes-Cluster
- Relationaler Amazon-Datenbankdienst (Amazon RDS) für hochskalierbare Pipelines und einen Metadatenspeicher
- AWS Secrets Manager um Geheimnisse zu schützen, die für den Zugriff auf Ihre Anwendungen erforderlich sind
- Amazon Simple Storage-Service (Amazon S3) für einen benutzerfreundlichen Speicher für Pipeline-Artefakte
Diese AWS-Service-Integrationen mit Kubeflow (wie im folgenden Diagramm dargestellt) ermöglichen es uns, kritische Teile der Kubeflow-Steuerungsebene von Kubernetes zu entkoppeln und so ein sicheres, skalierbares, robustes und kostenoptimiertes Design bereitzustellen.
Lassen Sie uns die Vorteile der einzelnen Dienstintegrationen und ihrer Lösungen in Bezug auf Sicherheit, Ausführung von ML-Pipelines und Speicherung besprechen.
Sichere Authentifizierung von Kubeflow-Benutzern mit Amazon Cognito
Die Cloud-Sicherheit bei AWS hat höchste Priorität, und wir investieren in die enge Integration der Kubeflow-Sicherheit direkt in die AWS-Sicherheitsdienste mit gemeinsamer Verantwortung, wie z. B. die folgenden:
- Application Load Balancer (ALB) für externes Datenverkehrsmanagement
- AWS-Zertifikatsmanager (ACM) zur Unterstützung von TLS
- IAM-Rollen für Dienstkonten (IRSA) für eine differenzierte Zugriffskontrolle auf Kubernetes-Pod-Ebene
- AWS-Schlüsselverwaltungsservice (AWS KMS) für die Verwaltung von Datenverschlüsselungsschlüsseln
- AWS-Schild zum DDoS-Schutz
In diesem Abschnitt konzentrieren wir uns auf die Integration der AWS Kubeflow-Steuerungsebene mit Amazon Cognito. Amazon Cognito beseitigt die Notwendigkeit, eine native Dex-Lösung (Open-Source OpenID Connect (OIDC)-Anbieter mit Unterstützung durch lokales LDAP) für die Benutzerauthentifizierung zu verwalten und zu warten, und vereinfacht die Verwaltung von Geheimnissen.
Sie können Amazon Cognito auch verwenden, um Benutzerregistrierung, Anmeldung und Zugriffskontrolle schnell und einfach zu Ihrer Kubeflow-Benutzeroberfläche hinzuzufügen. Amazon Cognito lässt sich auf Millionen von Benutzern skalieren und unterstützt die Anmeldung bei Anbietern sozialer Identitäten (IdPs) wie Facebook, Google und Amazon sowie Unternehmens-IdPs über SAML 2.0. Dies reduziert die Komplexität in Ihrem Kubeflow-Setup, macht es betrieblich schlank und einfacher zu bedienen, um eine Multi-User-Isolation zu erreichen.
Sehen wir uns einen Mehrbenutzer-Authentifizierungsfluss mit Amazon Cognito-, ALB- und ACM-Integrationen mit Kubeflow auf AWS an. Es gibt eine Reihe von Schlüsselkomponenten als Teil dieser Integration. Amazon Cognito ist als IdP mit einem Authentifizierungs-Callback konfiguriert, der so konfiguriert ist, dass die Anforderung nach der Benutzerauthentifizierung an Kubeflow weitergeleitet wird. Als Teil der Kubeflow-Einrichtung wird eine Kubernetes-Ingress-Ressource erstellt, um den externen Datenverkehr zum Istio Gateway-Dienst zu verwalten. Der AWS ALB Ingress Controller stellt einen Load Balancer für diesen Ingress bereit. Wir gebrauchen Amazon Route 53 um ein öffentliches DNS für die registrierte Domäne zu konfigurieren und Zertifikate mit ACM zu erstellen, um die TLS-Authentifizierung beim Load Balancer zu aktivieren.
Das folgende Diagramm zeigt den typischen Benutzerworkflow für die Anmeldung bei Amazon Cognito und die Umleitung zu Kubeflow in ihrem jeweiligen Namespace.
Der Workflow enthält die folgenden Schritte:
- Der Benutzer sendet eine HTTPS-Anforderung an das zentrale Kubeflow-Dashboard, das hinter einem Load Balancer gehostet wird. Route 53 löst den FQDN in den ALB-Alias-Datensatz auf.
- Wenn das Cookie nicht vorhanden ist, leitet der Load Balancer den Benutzer zum Amazon Cognito-Autorisierungsendpunkt um, damit Amazon Cognito den Benutzer authentifizieren kann.
- Nachdem der Benutzer authentifiziert wurde, sendet Amazon Cognito den Benutzer mit einem Autorisierungsgewährungscode zurück an den Load Balancer.
- Der Load Balancer präsentiert den Autorisierungsgewährungscode dem Amazon Cognito-Token-Endpunkt.
- Nach Erhalt eines gültigen Autorisierungsgewährungscodes stellt Amazon Cognito dem Load Balancer das ID-Token und das Zugriffstoken bereit.
- Nachdem Ihr Load Balancer einen Benutzer erfolgreich authentifiziert hat, sendet er das Zugriffstoken an den Amazon Cognito-Benutzerinfo-Endpunkt und empfängt Benutzeransprüche. Der Load Balancer signiert und fügt dem HTTP-Header Benutzeransprüche hinzu
x-amzn-oidc-*
in einem JSON-Web-Token (JWT)-Anforderungsformat. - Die Anfrage vom Load Balancer wird an den Pod des Istio Ingress Gateway gesendet.
- Mithilfe eines Envoy-Filters dekodiert Istio Gateway die
x-amzn-oidc-data
-Wert, ruft das E-Mail-Feld ab und fügt den benutzerdefinierten HTTP-Header hinzukubeflow-userid
, die von der Kubeflow-Autorisierungsschicht verwendet wird. - Die ressourcenbasierten Zugriffssteuerungsrichtlinien von Istio werden auf die eingehende Anfrage angewendet, um den Zugriff auf das Kubeflow-Dashboard zu validieren. Wenn einer von diesen für den Benutzer nicht zugänglich ist, wird eine Fehlerantwort zurückgesendet. Wenn die Anfrage validiert ist, wird sie an den entsprechenden Kubeflow-Dienst weitergeleitet und bietet Zugriff auf das Kubeflow-Dashboard
Persistierende Kubeflow-Komponentenmetadaten und Artefaktspeicherung mit Amazon RDS und Amazon S3
Kubeflow auf AWS bietet Integration mit Relationaler Amazon-Datenbankdienst (Amazon RDS) in Kubeflow Pipelines und AutoML (Sekretär) für die dauerhafte Speicherung von Metadaten und Amazon S3 in Kubeflow Pipelines für die dauerhafte Speicherung von Artefakten. Lassen Sie uns weiter auf Kubeflow-Pipelines im Detail eingehen.
Kubeflow Pipelines ist eine Plattform zum Erstellen und Bereitstellen portabler, skalierbarer ML-Workflows. Diese Workflows können dabei helfen, komplexe ML-Pipelines mithilfe integrierter und benutzerdefinierter Kubeflow-Komponenten zu automatisieren. Kubeflow Pipelines umfasst Python SDK, einen DSL-Compiler zum Konvertieren von Python-Code in eine statische Konfiguration, einen Pipelines-Dienst, der Pipelines aus der statischen Konfiguration ausführt, und eine Reihe von Controllern zum Ausführen der Container in den Kubernetes-Pods, die zum Vervollständigen der Pipeline benötigt werden.
Kubeflow Pipelines-Metadaten für Pipeline-Experimente und -Ausführungen werden in MySQL gespeichert, und Artefakte, einschließlich Pipeline-Pakete und Metriken, werden in MinIO gespeichert.
Wie im folgenden Diagramm gezeigt, können Sie mit Kubeflow auf AWS die folgenden Komponenten mit verwalteten AWS-Services speichern:
- Pipeline-Metadaten in Amazon RDS – Amazon RDS bietet eine skalierbare, hochverfügbare und zuverlässige Multi-AZ-Bereitstellungsarchitektur mit einem integrierten automatisierten Failover-Mechanismus und anpassbarer Kapazität für eine branchenübliche relationale Datenbank wie MySQL. Es verwaltet allgemeine Datenbankverwaltungsaufgaben, ohne dass eine Infrastruktur bereitgestellt oder Software gewartet werden muss.
- Pipeline-Artefakte in Amazon S3 – Amazon S3 bietet branchenführende Skalierbarkeit, Datenverfügbarkeit, Sicherheit und Leistung und könnte verwendet werden, um Ihre Anforderungen zu erfüllen Compliance-Anforderungen.
Diese Integrationen tragen dazu bei, die Verwaltung und Wartung des Metadaten- und Artefaktspeichers von selbstverwaltetem Kubeflow auf verwaltete AWS-Services auszulagern, die einfacher einzurichten, zu betreiben und zu skalieren sind.
Unterstützung für verteilte Dateisysteme mit Amazon EFS und Amazon FSx
Kubeflow baut auf Kubernetes auf, das eine Infrastruktur für die groß angelegte, verteilte Datenverarbeitung bietet, einschließlich des Trainings und der Optimierung großer Modelle mit einem tiefen Netzwerk mit Millionen oder sogar Milliarden von Parametern. Um solche verteilten Datenverarbeitungs-ML-Systeme zu unterstützen, bietet Kubeflow auf AWS die Integration mit den folgenden Speicherdiensten:
- Amazon EFS – Ein hochleistungsfähiges, Cloud-natives, verteiltes Dateisystem, das Sie über ein verwalten können Amazon EFS CSI-Treiber. Amazon EFS bietet
ReadWriteMany
Zugriffsmodus, und Sie können ihn jetzt zum Mounten in Pods (Jupyter, Modelltraining, Modelloptimierung) verwenden, die in einer Kubeflow-Datenebene ausgeführt werden, um einen dauerhaften, skalierbaren und gemeinsam nutzbaren Arbeitsbereich bereitzustellen, der automatisch wächst und schrumpft, wenn Sie Dateien hinzufügen und entfernen keine Notwendigkeit für die Verwaltung. - Amazon FSx für Lustre – Ein optimiertes Dateisystem für rechenintensive Workloads wie High Performance Computing und ML, das Sie über verwalten können Amazon FSx CSI-Treiber. FSx für Lustre bietet
ReadWriteMany
Zugriffsmodus, und Sie können ihn verwenden, um Trainingsdaten mit direkter Verbindung zu Amazon S3 als Sicherungsspeicher zwischenzuspeichern, die Sie verwenden können, um Jupyter-Notebook-Server oder verteiltes Training zu unterstützen, das in einer Kubeflow-Datenebene ausgeführt wird. Bei dieser Konfiguration müssen Sie keine Daten in das Dateisystem übertragen, bevor Sie das Volume verwenden. FSx for Lustre bietet konsistente Latenzen im Submillisekundenbereich und hohe Parallelität und kann auf TB/s Durchsatz und Millionen von IOPS skaliert werden.
Kubeflow-Bereitstellungsoptionen
AWS bietet verschiedene Kubeflow-Bereitstellungsoptionen:
- Bereitstellung mit Amazon Cognito
- Bereitstellung mit Amazon RDS und Amazon S3
- Bereitstellung mit Amazon Cognito, Amazon RDS und Amazon S3
- Vanille-Bereitstellung
Einzelheiten zur Dienstintegration und verfügbaren Add-Ons für jede dieser Optionen finden Sie unter Bereitstellungsoptionen. Sie können die Option einbauen, die am besten zu Ihrem Anwendungsfall passt.
Im folgenden Abschnitt führen wir die Schritte zur Installation der AWS Kubeflow v1.4-Verteilung auf Amazon EKS durch. Dann verwenden wir das vorhandene XGBoost-Pipeline-Beispiel, das auf dem zentralen UI-Dashboard von Kubeflow verfügbar ist, um die Integration und Verwendung von AWS Kubeflow mit Amazon Cognito, Amazon RDS und Amazon S3 mit Secrets Manager als Add-on zu demonstrieren.
Voraussetzungen:
Für diese exemplarische Vorgehensweise sollten Sie die folgenden Voraussetzungen erfüllen:
- An AWS-Konto.
- Ein vorhandener Amazon EKS-Cluster. Es sollte Kubernetes Version 1.19 oder höher sein. Für die automatisierte Clustererstellung mit exkl, Siehe Erstellen Sie einen Amazon EKS-Cluster und verwenden Sie die eksctl-Option.
Installieren Sie die folgenden Tools auf dem Clientcomputer, der für den Zugriff auf Ihren Kubernetes-Cluster verwendet wird. Sie können verwenden AWS Cloud9, eine cloudbasierte integrierte Entwicklungsumgebung (IDE) für das Kubernetes-Cluster-Setup.
- AWS-Befehlszeilenschnittstelle (AWS CLI) – Ein Befehlszeilentool für die Interaktion mit AWS-Services. Anweisungen zur Installation finden Sie unter Installieren, Aktualisieren und Deinstallieren der AWS CLI.
- exkl > 0.56 – Ein Befehlszeilentool für die Arbeit mit Amazon EKS-Clustern, das viele einzelne Aufgaben automatisiert.
- kubectl – Ein Befehlszeilentool für die Arbeit mit Kubernetes-Clustern.
- git – Eine verteilte Versionskontrollsoftware.
- Python 3.8 + – Die Programmierumgebung Python.
- Pip – Der Paketmanager für Python.
- kundenspezifische Version 3.2.0 – Ein Befehlszeilentool zum Anpassen von Kubernetes-Objekten über eine Anpassungsdatei.
Installieren Sie Kubeflow auf AWS
Konfigurieren Sie kubectl so, dass Sie eine Verbindung zu einem Amazon EKS-Cluster herstellen können:
Verschiedene Controller in der Kubeflow-Bereitstellung werden verwendet IAM-Rollen für Dienstkonten (IRSA). Ein OIDC-Anbieter muss vorhanden sein, damit Ihr Cluster IRSA verwenden kann. Erstellen Sie einen OIDC-Anbieter und ordnen Sie ihn Ihrem Amazon EKS-Cluster zu, indem Sie den folgenden Befehl ausführen, falls Ihr Cluster noch keinen hat:
Klonen Sie das AWS-Manifestrepo und das Kubeflow-Manifestrepo und checken Sie die entsprechenden Release-Zweige aus:
Weitere Informationen zu diesen Versionen finden Sie unter Freigaben und Versionierung.
Richten Sie Amazon RDS, Amazon S3 und Secrets Manager ein
Sie erstellen Amazon RDS- und Amazon S3-Ressourcen, bevor Sie die Kubeflow-Manifeste bereitstellen. Wir verwenden automatisierte Python-Skripte, die sich um die Erstellung des S3-Buckets, der RDS-Datenbank und der erforderlichen Geheimnisse in Secrets Manager kümmern. Es bearbeitet auch die erforderlichen Konfigurationsdateien für die Kubeflow-Pipeline und AutoML, damit sie während der Kubeflow-Installation ordnungsgemäß für die RDS-Datenbank und den S3-Bucket konfiguriert werden.
Erstellen Sie einen IAM-Benutzer mit Berechtigungen zuzulassen GetBucketLocation
und Lese- und Schreibzugriff auf Objekte in einem S3-Bucket, in dem Sie die Kubeflow-Artefakte speichern möchten. Verwenden Sie die AWS_ACCESS_KEY_ID
und AWS_SECRET_ACCESS_KEY
des IAM-Benutzers im folgenden Code:
Richten Sie Amazon Cognito als Authentifizierungsanbieter ein
In diesem Abschnitt erstellen wir eine benutzerdefinierte Domäne in Route 53 und ALB, um externen Datenverkehr an Kubeflow Istio Gateway weiterzuleiten. Wir verwenden ACM, um ein Zertifikat zu erstellen, um die TLS-Authentifizierung bei ALB und Amazon Cognito zu aktivieren, um den Benutzerpool zu verwalten und die Benutzerauthentifizierung zu verwalten.
Ersetzen Sie die folgenden Werte in
- route53.rootDomain.name – Die registrierte Domain. Nehmen wir an, diese Domain ist
example.com
. - route53.rootDomain.hostedZoneId – Wenn Ihre Domäne in Route53 verwaltet wird, geben Sie die ID der gehosteten Zone ein, die Sie unter den Details der gehosteten Zone finden. Überspringen Sie diesen Schritt, wenn Ihre Domain von einem anderen Domainanbieter verwaltet wird.
- route53.subDomain.name – Der Name der Subdomain, in der Sie Kubeflow hosten möchten (z. B.
platform.example.com
). Weitere Informationen zu Subdomains finden Sie unter Bereitstellen von Kubeflow mit AWS Cognito als IdP. - Clustername – Der Clustername und wo Kubeflow bereitgestellt wird.
- Cluster.Region – Die Cluster-Region, in der Kubeflow bereitgestellt wird (z. B.
us-west-2
). - cognitoUserpool.name – Der Name des Amazon Cognito-Benutzerpools (z. B.
kubeflow-users
).
Die Konfigurationsdatei sieht etwa wie der folgende Code aus:
Führen Sie das Skript aus, um die Ressourcen zu erstellen:
Das Skript aktualisiert die config.yaml
Datei mit den erstellten Ressourcennamen, IDs und ARNs. Es sieht in etwa wie der folgende Code aus:
Erstellen Sie Manifeste und stellen Sie Kubeflow bereit
Stellen Sie Kubeflow mit dem folgenden Befehl bereit:
Aktualisieren Sie die Domäne mit der ALB-Adresse
Die Bereitstellung erstellt einen eingangsverwalteten AWS-Anwendungs-Load-Balancer. Wir aktualisieren die DNS-Einträge für die Subdomain in Route 53 mit dem DNS des Load Balancers. Führen Sie den folgenden Befehl aus, um zu prüfen, ob der Load Balancer bereitgestellt ist (dies dauert etwa 3–5 Minuten):
Besitzt das ADDRESS
Feld nach ein paar Minuten leer ist, überprüfen Sie die Protokolle von alb-ingress-controller
. Anweisungen finden Sie unter ALB kann nicht bereitgestellt werden.
Wenn der Load Balancer bereitgestellt wird, kopieren Sie den DNS-Namen des Load Balancers und ersetzen Sie die Adresse durch kubeflow.alb.dns
in ${kubeflow_manifest_dir}/tests/e2e/utils/cognito_bootstrap/config.yaml
. Der Kubeflow-Abschnitt der Konfigurationsdatei sieht wie folgt aus:
Führen Sie das folgende Skript aus, um die DNS-Einträge für die Unterdomäne in Route 53 mit dem DNS des bereitgestellten Load Balancers zu aktualisieren:
Problemlösung
Wenn Sie während der Installation auf Probleme stoßen, lesen Sie die Anleitung zur Fehlerbehebung oder beginnen Sie neu, indem Sie dem Abschnitt „Aufräumen“ in diesem Blog folgen.
Use-Case-Walkthrough
Nachdem wir die Installation der erforderlichen Kubeflow-Komponenten abgeschlossen haben, sehen wir uns diese in Aktion an, indem wir eines der vorhandenen Beispiele verwenden, die von Kubeflow Pipelines auf dem Dashboard bereitgestellt werden.
Greifen Sie mit Amazon Cognito auf das Kubeflow-Dashboard zu
Lassen Sie uns zunächst auf das Kubeflow-Dashboard zugreifen. Da wir Amazon Cognito als IdP verwendet haben, verwenden Sie die Informationen in der offizielle README-Datei. Wir erstellen zuerst einige Benutzer auf der Amazon Cognito-Konsole. Dies sind die Benutzer, die sich beim zentralen Dashboard anmelden. Nächste, Erstelle ein Profil für den von Ihnen erstellten Benutzer. Dann sollten Sie über die Anmeldeseite unter auf das Dashboard zugreifen können https://kubeflow.platform.example.com.
Der folgende Screenshot zeigt unser Kubeflow-Dashboard.
Führen Sie die Pipeline aus
Wählen Sie im Kubeflow-Dashboard aus Pipelines im Navigationsnamen. Sie sollten vier von Kubeflow Pipelines bereitgestellte Beispiele sehen, die Sie direkt ausführen können, um verschiedene Pipelines-Funktionen zu erkunden.
Für diesen Beitrag verwenden wir das XGBoost-Beispiel namens [Demo] XGBoost – Iterative model training. Den Quellcode finden Sie unter GitHub. Dies ist eine einfache Pipeline, die die vorhandene verwendet XGBoost/Train
und XGBoost/Predict
Kubeflow-Pipelinekomponenten zum iterativen Trainieren eines Modells, bis die Metriken basierend auf den angegebenen Metriken als gut angesehen werden.
Führen Sie die folgenden Schritte aus, um die Pipeline auszuführen:
- Wählen Sie die Pipeline aus und wählen Sie aus Versuch erstellen.
- Der Versuchsdetails, geben Sie einen Namen ein (für diesen Beitrag,
demo-blog
) und optionale Beschreibung. - Auswählen
Weiter.
- Der Ausführungsdetails¸ Wählen Sie Ihre Pipeline und Pipeline-Version aus.
- Aussichten für Laufname, Geben Sie einen Namen ein.
- Aussichten für Experiment, wählen Sie den von Ihnen erstellten Test aus.
- Aussichten für AusführungstypWählen Einmalig.
- Auswählen
Startseite.
Nachdem die Pipeline gestartet wurde, sollten Sie sehen, dass die Komponenten abgeschlossen werden (innerhalb weniger Sekunden). In diesem Stadium können Sie eine der fertigen Komponenten auswählen, um weitere Details anzuzeigen.
Greifen Sie auf die Artefakte in Amazon S3 zu
Bei der Bereitstellung von Kubeflow haben wir angegeben, dass Kubeflow-Pipelines Amazon S3 verwenden sollten, um seine Artefakte zu speichern. Dazu gehören alle Pipeline-Ausgabeartefakte, zwischengespeicherten Ausführungen und Pipeline-Diagramme, die dann alle für umfassende Visualisierungen und Leistungsbewertungen verwendet werden können.
Wenn die Pipelineausführung abgeschlossen ist, sollten Sie die Artefakte im S3-Bucket sehen können, den Sie während der Installation erstellt haben. Um dies zu bestätigen, wählen Sie eine fertige Komponente der Pipeline aus und überprüfen Sie die Input / Output Abschnitt über die Standardeinstellung Graph Tab. Die Artefakt-URLs sollten auf den S3-Bucket verweisen, den Sie während der Bereitstellung angegeben haben.
Um zu bestätigen, dass die Ressourcen zu Amazon S3 hinzugefügt wurden, können wir auch den S3-Bucket in unserem AWS-Konto über die Amazon S3-Konsole überprüfen.
Der folgende Screenshot zeigt unsere Dateien.
Überprüfen Sie ML-Metadaten in Amazon RDS
Außerdem haben wir Kubeflow Pipelines während der Bereitstellung in Amazon RDS integriert, was bedeutet, dass alle Pipeline-Metadaten in Amazon RDS gespeichert werden sollten. Dazu gehören alle Laufzeitinformationen wie der Status einer Aufgabe, die Verfügbarkeit von Artefakten, benutzerdefinierte Eigenschaften, die der Ausführung oder den Artefakten zugeordnet sind, und mehr.
Um die Amazon RDS-Integration zu überprüfen, befolgen Sie die Schritte in der offizielle README-Datei. Führen Sie insbesondere die folgenden Schritte aus:
- Rufen Sie den Amazon RDS-Benutzernamen und das Kennwort aus dem Geheimnis ab, das während der Installation erstellt wurde:
- Verwenden Sie diese Anmeldeinformationen, um innerhalb des Clusters eine Verbindung zu Amazon RDS herzustellen:
- Wenn die MySQL-Eingabeaufforderung geöffnet wird, können wir die überprüfen
mlpipelines
Datenbank wie folgt: - Jetzt können wir den Inhalt bestimmter Tabellen lesen, um sicherzustellen, dass wir Metadateninformationen zu den Experimenten sehen können, die die Pipelines ausgeführt haben:
Aufräumen
Führen Sie die folgenden Schritte aus, um Kubeflow zu deinstallieren und die von Ihnen erstellten AWS-Ressourcen zu löschen:
- Löschen Sie den Ingress und den vom Ingress verwalteten Load Balancer, indem Sie den folgenden Befehl ausführen:
- Löschen Sie die restlichen Kubeflow-Komponenten:
- Löschen Sie die von Skripts erstellten AWS-Ressourcen:
- Ressourcen, die für die Amazon RDS- und Amazon S3-Integration erstellt wurden. Stellen Sie sicher, dass Sie die vom Skript erstellte Konfigurationsdatei in haben
${kubeflow_manifest_dir}/tests/e2e/utils/rds-s3/metadata.yaml
: - Für die Amazon Cognito-Integration erstellte Ressourcen. Stellen Sie sicher, dass Sie die vom Skript erstellte Konfigurationsdatei in haben
${kubeflow_manifest_dir}/tests/e2e/utils/cognito_bootstrap/config.yaml
:
- Ressourcen, die für die Amazon RDS- und Amazon S3-Integration erstellt wurden. Stellen Sie sicher, dass Sie die vom Skript erstellte Konfigurationsdatei in haben
- Wenn Sie mit eksctl einen dedizierten Amazon EKS-Cluster für Kubeflow erstellt haben, können Sie ihn mit dem folgenden Befehl löschen:
Zusammenfassung
In diesem Beitrag haben wir den Wert hervorgehoben, den Kubeflow auf AWS durch native, von AWS verwaltete Serviceintegrationen für sichere, skalierbare und unternehmenstaugliche KI- und ML-Workloads bietet. Sie können aus mehreren Bereitstellungsoptionen wählen, um Kubeflow auf AWS mit verschiedenen Service-Integrationen zu installieren. Der Anwendungsfall in diesem Beitrag demonstrierte die Kubeflow-Integration mit Amazon Cognito, Secrets Manager, Amazon RDS und Amazon S3. Um mit Kubeflow auf AWS zu beginnen, lesen Sie die verfügbaren AWS-integrierten Bereitstellungsoptionen in Kubeflow auf AWS.
Ab v1.3 können Sie die folgen AWS Labs-Repository um alle AWS-Beiträge zu Kubeflow zu verfolgen. Sie finden uns auch auf der Kubeflow #AWS Slack-Channel; Ihr Feedback dort wird uns helfen, die nächsten Funktionen zu priorisieren, die zum Kubeflow-Projekt beitragen.
Über die Autoren
Kanwaljit Khurmi ist AI/ML Specialist Solutions Architect bei Amazon Web Services. Er arbeitet mit dem AWS-Produkt, der Technik und den Kunden zusammen, um Anleitungen und technische Unterstützung bereitzustellen, die ihnen helfen, den Wert ihrer hybriden ML-Lösungen bei der Verwendung von AWS zu verbessern. Kanwaljit ist darauf spezialisiert, Kunden mit containerisierten und maschinellen Lernanwendungen zu unterstützen.
Meghna Baijal ist ein Software-Ingenieur mit AWS AI, der es Benutzern erleichtert, ihre Workloads für maschinelles Lernen in AWS zu integrieren, indem er ML-Produkte und -Plattformen wie die Deep Learning-Container, die Deep Learning-AMIs, die AWS-Controller für Kubernetes (ACK) und Kubeflow auf AWS erstellt . Außerhalb der Arbeit liest, reist und malt sie gerne.
Suraj Kota ist ein Software-Ingenieur, der sich auf Infrastrukturen für maschinelles Lernen spezialisiert hat. Er erstellt Tools für den einfachen Einstieg und die Skalierung der Workload für maschinelles Lernen auf AWS. Er arbeitete an AWS Deep Learning Containers, Deep Learning AMI, SageMaker Operators for Kubernetes und anderen Open-Source-Integrationen wie Kubeflow.
- Coinsmart. Europas beste Bitcoin- und Krypto-Börse.
- Platoblockkette. Web3-Metaverse-Intelligenz. Wissen verstärkt. DEN FREIEN ZUGANG.
- CryptoHawk. Altcoin-Radar. Kostenlose Testphase.
- Quelle: https://aws.amazon.com/blogs/machine-learning/build-and-deploy-a-scalable-machine-learning-system-on-kubernetes-with-kubeflow-on-aws/
- "
- 10
- 100
- 420
- 7
- Über uns
- Zugang
- Konto
- Action
- Erweiterung
- Adresse
- Administrator
- Verwaltung
- Mitgliedsorganisationen
- AI
- Alle
- bereits
- Amazon
- Amazon Web Services
- Ein anderer
- Anwendung
- Anwendungen
- angemessen
- Architektur
- um
- Partnerschaftsräte
- authentifiziert
- authentifiziert
- Authentifizierung
- Genehmigung
- automatisieren
- Automatisiert
- Automatisches Erfassen:
- Verfügbarkeit
- verfügbar
- AWS
- werden
- Vorteile
- BESTE
- Milliarden
- Blog
- Grenze
- bauen
- Building
- baut
- eingebaut
- Fähigkeiten
- Kapazität
- österreichische Unternehmen
- Fälle
- CD
- Bescheinigung
- Zertifikate
- herausfordernd
- Kasse
- Auswählen
- aus aller Welt
- Klasse
- Code
- gemeinsam
- Abschluss
- Komplex
- Komponente
- Computer
- Computing
- Konfiguration
- Vernetz Dich
- Konnektivität
- Konsul (Console)
- Behälter
- enthält
- Inhalt
- fortsetzen
- beitragen
- Smartgeräte App
- Controller
- Urheberrecht
- könnte
- erstellen
- erstellt
- schafft
- Erstellen
- Schaffung
- Referenzen
- kritischem
- Original
- Kunden
- Armaturenbrett
- technische Daten
- Datenverarbeitung
- Datenwissenschaft
- Datenbase
- DDoS
- gewidmet
- Demand
- zeigen
- weisen nach, dass
- einsetzen
- Einsatz
- Bereitstellen
- Einsatz
- Implementierungen
- setzt ein
- Design
- Detail
- Details
- Entwicklung
- Dex
- anders
- Direkt
- Direkt
- diskutieren
- verteilt
- Verteilung
- dns
- Tut nicht
- Domain
- leicht
- einfach zu bedienende
- Echo
- ermöglichen
- Verschlüsselung
- Endpunkt
- Ingenieur
- Entwicklung
- Enter
- Unternehmen
- Arbeitsumfeld
- Auswertung
- Event
- Beispiel
- vorhandenen
- ERFAHRUNGEN
- Experiment
- ERKUNDEN
- Scheitern
- Eigenschaften
- Feedback
- Revolution
- Vorname
- passen
- Fluss
- Setzen Sie mit Achtsamkeit
- konzentriert
- folgen
- Folgende
- Format
- gefunden
- frisch
- bekommen
- Git
- GitHub
- gut
- Wachsen Sie über sich hinaus
- persönlichem Wachstum
- Hilfe
- Unternehmen
- hilft
- hier
- High
- höher
- Besondere
- hoch
- Hosting
- HTTPS
- Hybrid
- Identitätsschutz
- Impact der HXNUMXO Observatorien
- implementieren
- zu unterstützen,
- Inc.
- Dazu gehören
- Einschließlich
- hat
- Krankengymnastik
- branchenführend
- Info
- Information
- Infrastruktur
- installieren
- integriert
- Integration
- Integrationen
- Investitionen
- Isolierung
- Probleme
- IT
- selbst
- Jobs
- Aufbewahrung
- Wesentliche
- Labs
- Sprache
- grosse
- ins Leben gerufen
- lernen
- Facelift
- Line
- Belastung
- aus einer regionalen
- Maschine
- Maschinelles Lernen
- halten
- MACHT
- Making
- verwalten
- verwaltet
- Management
- Manager
- Metrik
- Millionen
- ML
- Modell
- für
- Überwachung
- mehr
- vor allem warme
- Namen
- Natürliche
- Navigation
- Netto-
- Netzwerk
- Fiber Node
- Notizbuch
- Anzahl
- Angebote
- XNUMXh geöffnet
- Open-Source-
- öffnet
- Betreiber
- optimiert
- Option
- Optionen
- Andere
- besitzen
- Passwort
- Leistung
- Plattform
- Plattformen
- Points
- Politik durchzulesen
- Pool
- Gegenwart
- Prioritätsliste
- Verarbeitung
- Produkt
- Produkte
- Programmierung
- Projekt
- Risiken zu minimieren
- die
- bietet
- Bereitstellung
- Öffentlichkeit
- schnell
- erreichen
- Lesebrillen
- Gründe
- Rekord
- eingetragen
- Release
- Anforderung
- falls angefordert
- Voraussetzungen:
- Ressourcen
- Downloads
- Antwort
- REST
- Straße
- Führen Sie
- Laufen
- Skalierbarkeit
- skalierbaren
- Skalieren
- Skalierung
- Wissenschaft
- Sdk
- SEK
- Sekunden
- Verbindung
- Sicherheitdienst
- Serverlos
- Leistungen
- kompensieren
- Setup
- Shares
- Schilder
- Einfacher
- Größe
- locker
- schlafen
- So
- Social Media
- Software
- Software IngenieurIn
- solide
- Lösung
- Lösungen
- einige
- etwas
- Quellcode
- Spezialist
- spezialisiert
- spezialisiert
- speziell
- Stufe
- Anfang
- begonnen
- beginnt
- Bundesstaat
- Status
- Lagerung
- speichern
- Erfolgreich
- Support
- Unterstützt
- System
- Systeme und Techniken
- und Aufgaben
- Technische
- Die Quelle
- Durch
- Zeit
- Zeichen
- Werkzeug
- Werkzeuge
- Top
- verfolgen sind
- der Verkehr
- Ausbildung
- privaten Transfer
- Übersetzungen
- Transportwesen
- Reise
- ui
- Aktualisierung
- Updates
- us
- -
- Nutzer
- validiert
- Wert
- Vielfalt
- verschiedene
- überprüfen
- Seh-
- Volumen
- Netz
- Web-Services
- WHO
- .
- ohne
- Arbeiten
- gearbeitet
- arbeiten,
- Werk