Skalieren einer Anwendung mit Ray¶
Die Snowflake Container-Laufzeit lässt sich in Ray integrieren, ein vereinheitlichtes Open-Source-Framework für die Skalierung von AI- und Python-Anwendungen. Mit dieser Integration können Sie die verteilten Verarbeitungsfunktionen von Ray auf Snowflake für Ihre Machine-Learning-Workloads nutzen.
Ray ist vorinstalliert und wird als Hintergrundprozess innerhalb der Snowflake ML-Container-Laufzeit ausgeführt. Sie können auf folgende Weise über die Container-Laufzeit auf Ray zugreifen:
Snowflake Notebooks: Eine interaktive Umgebung, in der Sie eine Verbindung zu Ray herstellen, Aufgaben definieren und Ihren Cluster für Entwicklung und Experimente dynamisch skalieren können.
SnowflakeML-Jobs: Übermitteln Sie Ihre Ray-Anwendungen als strukturierte, wiederholbare Jobs. Sie können die Cluster-Größe als Teil der Jobkonfiguration für Produktions-Workloads angeben.
Wenn Sie die Container-Laufzeit innerhalb eines Snowflake Notebooks oder ML-Jobs ausführen, wird der Ray-Prozess automatisch als Teil dieses Containers initiiert.
Verwenden Sie den folgenden Python-Code, um eine Verbindung zum Cluster herzustellen:
Wichtig
Stellen Sie sicher, dass Sie immer die "auto"-Adresse verwenden, wenn Sie eine Verbindung zum Ray-Cluster herstellen. Wenn Sie zur Initialisierung die "auto"-Adresse verwenden, wird Ihre Anwendung an den Hauptknoten des Ray-Clusters weitergeleitet, den Snowflake für Ihre Sitzung bereitgestellt hat.
Skalieren Ihres Ray-Clusters¶
Nachdem Sie eine Verbindung zum Ray-Cluster hergestellt haben, können Sie dessen Größe an die Verarbeitungsanforderungen Ihres Workloads anpassen.
Verwenden Sie die folgenden Ansätze, um Ihren Ray-Cluster zu skalieren:
Innerhalb eines Notebooks können Sie Ihren Cluster mit der scale_cluster-Funktion dynamisch nach oben oder unten skalieren. Dies ist ideal für interaktive Workflows, bei denen sich die Ressourcenanforderungen ändern können.
Wenn Sie expected_cluster_size=5 angeben, erhalten Sie 1 Hauptknoten und 4 Worker-Knoten.
Für ML-Jobs definieren Sie die Cluster-Größe deklarativ innerhalb Ihrer Jobdefinition. Durch die Angabe der Cluster-Größe in der Jobdefinition wird sichergestellt, dass beim Start des Jobs die erforderliche Anzahl von Knoten bereitgestellt wird.
Ihr Job-Decorator könnte z. B. Folgendes enthalten:
Wenn Sie Ihren Cluster nicht mehr verwenden möchten, können Sie ihn nach unten skalieren. Weitere Informationen dazu finden Sie unter Bereinigen.
Überwachen mit dem Ray-Dashboard¶
Wenn Sie einen Job von einem Snowflake Notebook aus ausführen, können Sie Ihren Cluster mit dem Ray-Dashboard überwachen. Das Dashboard ist eine Weboberfläche, auf der Sie die Ressourcen, Jobs, Aufgaben und die Leistung des Clusters anzeigen können. Verwenden Sie den folgenden Code zum Abrufen der Dashboard-URL:
Öffnen Sie die URL in einer neuen Browser-Registerkarte und melden Sie sich mit Ihren Snowflake-Anmeldeinformationen an.
Erweiterte Anwendungsfälle¶
In diesem Abschnitt werden erweiterte Ray-Features für komplexe Workloads und für die Migration bestehender Anwendungen behandelt.
Erstellen und Betreiben verteilter Workloads mit Ray¶
Ray bietet Komponenten, mit denen Sie verteilte Workloads erstellen und betreiben können. Dazu gehören grundlegende Komponenten über Ray Core mit wichtigen Primitiven für die Erstellung und die Skalierung dieser Workloads.
Außerdem sind die folgenden Bibliotheken enthalten, mit denen Sie Ihre eigenen Workflows für die Datenvorverarbeitung erstellen können: ML-Training, Hyperparameter-Abstimmung und Modellableitung:
Ray Data: Skalierbare Datenverarbeitung und -transformation
Ray Train: Verteiltes Training und Feinabstimmung von ML-Modellen
Ray Tune: Hyperparameter-Optimierung mit erweiterten Suchalgorithmen
Ray Serve: Modellbereitstellung und -ableitung
In den folgenden Abschnitten wird beschrieben, wie Sie diese Bibliotheken direkt verwenden können, während auf Ray basierende native Snowflake-Schnittstellen zusätzliche Tools zum Erstellen, Bereitstellen und Operationalisieren von Ray-basierten Anwendungen bieten.
Ray Core: Aufgaben und Akteure¶
Ray bietet die folgenden Primitive für verteiltes Computing:
Aufgaben: Zustandslose Funktionen, die extern ausgeführt werden und Werte zurückgeben
Akteure: Zustandsabhängige Klassen, die extern instanziiert und mehrfach aufgerufen werden können
Objekte: Unveränderliche Werte, die im verteilten Objektspeicher von Ray abgelegt sind
Ressourcen: CPU, GPUund kundenspezifische Ressourcenanforderungen für Aufgaben und Akteure
Das folgende Beispiel zeigt, wie Sie mit einfachen Ray-Aufgaben und -Akteuren eine lineare Regression durchführen:
Ray Train: Verteiltes Training¶
Ray Train ist eine Bibliothek, die verteiltes Training und die Feinabstimmung von Modellen ermöglicht. Sie können Ihren Trainingscode auf einem einzelnen Rechner oder auf einem gesamten Cluster ausführen.
Sie können Ray Train sowohl für die Ausführung auf einem einzelnen Knoten als auch für die Ausführung auf mehreren Knoten verwenden.
Für das Training mit mehreren Knoten müssen Sie Folgendes beachten:
Verteilter Speicher für Checkpoints (kein gemeinsames Dateisystem über Knoten hinweg)
Kundenspezifisches Laden von Daten
Manuelle Ressourcenkonfiguration zur Koordinierung zwischen Datenaufnahme und Nutzung von Trainingsressourcen
Verwenden Sie für eine optimierte Benutzererfahrung die Funktionen für optimiertes Training für XGBoost, LightGBM und PyTorch. Auf demselben Ray-Cluster sind diese Funktionen für Folgendes verantwortlich:
Stagingbereichsbasiertes Checkpointing von Snowflake
Native Snowflake-Datenaufnahme
Integrierte Ressourcenzuweisung für Datenaufnahme und Training
Ray Data: Skalierbare Datenverarbeitung¶
Ray Data bietet eine skalierbare, verteilte Datenverarbeitung für ML-Workloads. Durch Streaming-Ausführung und Auswertung im Lazy-Modus können Datensets, die größer als der Clusterspeicher sind, verarbeitet werden.
Bemerkung
Snowflake bietet eine native Integration, um jede Snowflake-Datenquelle in Ray Data umzuwandeln. Weitere Informationen dazu finden Sie auf den Seiten zum Datenkonnektor und zur Ray-Datenerfassung.
Verwenden Sie Ray Data für Folgendes:
Verarbeiten großer Datensets, die nicht in einen Einzelknoten-Speicher passen
Verteilte Vorverarbeitung von Daten und Feature-Engineering
Erstellen von Datenpipelines, die sich in andere Ray-Bibliotheken integrieren lassen
Ray Tune: Verteilte Hyperparameter-Abstimmung¶
Ray Tune bietet eine verteilte Hyperparameter-Optimierung mit erweiterten Suchalgorithmen und Funktionen zum frühzeitigen Stoppen. Für eine besser integrierte und optimierte Erfahrung beim Lesen von Snowflake-Datenquellen verwenden Sie die native Hyperparameter-Optimierung (HPO)-API. Weitere Informationen zur Verwendung der HPO-Optimierung finden Sie unter Optimieren Sie die Hyperparameter eines Modells.
Wenn Sie nach einem anpassbaren Ansatz für eine verteilte HPO-Implementierung suchen, verwenden Sie Ray Tune.
Sie können Ray Tune für die folgenden Anwendungsfälle verwenden:
Parallele Hyperparameter-Optimierung über mehrere Testversionen hinweg
Erweiterte Suchalgorithmen (Bayes’sche Optimierung, populationsbasiertes Training)
Umfassende Hyperparameter-Sweeps, die eine verteilte Ausführung erfordern
Model Serving¶
Für die Bereitstellung von Modellen können Sie die nativen Funktionen von Snowflake nutzen. Weitere Informationen dazu finden Sie unter Einsatz von Modellen für Echtzeit-Inferenz (REST API).
Senden und Verwalten verteilter Anwendungen auf Ray-Clustern¶
Verwenden Sie Ray Jobs, um verteilte Anwendungen auf Ray-Clustern mit besserer Ressourcenisolierung und Lebenszyklusverwaltung zu übermitteln und zu verwalten. Für alle jobbasierten Ausführungen, die Zugriff auf einen Ray-Cluster erfordern, empfiehlt Snowflake die Verwendung eines ML-Jobs, bei dem Sie die Ray-Anwendungslogik definieren können. Für Fälle, in denen Sie direkten Zugriff auf die Ray Job-Schnittstelle benötigen, wie z. B. für die Migration einer bestehenden Implementierung, können Sie das Ray Job-Primitiv verwenden, wie in der Ray-Dokumentation beschrieben.
Verwenden Sie Ray-Jobs für:
ML-Produktions-Pipelines und geplante Workflows
Zeitintensive Workloads, die Fehlertoleranz erfordern
Batchverarbeitung und Verarbeitung großer Datenmengen
Skalieren von Ray-Clustern mit Optionen¶
Über ein Snowflake Notebook können Sie Ihre Ray-Cluster so skalieren, dass sie den Verarbeitungsanforderungen genau entsprechen. Ein Cluster besteht aus einem Hauptknoten (Koordinator) und Worker-Knoten (für die Aufgabeausführung).
Ressourcenüberwachung¶
Bereinigen¶
Wenn Sie mit dem Cluster fertig sind, können Sie ihn nach unten skalieren, um zusätzliche Kosten zu vermeiden. Verwenden Sie zum Herunterskalieren den folgenden Code: