Ray-Cluster auf der Gemini Enterprise Agent Platform erstellen

Dieses Dokument enthält eine Anleitung zum Einrichten eines Ray-Clusters auf der Gemini Enterprise Agent Platform, um verschiedenen Anforderungen gerecht zu werden. Informationen zum Erstellen Ihres Images finden Sie unter Benutzerdefiniertes Image. Einige Unternehmen können private Netzwerke verwenden. In diesem Dokument wird die Private Service Connect-Schnittstelle für Ray in Vertex AI behandelt. Ein weiterer Anwendungsfall ist der Zugriff auf Remotedateien, als wären sie lokal (siehe Ray in Agent Platform Network File System).

Übersicht

Folgende Themen werden behandelt:

Ray-Cluster erstellen

Sie können die Google Cloud Console oder das Agent Platform SDK für Python verwenden, um einen Ray-Cluster zu erstellen. Ein Cluster kann bis zu 2.000 Knoten haben. In einem Worker-Pool liegt die Obergrenze bei 1.000 Knoten. Es gibt keine Beschränkung für die Anzahl der Worker-Pools. Eine große Anzahl von Worker-Pools, z. B. 1.000 Worker-Pools mit jeweils einem Knoten, kann sich jedoch negativ auf die Clusterleistung auswirken.

Lesen Sie zuerst die Übersicht zu Ray in der Gemini Enterprise Agent Platform und richten Sie alle erforderlichen Tools ein.

Das Starten eines Ray-Clusters auf der Agent Platform kann nach dem Erstellen des Clusters 10 bis 20 Minuten dauern.

Console

Gemäß der Best Practice für OSS Ray wird die Festlegung der logischen CPU-Anzahl auf 0 auf dem Ray-Hauptknoten erzwungen, um zu vermeiden, dass Arbeitslasten auf dem Hauptknoten ausgeführt werden.

  1. Rufen Sie in der Google Cloud Console die Seite „Ray in Agent Platform“ auf.

    Zur Seite „Ray in Agent Platform“

  2. Klicken Sie auf Cluster erstellen , um den Bereich Cluster erstellen zu öffnen.

  3. Prüfen oder ersetzen Sie für jeden Schritt im Bereich Cluster erstellen die Standardclusterinformationen. Klicken Sie auf Weiter , um die einzelnen Schritte abzuschließen:

    1. Geben Sie unter Name und Region einen Namen an und wählen Sie einen Standort für den Cluster aus.

    2. Geben Sie für Compute-Einstellungen die Konfiguration des Hauptknotens des Ray-Clusters auf der Gemini Enterprise Agent Platform an, einschließlich Maschinentyp, Beschleunigertyp und Anzahl, Laufwerkstyp und -größe und Replikatanzahl. Optional können Sie einen benutzerdefinierten Image-URI hinzufügen, um ein benutzerdefiniertes Container-Image anzugeben, um Python-Abhängigkeiten hinzuzufügen, die nicht vom Standard-Container-Image bereitgestellt werden. Weitere Informationen finden Sie unter Benutzerdefiniertes Image.

      Unter Erweiterte Optionen haben Sie folgende Möglichkeiten:

      • Geben Sie einen eigenen Verschlüsselungsschlüssel an.
      • Geben Sie ein benutzerdefiniertes Dienstkonto an.
      • Deaktivieren Sie die Erfassung von Messwerten, wenn Sie die Ressourcenstatistiken Ihrer Arbeitslast während des Trainings nicht beobachten müssen.
    3. Optional: Wenn Sie einen privaten Endpunkt für Ihren Cluster bereitstellen möchten, empfehlen wir die Verwendung von Private Service Connect. Weitere Informationen finden Sie unter Private Service Connect-Schnittstelle für Ray in Vertex AI.

  4. Klicken Sie auf Erstellen.

Ray in Agent Platform SDK

Gemäß der Best Practice für OSS Ray wird die Festlegung der logischen CPU-Anzahl auf 0 auf dem Ray-Hauptknoten erzwungen, um zu vermeiden, dass Arbeitslasten auf dem Hauptknoten ausgeführt werden.

Verwenden Sie in einer interaktiven Python-Umgebung Folgendes, um den Ray-Cluster auf der Gemini Enterprise Agent Platform zu erstellen:

import ray
import vertex_ray
from google.cloud import aiplatform
from vertex_ray import Resources
from vertex_ray.util.resources import NfsMount

# Define a default CPU cluster, machine_type is n1-standard-16, 1 head node and 1 worker node
head_node_type = Resources()
worker_node_types = [Resources()]

