Stellen Sie mit der Version des Agent Platform SDK für Python, die die Funktionalität des Ray-Clients umfasst, eine Verbindung zum Ray-Cluster auf der Gemini Enterprise Agent Platform über den Ray-Client her. Verwenden Sie diese Option, wenn Sie eine interaktive Python-Entwicklungsumgebung bevorzugen.
Verwenden Sie das Agent Platform SDK für Python im Colab Enterprise Notebook in der Google Cloud Console.
Verwenden Sie das Agent Platform SDK für Python in einer Python-Sitzung, einer Shell oder einem Jupyter-Notebook.
Schreiben Sie ein Python-Script und senden Sie es mit der Ray Jobs API an den Ray-Cluster auf der Gemini Enterprise Agent Platform. Verwenden Sie diese Option, wenn Sie Jobs programmatisch senden möchten.
Über den Ray-Client eine Verbindung zu einem Ray-Cluster herstellen
Stellen Sie eine Verbindung zu Ihrem Ray-Cluster auf der Gemini Enterprise Agent Platform her, um den interaktiven Ray-Client zu verwenden. Das Netzwerk der Verbindungsumgebung hängt von der Netzwerkkonfiguration des Clusters ab. Es gibt keine Einschränkungen für die Verbindungsumgebung, solange der Cluster öffentlichen Internetzugang hat. Das heißt, Sie haben bei der Clustererstellung kein VPC-Netzwerk angegeben. Befindet sich der Cluster jedoch in einem privaten VPC-Netzwerk, das über Peering mit der Gemini Enterprise Agent Platform verbunden ist, muss sich die Verbindungsumgebung im selben VPC-Netzwerk wie der Cluster befinden.
Die Ray-Version auf der Clientseite muss mit der Ray-Version des Clusters übereinstimmen.
pip install "google-cloud-aiplatform[ray]"
installiert standardmäßig Ray-Version 2.47 auf der Clientseite. Wenn die Ray-Version des Clusters älter als z. B. 2.42 ist, verwenden Sie pip install ray==2.42.0, um die Ray-Version der Clientseite an die Ray-Version des Clusters anzupassen.
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.
Rufen Sie in der Google Cloud Console die Seite „Ray on Agent Platform“ auf.
Klicken Sie in der Zeile für den von Ihnen erstellten Cluster auf In Colab Enterprise öffnen.
Das Colab Enterprise-Notebook wird geöffnet. Folgen Sie der Anleitung, um mit dem Agent Platform SDK für Python eine Verbindung zum Ray-Cluster auf der Gemini Enterprise Agent Platform herzustellen.
Wenn Sie in einem Dialogfeld aufgefordert werden, APIs zu aktivieren, klicken Sie auf Aktivieren.
Wenn Sie zum ersten Mal eine Verbindung zum Cluster herstellen, klicken Sie auf Verbinden. Wenn Sie die Verbindung zum Cluster wiederherstellen, klicken Sie auf Noch einmal verbinden. Das Notebook benötigt einige Minuten, um eine Verbindung zur Laufzeit herzustellen.
Klicken Sie auf +Erstellen , um ein neues Notebook zu erstellen.
Klicken Sie auf
, um den Bereich „Ray on Agent Platform“ zu öffnen.
Vorhandene Cluster werden angezeigt.Wählen Sie einen Cluster aus und klicken Sie auf Verbinden.
In Ihrem offenen Notebook wird Code angezeigt, der eine Verbindung zum ausgewählten Cluster herstellt.Andere Aktionen (optional): Klicken Sie im Bereich „Ray on Agent Platform“ auf Cluster verwalten, um die Seite mit der Liste der Ray on Agent Platform-Cluster zu öffnen.
- Wählen Sie einen Cluster aus und klicken Sie auf das Menü „Weitere Aktionen“
Weitere Aktionen.
Weitere Optionen werden angezeigt:

