Definition Was ist Ray?

Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Ray ist ein auf Open Source Software basierendes Framework, mit dem sich Python-Code und Python-Anwendungen auf verteilten Computing-Architekturen ausführen lassen. Das Framework verteilt die auszuführenden Befehle auf die verschiedenen Rechner und verwaltet die Prozesse. Ray erlaubt das Erstellen hoch skalierbarer Anwendungen und kommt beispielsweise im Machine-Learning-Umfeld zum Einsatz.

Firmen zum Thema

(Bild: © aga7ta - stock.adobe.com)

Ray ist der Name eines unter Apache-2.0-Lizenz stehenden Open-Source-Frameworks. Es stellt eine universelle API und Bibliotheken für das verteilte Ausführen von Python-Programmcode zur Verfügung. Mithilfe des Frameworks lassen sich die Befehle und Prozesse Python-basierter Applikationen oder Services auf mehrere Prozessoren, Rechner, Rechner-Cluster oder auf eine Cloud-Umgebung verteilen. Sowohl auf einzelnen Multicore-Rechnern als auch auf verteilten Rechnerarchitekturen erzielt das Ray-Framework eine hohe Performance. Es sorgt für die verteilte, parallelisierte Ausführung des Codes, erlaubt die einfache Skalierung und ermöglicht ein automatisiertes Management. Für den Python-Code verhält sich das Framework nahezu vollständig transparent, weshalb für verteiltes Computing kaum Anpassungen oder Erweiterungen des Codes notwendig sind.

Anwender können die Leistung der Applikation und ihre Speichernutzung über Dashboards überwachen. Das erste Major Release von Ray erschien im Jahr 2020. Entstanden ist das Framework aus einer Arbeit eines Entwickler-Teams an der Universität Berkeley. Das Team gründete ein eigenes Start-up. Typische Anwendungsbereiche von Ray sind das Machine Learning und bestärkendes Lernen. Zum Framework gehören mehrere Bibliotheken wie Tune, RLlib, RaySGD oder Ray Serve. Installiert wird Ray aus dem Python Package Index über pip (Paketverwaltungsprogramm für Python-Pakete). Das aktuelle Release des Frameworks ist Ray 1.2.0 (Stand Anfang 2021).

Funktionsweise des Frameworks Ray

Ray stellt die notwendigen Funktionen für die Verteilung des Python-Programmcodes zur Verfügung und kümmert sich unter anderem um das Speichermanagement und das Fehlermanagement. Die Architektur von Ray ist für eine hohe Performance ausgelegt. Sie ist horizontal skalierbar, fehlertolerant und benötigt wenig Overhead. Sie basiert auf einem dynamischen Graphen-Modell, das aus Einzeltasks besteht. Eine Python-Applikation lässt sich mithilfe eines dynamisch generierten Graphen, bestehend aus verschiedenen voneinander abhängigen Tasks, abbilden. Ein Task repräsentiert einen Funktionsaufruf und ist zustandslos.

Sogenannte Actors sind für zustandsbehaftete Prozesse vorgesehen. Sobald eine Applikation gestartet wird, wird der Graph dynamisch erstellt. Die Ausführung einzelner Tasks und deren Ergebnisse kann neue Tasks erzeugen, die die Ergebnisse als Input verwenden. Eine zentralisierte Instanz mit der Bezeichnung Global Control Store (GCS) übernimmt die Kontrolle des Gesamtsystems. Der GCS hält die Metadaten auf dem System-Level, über die sich beispielsweise die Objekte und Aktoren lokalisieren lassen, bereit und managt den Status der Einzelkomponenten.

Ist das Framework installiert und gestartet, so übernehmen Worker-Prozesse die Ausführung der Python-Funktionen auf den verschiedenen Rechnern oder Prozessoren. Scheduler weisen den Worker-Prozessen die einzelnen Tasks zu. Gleichzeitig richtet Ray einen gemeinsam nutzbaren Objekt-Store ein, über den sich große Objekte für die Nutzung durch die verschiedenen Worker-Prozesse zur Verfügung stellen lassen. Eine In-Memory-Datenbank speichert Metadaten, die beispielsweise für die erneute Ausführung bestimmter Tasks beim Ausfall einzelner Rechner benötigt werden.

Bestandteile des Frameworks Ray

Zum Framework Ray gehören mehrere Bibliotheken, die verschiedene Aufgaben im Umfeld des Machine Learnings übernehmen und spezielle Machine-Learning-Problemstellungen lösen. Diese Bibliotheken sind:

  • Tune
  • RLlib
  • RaySGD
  • Ray Serve

Tune ist eine Bibliothek für skalierbares Tuning der Hyperparameter. Die Bibliothek unterstützt zahlreiche Machine-Learning- und Deep-Learning-Frameworks wie PyTorch, MXNet, TensorFlow oder Keras. Die Library RLlib ist speziell für skalierbares bestärkendes Lernen vorgesehen. RaySGD ist eine Bibliothek für verteilte Training-Wrapper und Ray Server für skalierbares Modell-Serving.

Die Vorteile von Ray

Der Einsatz des Frameworks Ray bietet zahlreiche Vorteile. Python-Programmcode für Anwendungen oder Services lässt sich auf einzelnen Rechnern, Multicore-Maschinen und auf verteilten Computing- oder Cloud-Architekturen ausführen, ohne dass größere Änderungen des Codes notwendig sind. Anwendungen sind horizontal skalierbar und bieten eine hohe Performance. Weitere Vorteile sind:

  • kostenlos verfügbare Open Source Software
  • spezielle Bibliotheken für Machine-Learning-Aufgaben und -Probleme enthalten
  • Unterstützung zahlreicher Machine-Learning- und Deep-Learning-Frameworks wie MXNet, PyTorch, TensorFlow oder Keras
  • hohe Performance und gute Fehlertoleranz
  • vollständig in die Python-Welt integriert

(ID:47242772)

Über den Autor