# Or define a GPU cluster.
head_node_type = Resources(
  machine_type="n1-standard-16",
  node_count=1,
  custom_image="us-docker.pkg.dev/my-project/ray-custom.2-9.py310:latest",  # Optional. When not specified, a prebuilt image is used.
)

worker_node_types = [Resources(
  machine_type="n1-standard-16",
  node_count=2,  # Must be >= 1
  accelerator_type="NVIDIA_TESLA_T4",
  accelerator_count=1,
  custom_image="us-docker.pkg.dev/my-project/ray-custom.2-9.py310:latest",  # When not specified, a prebuilt image is used.
)]
# Optional. Create cluster with Network File System (NFS) setup.
nfs_mount = NfsMount(
    server="10.10.10.10",
    path="nfs_path",
    mount_point="nfs_mount_point",
)
aiplatform.init()
# Initialize Agent Platform to retrieve projects for downstream operations.
# Create the Ray cluster on Agent Platform
CLUSTER_RESOURCE_NAME = vertex_ray.create_ray_cluster(
  head_node_type=head_node_type,
  network=NETWORK, #Optional
  worker_node_types=worker_node_types,
  python_version="3.10",  # Optional
  ray_version="2.47",  # Optional
  cluster_name=CLUSTER_NAME, # Optional
  service_account=SERVICE_ACCOUNT,  # Optional
  enable_metrics_collection=True,  # Optional. Enable metrics collection for monitoring.
  labels=LABELS,  # Optional.
  nfs_mounts=[nfs_mount],  # Optional.

)

Wobei:

  • CLUSTER_NAME: Ein Name für den Ray-Cluster auf der Gemini Enterprise Agent Platform , der in Ihrem Projekt eindeutig sein muss.

  • NETWORK: Optional. Der vollständige Name Ihres VPC -Netzwerks im Format projects/PROJECT_ID/global/networks/VPC_NAME. Wenn Sie für Ihren Cluster einen privaten Endpunkt anstelle eines öffentlichen Endpunkts festlegen möchten, geben Sie ein VPC-Netzwerk an, das mit Ray in Agent Platform verwendet werden soll. Weitere Informationen finden Sie unter Private und öffentliche Konnektivität.

  • VPC_NAME: Optional. Die VPC, auf der die VM ausgeführt wird.

  • PROJECT_ID: Ihre Google Cloud Projekt-ID. Sie finden die Projekt-ID auf der Google Cloud Console Begrüßungs seite.

  • SERVICE_ACCOUNT: Optional. Das Dienstkonto, mit dem Ray Anwendungen im Cluster ausgeführt werden sollen. Erteilen Sie die erforderlichen Rollen.

  • LABELS: Optional. Die Labels mit benutzerdefinierten Metadaten, die zum Organisieren von Ray-Clustern verwendet werden . Labelschlüssel und -werte dürfen maximal 64 Zeichen (Unicode-Codepunkte) haben und dürfen nur Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten. Internationale Zeichen sind zulässig. Weitere Informationen und Beispiele für Labels finden Sie unter https://goo.gl/xmQnxf.

Die folgende Ausgabe wird angezeigt, bis sich der Status in RUNNING ändert:

[Ray on Agent Platform]: Cluster State = State.PROVISIONING
Waiting for cluster provisioning; attempt 1; sleeping for 0:02:30 seconds
...
[Ray on Agent Platform]: Cluster State = State.RUNNING

Wichtige Hinweise:

  • Der erste Knoten ist der Hauptknoten.

  • TPU-Maschinentypen werden nicht unterstützt.

Verwaltung des Lebenszyklus

Während des Lebenszyklus eines Ray-Clusters auf der Gemini Enterprise Agent Platform ist jede Aktion mit einem Status verknüpft. In der folgenden Tabelle sind der Abrechnungsstatus und die Verwaltungsoption für jeden Status zusammengefasst. In der Referenzdokumentation finden Sie eine Definition für jeden dieser Status.

Aktion Status In Rechnung gestellt? Aktion „Löschen“ verfügbar? Aktion „Abbrechen“ verfügbar?
Der Nutzer erstellt einen Cluster BEREITSTELLUNG Nein Nein Nein
Der Nutzer skaliert manuell nach oben oder unten Wird aktualisiert Ja, entsprechend der Echtzeitgröße Ja Nein
Der Cluster wird ausgeführt WIRD AUSGEFÜHRT Ja Ja Nicht zutreffend – Sie können löschen
Der Cluster wird automatisch nach oben oder unten skaliert Wird aktualisiert Ja, entsprechend der Echtzeitgröße Ja Nein
Der Nutzer löscht den Cluster WIRD BEENDET Nein Nein Nicht zutreffend – wird bereits angehalten
Der Cluster wechselt in den Status „Fehler“ FEHLER Nein Ja Nicht zutreffend – Sie können löschen
Nicht zutreffend Status nicht angegeben Nein Ja Nicht zutreffend

