Zum Hauptinhalt springen

Im   ersten Teil  dieses Beitrags haben wir die gesamte Infrastruktur in der Google Cloud eingerichtet, die als Umgebung benötigt wird, um ein Ray-Cluster zu starten. In diesem Teil werden wir die eigentliche Cluster-Konfiguration vornehmen, ein Cluster starten und dieses ein Bild von einer Mandelbrotmenge berechnen lassen.

YAML-Cluster-Konfiguration

Um die YAML-Datei für die Cluster-Konfiguration herunterzuladen, gib den folgenden Befehl auf dem Client-Rechner ein:

wget https://raw.githubusercontent.com/Allgoerithm/mandelbrot_ray/main/ray-gcp.yaml

Das ist im Wesentlichen die großartige Beispieldatei, die die Ray-Dokumentation anbietet und die bereits eine Menge Erklärungen in den Kommentaren enthält. Ich habe ein paar Änderungen vorgenommen, und auch Du wirst die Datei an einigen Stellen anpassen müssen:

  • In Zeile 44 legen wir die ID des Google-Cloud-Projekts fest, das wir verwenden. Derzeit ist es nur ein Platzhalter: <your-project-ID>. Stelle sicher, dass Du ihn überall ersetzt (er kommt dreimal vor), bevor Du die Datei verwendest.
  • In Zeile 45 habe ich use_internal_ips auf true gesetzt. Zum Zeitpunkt der Erstellung dieses Artikels wird diese Funktion noch nicht in der Ray-Dokumentation behandelt (aber bald!); sie funktioniert trotzdem einwandfrei. Die Vorteile, die diese Einstellung für die Sicherheit bringt, sind im Abschnitt über Netzwerke im ersten Teil des Blogbeitrags erklärt.
  • In Zeile 94 habe ich min_workers von 0 auf 3 geändert. Ray wird mit einem Autoscaler geliefert, sodass Du grundsätzlich ohne Worker beginnen und darauf vertrauen kannst, dass Ray herausfindet, wie viele für die Aufgabe benötigt werden. Wenn Du mit virtuellen Maschinen arbeitest, gibt es aber einen Haken: Das Hochfahren eines neuen Workers dauert etwa zwei Minuten. Bei kleinen Rechenaufträgen würdest Du also einen erheblichen Teil der gesamten Rechenzeit damit verbringen, auf neue Worker zu warten. Das ist der Grund, warum ich hier standardmäßig drei Worker starte.
  • In den Zeilen 114 bis 116 ändern wir die Netzwerkschnittstelle zu unserem Subnetz im dedizierten VPN für Ray. Wenn Du den Namen des Subnetzes oben geändert hast, musst Du das auch hier tun.
  • In Zeile 191 fügen wir dem Befehl „ray start“ für den Head Node eine weitere Option hinzu. Damit wird sichergestellt, dass wir nicht nur vom Head Node selbst, sondern auch von anderen Rechnern aus auf das Dashboard zugreifen können. Wenn Du die Webvorschau der Google Cloud Shell verwenden möchtest, um das Dashboard anzuzeigen, ist das notwendig

Testen des neuen Ray-Clusters

Jetzt, da wir unsere YAML-Datei erstellt haben, können wir sie verwenden, um ein Ray-Cluster zu starten. Gib dafür einfach den folgenden Befehl in der Befehlszeile des Client-Rechners ein:

ray up ray-gcp.yaml

Du wirst nun aufgefordert, zu bestätigen, dass ein neues Cluster gestartet wird. Wechsle nun zur Registerkarte „VM-Instanzen“ Deiner Cloud-Konsole und Du wirst sehen, dass die VM für den Head Node des Clusters gestartet wird. Wenn der Start aufgrund von SSH-Problemen fehlschlägt, versuch es einfach erneut. Verursacht wird der Fehlschlag durch ein offenes Problem mit SSH-Timeouts – der einfachste Weg, das zu umgehen, ist ein erneuter Versuch, spätestens beim zweiten Mal funktioniert es.

