Ray für KI-Laufzeitumgebungen

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:

Schnittstelle Nodes Starten von Ray
Notebook Der einzelne Knoten, der mit dem Notizbuch verbunden ist Rufen Sie ray_init() aus dem AI Runtime SDK auf (databricks.air)
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 den AI Runtime-GPU-Rechenressourcen verbunden ist, verwenden Sie ray_init() aus dem Databricks AI Runtime SDK, um Ray auf dem angeschlossenen Knoten zu starten:

from databricks.air 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. In Version 5 importiert man es von databricks.air statt von serverless_gpu. 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

Example 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 Ray-Workloads mit einem einzelnen Knoten. In der Workload-Konfiguration geben Sie ein festes accelerator_type und num_acceleratorsan. Das Qwen2.5-3B Ray Train-Rezept enthält 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:

  • Er startet den Ray-Kopf auf dem Knoten und führt den konfigurierten Eingangspunkt aus.
  • 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

Example Description
Qwen2.5-3B Feinabstimmung mit Ray Train Feinjustiere Qwen2.5-3B mit einem verteilten Daten-Parallel-Worker pro GPU auf einem 8x H100-Knoten.
Batch-Inferenz mit Ray Data und vLLM Generiere Antworten mit Qwen2.5-7B-Instruct und schreibe die Ergebnisse als Parquet in ein Volume von Unity Catalog.

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:

  1. Wählen Sie ein Notebook für interaktive Entwicklung oder die Databricks-CLI für übermittelte Jobs.
  2. Weisen Sie die vorhandenen Clusterressourcen einem KI-Runtime-Beschleunigertyp und einer Beschleunigeranzahl zu. Siehe Hardware.
  3. Ersetzen Sie den bestehenden Clusterstart durch ray_init() in einem Notebook oder das dokumentierte Bootstrap-Skript in einer Databricks-CLI-Workload.
  4. Deklarieren Sie die Python-Abhängigkeiten der Workload und aktualisieren Sie die Daten-, Checkpoint-, Modell- und Ausgabepfade.
  5. 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.

Limitations

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.
  • Ray-Dashboard-Zugriff über den Azure Databricks Driver Proxy ist nur für Notebook-Workloads verfügbar.
  • Ray läuft auf einem einzelnen Knoten, sowohl in Notebooks als auch in Databricks CLI-Workloads.

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.