Benutzerdefiniertes Image (optional)

Vordefinierte Images sind für die meisten Anwendungsfälle geeignet. Wenn Sie Ihr Image erstellen möchten, verwenden Sie die vordefinierten Images für Ray in der Gemini Enterprise Agent Platform als Basis-Image. In der Docker-Dokumentation erfahren Sie, wie Sie Ihre Images aus einem Basis-Image erstellen.

Diese Basis-Images enthalten eine Installation von Python, Ubuntu und Ray. Sie enthalten auch Abhängigkeiten wie:

  • python-json-logger
  • google-cloud-resource-manager
  • ca-certificates-jav
  • libatlas-base-dev
  • liblapack-dev
  • g++, libio-all-perl
  • libyaml-0-2.

Private und öffentliche Konnektivität

Standardmäßig erstellt Ray in Agent Platform einen öffentlichen, sicheren Endpunkt für die interaktive Entwicklung mit dem Ray Client in Ray-Clustern auf der Gemini Enterprise Agent Platform. Verwenden Sie öffentliche Verbindungen für Entwicklungs- oder sitzungsspezifische Anwendungsfälle. Dieser öffentliche Endpunkt ist über das Internet zugänglich. Nur autorisierte Nutzer, die mindestens die Berechtigungen der Nutzerrolle für die Gemini Enterprise Agent Platform für das Nutzerprojekt des Ray-Clusters haben, können auf den Cluster zugreifen.

Wenn Sie eine private Verbindung zu Ihrem Cluster benötigen oder VPC Service Controls verwenden, wird VPC-Peering für Ray-Cluster auf der Gemini Enterprise Agent Platform unterstützt. Auf Cluster mit einem privaten Endpunkt kann nur von einem Client in einem VPC-Netzwerk aus zugegriffen werden, das mit der Gemini Enterprise Agent Platform verbunden ist.

Wenn Sie private Verbindungen mit VPC-Peering für Ray in Agent Platform einrichten möchten, wählen Sie beim Erstellen des Clusters ein VPC-Netzwerk aus. Das VPC-Netzwerk erfordert eine Verbindung für den Zugriff auf private Dienste zwischen Ihrem VPC-Netzwerk und der Gemini Enterprise Agent Platform. Wenn Sie Ray in Agent Platform in der Console verwenden, können Sie die Verbindung für den Zugriff auf Ihre privaten Dienste beim Erstellen des Clusterseinrichten.

Wenn Sie VPC Service Controls und VPC-Peering mit Ray-Clustern auf der Agent Platform verwenden möchten, ist eine zusätzliche Einrichtung erforderlich, um das Ray-Dashboard und die interaktive Shell zu verwenden. Folgen Sie der Anleitung unter Ray-Dashboard und interaktive Shell mit VPC-SC + VPC-Peering , um die Einrichtung der interaktiven Shell mit VPC-SC und VPC-Peering in Ihrem Nutzerprojekt zu konfigurieren.

Nachdem Sie Ihren Ray-Cluster auf der Gemini Enterprise Agent Platform erstellt haben, können Sie mit dem Hauptknoten über das Agent Platform SDK für Python eine Verbindung herstellen. Die verbindende Umgebung, z. B. eine Compute Engine-VM oder eine Vertex AI Workbench-Instanz, muss sich im VPC-Netzwerk befinden, das mit der Gemini Enterprise Agent Platform verbunden ist. Beachten Sie, dass eine Verbindung für den Zugriff auf private Dienste eine begrenzte Anzahl von IP-Adressen hat, was zu einer Erschöpfung der IP-Adressenführen kann. Daher empfehlen wir, private Verbindungen für Cluster mit langer Laufzeit zu verwenden.

Private Service Connect-Schnittstelle für Ray in der Gemini Enterprise Agent Platform

Der ausgehende und eingehende Traffic über die Private Service Connect-Schnittstelle wird in Ray-Clustern auf der Gemini Enterprise Agent Platform unterstützt.