In der Zwischenzeit kann die Ausgabe auf der Client-VM darauf hinweisen, dass der Client immer noch auf die Herstellung der SSH-Verbindung wartet. Es ist normal, dass das ein wenig dauert, aber normalerweise sind es weniger als 60 Sekunden. Dann wird die Software auf dem Head Node installiert, und anschließend werden die drei Worker hochgefahren.

Jetzt wollen wir uns das Ray-Dashboard für unser neues Cluster öffnen. Das Dashboard ist eine Website, die auf dem Head Node des Clusters bereitgestellt wird. Um darauf zuzugreifen, benötigen wir den Namen der VM des Hauptknotens. Da der Head Node keine externe IP hat und nicht über das Internet erreichbar ist, müssen wir einen Tunnel über IAP aufbauen und die Webvorschau verwenden, die in die Google Cloud Shell integriert ist. Öffne dafür die Cloud Shell und gib Folgendes ein:

gcloud compute ssh --project <Dein-Projektname> --zone <Deine-Zone> <Name der Head Node VM> -- -L 8265:localhost:8265

Die magische Zahl 8265 ist der Standardport des Ray-Dashboards. Der Befehl stellt einen IAP-Tunnel zwischen dem Hauptknoten und der Google-Cloud-Shell-Instanz her, wobei Port 8265 des Head Nodes auf der Cloud-Shell-Instanz gespiegelt wird. Wenn Du nun auf das Icon für die Webvorschau in der oberen Leiste der Cloud Shell klickst (siehe Abbildung), öffnet sich ein neues Browserfenster und das Ray-Dashboard zeigt Dir einen Überblick über die Arbeitslast auf jedem Knoten des Clusters.

Jetzt geben wir ihm etwas zu tun! Lade ein kleines Python-Programm zur Berechnung von Bildern der Mandelbrotmenge herunter, indem Du den folgenden Befehl in die Befehlszeile der Client-VM eingibst:

wget https://raw.githubusercontent.com/Allgoerithm/mandelbrot_ray/main/python/mandelbrot_ray.py

... und übermittle es als Job an das Cluster:

ray submit ray-gcp.yaml mandelbrot.py

Beachte, dass die YAML-Datei auch bei diesem Befehl das erste Argument ist. Ray-Befehle verwenden die YAML-Datei zur Identifizierung des entsprechenden Clusters. Auf diese Weise kannst Du problemlos mehrere Cluster vom selben Client aus verwalten, wobei jedes Cluster einer YAML-Datei entspricht.

Sobald Du den Submit-Befehl erteilt hast, siehst Du auf dem Ray-Dashboard, wie die CPU- und RAM-Auslastung der Cluster-Maschinen ansteigt und nach Beendigung des Auftrags wieder sinkt. Wenn alles gut gegangen ist, hat unser Ray-Job ein schönes Bild eines Teils der Mandelbrotmenge erzeugt. Wir laden es vom Cluster auf die Client-VM herunter:

ray rsync-down ray-gcp.yaml mandelbrot.jpg mandelbrot.jpg

Über das SSH-in-Browser-Fenster der Client-VM kannst Du die Datei direkt auf Deinen lokalen Rechner herunterladen (Pfeil-nach-unten-Symbol oben rechts im Fenster). Ich hoffe, das Bild gefällt Dir!

Und jetzt einige reale Workloads für maschinelles Lernen!

Jetzt, wo Dein erstes Ray-Cluster auf GCP sicher läuft, bist Du bereit, die neuen Möglichkeiten zu erkunden. Ray entwickelt sich schnell zur ersten Adresse für Machine-Learning-Anwendungen. Schau Dir die Ray-Dokumentation an, um herauszufinden, wie Ray Dir bei Deinem nächsten Machine-Learning-Workload helfen kann.

 

 

 

Du hast Fragen dazu? Ich freue mich auf den Austausch!

Kontakt aufnehmen

 

 

 

München
b.telligent Group Holding GmbH
Walter-Gropius-Straße 17
80807 München


Zürich
b.telligent Schweiz GmbH
Kanzleistrasse 57
8004 Zürich