Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Important
Dieses Feature befindet sich in der Public Preview.
Hinweis
Wenn du Ray auf Databricks Classic Compute mit Databricks Runtime ML verwendest, siehe Ray on Databricks.
Ray ist ein Open Source-Framework zur Skalierung von Python-Workloads. Man kann Ray auf AI Runtime ausführen, ohne die zugrunde liegende GPU-Infrastruktur bereitzustellen oder verwalten zu müssen.
Warum Ray mit AI Runtime verwenden?
Ray wird häufig verwendet, um Python-Workloads wie Modelltraining, Batch-Inferenz, Datenverarbeitung und Hyperparameter-Optimierung zu verteilen. Im KI-Runtime kann Ray auf Daten in Unity-Katalog-Volumes zugreifen, Experimente mit MLflow verfolgen und sie als Teil von Produktionsworkflows ausführen.
Man kann gängige Ray-Bibliotheken wie Ray Core, Ray Data, Ray Train und Ray Tune in AI Runtime verwenden. Bestehende Ray-Workloads können weiterhin die Standard-APIs der Bibliotheken verwenden.
Wie Ray mit AI Runtime funktioniert
Jede Ray-Anwendung läuft auf einem Ray-Cluster, der einen oder mehrere Knoten enthalten kann. AI Runtime stellt die Knoten bereit, und Ray verteilt Aufgaben und Akteure auf deren verfügbaren CPU- und GPU-Ressourcen. Wie man Ray startet, hängt vom Ausführungsinterface ab:
| Interface | Nodes | Starten von Ray |
|---|---|---|
| Notebook | Der einzelne Knoten, der mit dem Notizbuch verbunden ist | Aufruf ray_init() aus dem Paket serverless_gpu |
| Databricks-CLI | Eine feste Menge von einem oder mehreren Knoten | Starte den Head auf Node 0 und verbinde die übrigen Nodes als Worker mit einem wiederverwendbaren Bootstrap-Skript |
Ray in Notizbüchern verwenden
Wenn Ihr Notebook mit einer AI Runtime-GPU-Recheninstanz verbunden ist, verwenden Sie ray_init() aus dem Paket serverless_gpu, um Ray auf dem angeschlossenen Knoten zu starten:
from serverless_gpu import ray_init
ray_init()
ray_init() ruft die Standard-API ray.init() auf, konfiguriert das Ray-Dashboard für den Zugriff über den Databricks-Treiber-Proxy und druckt die Dashboard-URL in der Notebook-Ausgabe aus. Nutze das Dashboard, um Ray-Jobs, Aufgaben, Akteure, Logs und Ressourcennutzung während der Ausführung deines Codes zu inspizieren.
Hinweis
ray_init() erfordert Umgebungsversion 5 oder höher. Databricks AI v6 enthält Ray. Wenn du Standard v6 verwendest, installiere Ray, bevor du ray_init() aufrufst. Weitere Informationen finden Sie unter "Einrichten Ihrer Umgebung".
Notebook-Beispiele
| Beispiel | Description |
|---|---|
| Ray Core Hello World | Reiche asynchrone GPU-Aufgaben auf Attached Compute ein, inspiziere die Planung im Ray-Dashboard und rufe die Ergebnisse ab. |
| CIFAR-10-Hyperparameter-Abstimmung mit Ray Tune | Führen Sie gleichzeitig fraktionierte GPU-Versuche für einen PyTorch-Bildklassifikator durch und verwenden Sie den asynchronen Successive Halving-Algorithmus (ASHA), um unterdurchschnittliche Konfigurationen frühzeitig zu verhindern. |
| Qwen2.5-32B Batch-Inferenz mit Ray Data und vLLM | Führen Sie mehrsprachige Batch-Inferenz mit acht persistenten vLLM-Replikaten auf 8 H100-GPUs aus und speichern Sie die Ergebnisse als Parquet in einem Unity-Catalog-Volume. |
Verwende Ray mit der Databricks-CLI
Die Databricks CLI-Befehle für AI Runtime unterstützen Single-Node- und Multi-Node-Ray-Workloads. In der Workload-Konfiguration geben Sie ein festes accelerator_type und das Gesamtergebnis num_acceleratorsan.
Die Ray-Hello-World-Beispiele beinhalten ein wiederverwendbares Bootstrap-Skript. Stelle in der Workload RAY_ENTRYPOINTcommand auf den Pfad deiner Python-Datei ein, und führe das Bootstrap-Skript aus. Das Bootstrap-Skript macht Folgendes:
- Auf Knoten 0 startet er den Ray-Kopf und führt den konfigurierten Einstiegspunkt aus.
- Auf jedem anderen Knoten startet er einen Ray-Worker und hält ihn verbunden, während der Eintrittspunkt läuft.
- Nachdem der Eintrittspunkt beendet ist, stoppt er die Ray-Prozesse.
In der Anwendung verbinden Sie sich mit dem Cluster mit ray.init(address="auto").
Fügen Sie mit der Standardumgebung ray oder das erforderliche Extra, z. B. ray[data], ray[train] oder ray[tune], zu den Workload-Abhängigkeiten hinzu. Databricks AI v6 enthält Ray.
CLI-Beispiele
| Beispiel | Description |
|---|---|
| Ray-Hello-World-Beispiele | Minimale Einzel- und Mehrknoten-Beispiele für Ray Core, Ray Train, Ray Data und Ray Tune, einschließlich des Cluster-Bootstrap-Musters. |
| Verteiltes Training mit Ray Train | Feinjustieren Sie ein großes Sprachmodell über 8 H100-GPUs auf einem einzigen Knoten mit Ray Train und PyTorch. |
| Batch-Inferenz mit Ray Data und vLLM | Führen Sie groß angelegte Batch-Inferenz mit Ray Data für verteiltes Datenladen und vLLM für effiziente Modellbereitstellung durch. |
| Hyperparametersuche mit Ray Tune | Suchen Sie mit Ray Tune die Hyperparameter für die LoRA-Feinabstimmung für Qwen2.5, führen Sie pro GPU einen Versuch aus, und beenden Sie leistungsschwache Versuche mithilfe des ASHA-Schedulers frühzeitig. |
Arbeit mit Daten- und Databricks-Funktionen
Ray-Workloads können auf Daten in Unity-Catalog-Volumes zugreifen, Läufe mit MLflow aufnehmen und als Lakeflow-Jobs-Aufgaben ausführen, die mit Declarative Automation Bundles definiert sind.
Zugriffsdaten im Unity-Katalog
Für tabellarische Daten in einer Unity Catalog-Tabelle verwenden Sie ray.data.read_databricks_tables(), um eine Tabelle zu lesen oder eine SQL-Abfrage über ein Databricks SQL Warehouse auszuführen. Gib die Warehouse-ID, den Katalog und das Schema an, da AI Runtime keine lokale Spark-Sitzung bereitstellt. Du kannst SQL verwenden, um Joins, Aggregationen und Filter durchzuführen, bevor Ray die Ergebnisse verarbeitet.
Für dateibasierte und unstrukturierte Daten verwenden Sie ein Unity-Catalog-Volume. Ray-Worker können über ihre /Volumes/<catalog>/<schema>/<volume>/...-Pfade auf Dateien zugreifen. Zum Beispiel kann Ray Data Parquet-Dateien mit ray.data.read_parquet() lesen und Ergebnisse mit Dataset.write_parquet() schreiben.
Workloads verfolgen und orchestrieren
Verwenden Sie MLflow, um Parameter, Metriken und Artefakte aus einer Ray-Workload zu erfassen. Siehe Experiment-Tracking und Beobachtbarkeit.
Um den Workload zu planen oder ihn mit CPU-Aufgaben zur Datenvorbereitung zu kombinieren, verwenden Sie Lakeflow Jobs und deklarative Automatisierungs-Bundles. Siehe GPU-Workloads planen und Aufgaben zusammenstellen.
Migrieren Sie eine bestehende Ray-Workload
Die Migration einer selbstverwalteten Ray-Workload beinhaltet den Austausch der Infrastrukturkonfiguration und der Service-Integration durch das KI-Runtime-Ausführungsmodell.
Bewerten Sie Ihre Arbeitsauslastung
Überprüfen Sie vor der Migration die Einschränkungen. Bestätigen Sie, dass die Arbeitslast auf einem Cluster mit fester Größe und einem Beschleunigertyp ausgeführt werden kann.
Die Arbeitslast migrieren
Um eine selbstverwaltete Ray-Arbeitslast zu migrieren:
- Wählen Sie ein Notizbuch für interaktive Einzelknotenentwicklung oder die Databricks-CLI für Einzelknoten- oder Mehrknotenjobs.
- Weisen Sie die vorhandenen Clusterressourcen einem KI-Runtime-Beschleunigertyp und einer Beschleunigeranzahl zu. Siehe Hardware-Optionen.
- Ersetzen Sie den bestehenden Cluster-Start durch
ray_init()in einem Notebook oder durch den dokumentierten Bootstrap für Head- und Worker-Knoten in einer Databricks-CLI-Workload. - Deklarieren Sie die Python-Abhängigkeiten der Workload und aktualisieren Sie die Daten-, Checkpoint-, Modell- und Ausgabepfade.
- Validiere die Arbeitslast auf der kleinsten anwendbaren Konfiguration. Bestätigen Sie den Datenzugriff, die Ressourcenanfragen und die Ausgaben, bevor Sie die beabsichtigte feste Topologie testen.
Einschränkungen
Ray in AI Runtime hat folgende Einschränkungen:
- Der Ray-Cluster hat eine feste Anzahl der Knoten für die Dauer einer Arbeitslast. Ray-Cluster-Autoskalierung wird nicht unterstützt.
- Alle Knoten in einer Workload verwenden dasselbe
accelerator_type. Ein Ray-Cluster kann keine separaten CPU- und GPU-Worker-Gruppen enthalten oder CPU- und GPU-Kapazität unabhängig skalieren. - Ein Notebook startet Ray auf dem ihm zugeordneten Einzelknoten. Verwenden Sie die Databricks-CLI für einen Multi-Node-Ray-Cluster.
- Der Zugriff auf das Ray-Dashboard über den Databricks-Treiber-Proxy ist derzeit nur für Notebook-Workloads verfügbar.
Tip
Wenn CPU-Vorbereitung und GPU-Verarbeitung als getrennte Stufen ausgeführt werden können, verwenden Sie einen Multitask-Lakeflow-Job und leiten Sie Daten zwischen den Aufgaben über ein Unity-Catalog-Volume weiter.