Wenn Sie den ausgehenden Traffic über die Private Service Connect-Schnittstelle verwenden möchten, folgen Sie der Anleitung im folgenden Abschnitt. Wenn VPC Service Controls nicht aktiviert ist, verwenden Cluster mit ausgehendem Traffic über die Private Service Connect-Schnittstelle den sicheren öffentlichen Endpunkt für eingehenden Traffic mit dem Ray Client.

Wenn VPC Service Controls aktiviert ist, wird standardmäßig eingehender Traffic über die Private Service Connect-Schnittstelle mit ausgehendem Traffic über die Private Service Connect-Schnittstelle verwendet. Wenn Sie mit dem Ray Client eine Verbindung herstellen oder Jobs von einem Notebook für einen Cluster mit eingehendem Traffic über die Private Service Connect-Schnittstelle senden möchten, muss sich das Notebook in der VPC und im Subnetzwerk des Nutzerprojekts befinden. Weitere Informationen zum Einrichten von VPC Service Controls finden Sie unter VPC Service Controls mit der Gemini Enterprise Agent Platform.

Diagramm zum Aktivieren der Private Service Connect-Schnittstelle

Private Service Connect-Schnittstelle aktivieren

Folgen Sie der Anleitung unter Ressourcen einrichten , um Ihre Private Service Connect-Schnittstelle einzurichten. Nachdem Sie Ihre Ressourcen eingerichtet haben, können Sie die Private Service Connect-Schnittstelle in Ihrem Ray-Cluster auf der Gemini Enterprise Agent Platform aktivieren.

Console

  1. Beim Erstellen des Clusters und nach dem Angeben von Name und Region und Compute-Einstellungen wird die Option Netzwerk angezeigt.

    Netzwerk in der Konsole angeben

  2. Richten Sie einen Netzwerkanhang mit einer der folgenden Methoden ein:

    • Verwenden Sie den NETWORK_ATTACHMENT_NAME Namen, den Sie beim Einrichten Ihrer Ressourcen für Private Service Connect angegeben haben.
    • Erstellen Sie einen neuen Netzwerkanhang, indem Sie im Drop-down-Menü auf die Schaltfläche Netzwerkanhang erstellen klicken.

    Neues Netzwerk in der Konsole erstellen

  3. Klicken Sie auf Netzwerkanhang erstellen.

  4. Geben Sie in der angezeigten Unteraufgabe einen Namen, ein Netzwerk und ein Subnetzwerk für den neuen Netzwerkanhang an.

    Netzwerkanhang

  5. Klicken Sie auf Erstellen.

Ray in Agent Platform SDK

Das Ray in Agent Platform SDK ist Teil des Agent Platform SDK für Python. Informationen zum Installieren oder Aktualisieren des Agent Platform SDK für Python finden Sie unter Agent Platform SDK für Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Agent Platform SDK for Python API.

from google.cloud import aiplatform
import vertex_ray

# Initialization
aiplatform.init()

# Create a default cluster with network attachment configuration

psc_config = vertex_ray.PscIConfig(network_attachment=NETWORK_ATTACHMENT_NAME)
cluster_resource_name = vertex_ray.create_ray_cluster(
   psc_interface_config=psc_config,
)

Wobei:

  • NETWORK_ATTACHMENT_NAME: Der Name, den Sie beim Einrichten Ihrer Ressourcen für Private Service Connect in Ihrem Nutzerprojekt angegeben haben.

Ray in Agent Platform Network File System (NFS)

Wenn Sie Remotedateien für Ihren Cluster verfügbar machen möchten, stellen Sie NFS-Freigaben (Network File System) bereit. Ihre Jobs können dann auf Remotedateien zugreifen, als wären sie lokal, was einen hohen Durchsatz und eine niedrige Latenz ermöglicht.

VPC-Einrichtung

Es gibt zwei Möglichkeiten, VPC einzurichten:

  1. Erstellen Sie einen Netzwerkanhang für die Private Service Connect-Schnittstelle. (Empfohlen)
  2. Richten Sie VPC-Netzwerk-Peering ein.

NFS-Instanz einrichten

Weitere Informationen zum Erstellen einer Filestore-Instanz finden Sie unter Instanz erstellen. Wenn Sie die Methode mit der Private Service Connect-Schnittstelle verwenden, müssen Sie beim Erstellen des Dateispeichers nicht den Modus für den Zugriff auf private Dienste auswählen.

Network File System (NFS) verwenden

Wenn Sie das Network File System verwenden möchten, geben Sie entweder ein Netzwerk oder einen Netzwerkanhang an (empfohlen).