- Wählen Sie einen Cluster aus und klicken Sie auf das Menü „Weitere Aktionen“
Weitere Aktionen.
Führen Sie die Codezelle Erste Schritte aus, um das Agent Platform SDK für Python zu importieren und eine Verbindung zum Ray-Cluster auf der Gemini Enterprise Agent Platform herzustellen.
Python
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.
In einer interaktiven Python-Umgebung:
import ray # Necessary even if aiplatform.* symbol is not directly used in your program. from google.cloud import aiplatform import vertex_ray import vertexai vertexai.init() # The CLUSTER_RESOURCE_NAME is the one returned from vertex_ray.create_ray_cluster. CLUSTER_RESOURCE_NAME='projects/{}/locations/{}/persistentResources/{}'.format(PROJECT_ID, LOCATION, CLUSTER_NAME) ray.init('vertex_ray://{}'.format(CLUSTER_RESOURCE_NAME))
Wobei:
LOCATION: Der Standort, den Sie für Ihren Ray-Cluster auf der Gemini Enterprise Agent Platform angeben.
PROJECT_ID: Ihre Google Cloud Projekt-ID Die Projekt-ID finden Sie auf der Google Cloud Console-Begrüßungs seite.
CLUSTER_NAME: Der Name Ihres Ray-Clusters auf der Gemini Enterprise Agent Platform, der beim Erstellen des Clusters angegeben wurde. Rufen Sie die Google Cloud Console auf, um die Liste der Clusternamen für ein Projekt aufzurufen.
Die Ausgabe sollte in etwa so aussehen:
Python version: 3.10.12 Ray version: 2.47 Vertex SDK version: 1.46.0 Dashboard: yyyy-dot-us-central1.aiplatform-training.googleusercontent.com
Verwenden Sie die URL Dashboard, um über einen Browser auf das Ray-Dashboard zuzugreifen. Der URI hat das Format https://yyyy-dot-us-central1.aiplatform-training.googleusercontent.com/.
Im Dashboard werden gesendete Jobs, die Anzahl der GPUs oder CPUs sowie der Speicherplatz jeder Maschine im Cluster angezeigt.
Nachdem Sie eine Verbindung zum Ray-Cluster auf der Gemini Enterprise Agent Platform hergestellt haben, können Sie ein Ray-Programm genauso wie für ein normales OSS-Ray-Backend entwickeln.
@ray.remote def square(x): print(x) return x * x # Launch four parallel square tasks. futures = [square.remote(i) for i in range(4)] print(ray.get(futures)) # Returns [0, 1, 4, 9]
Anwendung mit der Ray Jobs API entwickeln
In diesem Abschnitt wird beschrieben, wie Sie mithilfe der Ray Jobs API ein Python-Programm an den Ray-Cluster auf der Gemini Enterprise Agent Platform senden.
Python-Script schreiben
Entwickeln Sie Ihre Anwendung als Python-Script in einem beliebigen Texteditor. Fügen Sie das folgende Script beispielsweise in eine my_script.py-Datei ein:
import ray import time @ray.remote def hello_world(): return "hello world" @ray.remote def square(x): print(x) time.sleep(100) return x * x ray.init() # No need to specify address="vertex_ray://...." print(ray.get(hello_world.remote())) print(ray.get([square.remote(i) for i in range(4)]))
Ray-Job mit der Ray Jobs API senden
Senden Sie einen Ray-Job mit Python, der Ray Jobs-Befehlszeile oder der öffentlichen Ray dashboard Adresse.
Python – Name der Clusterressource
Übergeben Sie einen Ray-Job mit einer Python-Umgebung:
import ray import vertex_ray from ray.job_submission import JobSubmissionClient from google.cloud import aiplatform # Necessary even if aiplatform.* symbol is not directly used in your program. CLUSTER_RESOURCE_NAME='projects/{}/locations/REGION/persistentResources/{}'.format(PROJECT_ID, CLUSTER_NAME) client = JobSubmissionClient("vertex_ray://{}".format(CLUSTER_RESOURCE_NAME)) job_id = client.submit_job( # Entrypoint shell command to execute entrypoint="python my_script.py", # Path to the local directory that contains the my_script.py file. runtime_env={ "working_dir": "./directory-containing-my-script", "pip": ["numpy", "setuptools<70.0.0", "xgboost", "ray==CLUSTER_RAY_VERSION", # pin the Ray version to the same version as the cluster ] } ) # Ensure that the Ray job has been created. print(job_id)
Wobei:
REGION: Die Region, die Sie für Ihren Ray-Cluster auf der Gemini Enterprise Agent Platform angeben.
PROJECT_ID: Ihre Google Cloud Projektnummer. Die Projekt-ID finden Sie auf der Google Cloud Console-Begrüßungs seite.
CLUSTER_NAME: Der Name Ihres Ray-Clusters auf der Gemini Enterprise Agent Platform, der beim Erstellen des Clusters angegeben wurde. Rufen Sie die Google Cloud Console auf, um die Liste der Clusternamen für ein Projekt aufzurufen.
CLUSTER_RAY_VERSION: Die Ray-Version an dieselbe Version wie beim Cluster anpinnen. Beispiel: 2.47.1.
Python – Ray-Dashboard
Auf die Adresse des Ray-Dashboards kann von außerhalb der VPC zugegriffen werden, einschließlich des öffentlichen Internets.
Beachten Sie, dass vertex_ray erforderlich ist, um die Authentifizierung automatisch abzurufen.
from ray.job_submission import JobSubmissionClient import vertex_ray DASHBOARD_ADDRESS=DASHBOARD_ADDRESS client = JobSubmissionClient( "vertex_ray://{}".format(DASHBOARD_ADDRESS), ) job_id = client.submit_job( # Entrypoint shell command to execute entrypoint="python my_script.py", # Path to the local directory that contains the my_script.py file runtime_env={ "working_dir": "./directory-containing-my-script", "pip": ["numpy", "setuptools<70.0.0", "xgboost", "ray==CLUSTER_RAY_VERSION", # pin the Ray version to the same version as the cluster ] } ) print(job_id)
Dabei gilt:
DASHBOARD_ADDRESS: Die Ray-Dashboard-Adresse für Ihren Cluster. Die Dashboard-Adresse finden Sie mit dem Agent Platform SDK für Python.
Ray Jobs-Befehlszeile
Verwenden Sie die Befehle der Ray Jobs-Befehlszeile nur innerhalb des Peering-VPC-Netzwerks.
$ ray job submit --working-dir ./ --address vertex_ray://{CLUSTER_RESOURCE_NAME} -- python my_script.py
Wenn Sie nach dem Senden eines Ray-Jobs mit langer Ausführungszeit den Jobstatus
mit client.get_job_status(job_id) überwachen möchten, instanziieren Sie
JobSubmissionClient(client = JobSubmissionClient("vertex_ray://{}".format(CLUSTER_RESOURCE_NAME))
) neu, um das Authentifizierungstoken zu aktualisieren.
Unterstützung für VPC-Peering und benutzerdefinierte Dienstkonten
Ray auf der Agent Platform unterstützt die Ray Client und die Ray Jobs API (JobSubmissionClient) in einem öffentlichen Netzwerk für Standard-Dienst-Agent- und benutzerdefinierte Dienstkonten.
Die folgende Tabelle zeigt die Ray auf der Agent Platform-Unterstützung für VPC-Peering, wenn Sie den Ray-Cluster mit dem VPC-Netzwerk erstellen:
| VPC-Peering | Standard-Dienst-Agent | Benutzerdefiniertes Dienstkonto |
|---|---|---|
| Ray-Client (interaktiver Modus) | Ja | Nein |
| Ray JobSubmissionClient | Ja | Ja |
Für VPC Service Controls (VPC-SC) sind zusätzliche Konfigurationen erforderlich. Weitere Informationen finden Sie unter Private und öffentliche Konnektivität.
Network File System (NFS) in Ihrem Ray-Code verwenden
Wenn Sie beim Erstellen des Ray-Clusters eine NFS-Bereitstellungfestlegen, können Sie diese NFS-Volumes in Ihrem Anwendungscode lesen und schreiben.
RayClient
In diesem Abschnitt wird beschrieben, wie Sie Network File System (NFS) in Ihrem Ray-Code verwenden.
RayClient in einer Python-Umgebung initialisieren
import ray from google.cloud import aiplatform import vertex_ray aiplatform.init(project=PROJECT_ID, location=REGION) ray.init(address='vertex_ray://projects/{}/locations/us-central1/persistentResources/{}'.format(PROJECT_NUMBER, PERSISTENT_RESOURCE_ID))
Job-Script ausführen
import ray import logging import os import sys @ray.remote def main(): logging.info("list all files in mounted folder") return os.listdir("/mnt/nfs/test") print(''.join(ray.get(main.remote())))
Senden Sie einen Ray-Job mit Python, der Ray Jobs-Befehlszeile oder der öffentlichen Ray-Dashboard-Adresse. Weitere Informationen finden Sie unter Anwendung im Ray-Cluster auf der Gemini Enterprise Agent Platform entwickeln).
Nächste Schritte
Modell auf der Gemini Enterprise Agent Platform bereitstellen und Vorhersagen abrufen
Logs für Ihren Ray-Cluster auf der Gemini Enterprise Agent Platform ansehen