Console

  1. Geben Sie im Schritt „Netzwerk“ auf der Seite „Erstellen“ entweder ein Netzwerk oder einen Netzwerkanhang an. Klicken Sie dazu im Bereich „Network File System (NFS)“ auf NFS-Bereitstellung hinzufügen und geben Sie eine NFS-Bereitstellung an (Server, Pfad und Bereitstellungspunkt).

    Feld Beschreibung
    server Die IP-Adresse Ihres NFS-Servers. Dies muss eine private Adresse in Ihrer VPC sein.
    path Der NFS-Freigabepfad. Dies muss ein absoluter Pfad sein, der mit / beginnt.
    mountPoint Der lokale Bereitstellungspunkt. Dies muss ein gültiger UNIX-Verzeichnisname sein. Wenn der lokale Bereitstellungspunkt beispielsweise sourceData lautet, geben Sie den Pfad /mnt/nfs/ sourceData aus Ihrer Trainings-VM-Instanz an.

    Weitere Informationen finden Sie unter Hier geben Sie Rechenressourcen an.

  2. Geben Sie einen Server, einen Pfad und einen Bereitstellungspunkt an. NFS-Dateisystem

  3. Klicken Sie auf Erstellen. Dadurch wird der Ray-Cluster erstellt.

Ray-Dashboard und interaktive Shell mit VPC-SC + VPC-Peering

  1. Konfigurieren Sie peered-dns-domains.

    {
      VPC_NAME=NETWORK_NAME
      REGION=LOCATION
      gcloud services peered-dns-domains create training-cloud \
      --network=$VPC_NAME \
      --dns-suffix=$REGION.aiplatform-training.cloud.google.com.
    
      # Verify
      gcloud beta services peered-dns-domains list --network $VPC_NAME;
    }
        
    • NETWORK_NAME: In das Netzwerk mit Peering ändern.

    • LOCATION: Gewünschter Standort (z. B. us-central1)

  2. Konfigurieren Sie DNS managed zone.

    {
      PROJECT_ID=PROJECT_ID
      ZONE_NAME=$PROJECT_ID-aiplatform-training-cloud-google-com
      DNS_NAME=aiplatform-training.cloud.google.com
      DESCRIPTION=aiplatform-training.cloud.google.com
    
      gcloud dns managed-zones create $ZONE_NAME  \
      --visibility=private  \
      --networks=https://www.googleapis.com/compute/v1/projects/$PROJECT_ID/global/networks/$VPC_NAME  \
      --dns-name=$DNS_NAME  \
      --description="Training $DESCRIPTION"
    }
        
    • PROJECT_ID: Ihre Projekt-ID. Sie finden diese IDs auf der Google Cloud Console Begrüßungsseite.

  3. DNS-Transaktion aufzeichnen.

    {
      gcloud dns record-sets transaction start --zone=$ZONE_NAME
    
      gcloud dns record-sets transaction add \
      --name=$DNS_NAME. \
      --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
      --zone=$ZONE_NAME \
      --ttl=300
    
      gcloud dns record-sets transaction add \
      --name=*.$DNS_NAME. \
      --type=CNAME $DNS_NAME. \
      --zone=$ZONE_NAME \
      --ttl=300
    
      gcloud dns record-sets transaction execute --zone=$ZONE_NAME
    }
        
  4. Senden Sie einen Trainingsjob mit aktivierter interaktiver Shell + VPC-SC + VPC-Peering.

Geteilte Verantwortung

Die Sicherung Ihrer Arbeitslasten in Vertex AI ist eine gemeinsame Verantwortung. Vertex AI aktualisiert zwar regelmäßig die Infrastrukturkonfigurationen, um Sicherheitslücken zu schließen, aktualisiert aber nicht automatisch Ihre vorhandenen Ray-Cluster und persistenten Ressourcen in Vertex AI, um laufende Arbeitslasten nicht zu unterbrechen. Daher sind Sie für Aufgaben wie die folgenden verantwortlich:

  1. Löschen und erstellen Sie regelmäßig Ihre Ray-Cluster und persistenten Ressourcen in Vertex AI neu, um die neuesten Infrastrukturversionen zu verwenden. Vertex AI empfiehlt, Ihre Cluster und persistenten Ressourcen mindestens einmal alle 30 Tage neu zu erstellen.
  2. Konfigurieren Sie alle benutzerdefinierten Images, die Sie verwenden, ordnungsgemäß.

Weitere Informationen finden Sie unter Gemeinsame Verantwortung.

Nächste Schritte