Sie können eine Verbindung zu einem Ray-Cluster in Vertex AI herstellen und eine Anwendung mit den folgenden Methoden entwickeln:
Stellen Sie mit der Version des Vertex AI SDK für Python, die die Funktionen des Ray-Clients enthält, eine Verbindung zum Ray-Cluster in Vertex AI her. Verwenden Sie diese Option, wenn Sie eine interaktive Python-Entwicklungsumgebung bevorzugen.
Verwenden Sie das Vertex AI SDK für Python im Colab Enterprise-Notebook in der Google Cloud Console.
Vertex AI SDK für Python in einer Python-Sitzung, einer Shell oder einem Jupyter-Notebook verwenden.
Python-Script schreiben und mithilfe der Ray Jobs API an den Ray-Cluster in Vertex AI senden. Verwenden Sie diese Option, wenn Sie Jobs programmatisch senden möchten.
Anwendung mit dem Vertex AI SDK für Python entwickeln
Wenn Sie mit dem Vertex AI SDK für Python eine Verbindung zum Ray-Cluster in Vertex AI herstellen möchten, muss sich die Verbindungsumgebung im selben Peering-VPC-Netzwerk befinden.
Console
Rufen Sie in der Google Cloud Console die Seite „Ray in Vertex AI“ 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 Vertex AI SDK für Python eine Verbindung zum Ray-Cluster in Vertex AI herzustellen.
Wenn Sie in einem Dialogfeld aufgefordert werden, APIs zu aktivieren, klicken Sie auf Aktivieren.
Klicken Sie auf Verbinden, wenn Sie zum ersten Mal eine Verbindung zum Cluster herstellen, oder auf Noch einmal verbinden, wenn Sie noch einmal eine Verbindung zum Cluster herstellen. Das Notebook benötigt einige Minuten, um eine Verbindung zur Laufzeit herzustellen.
Führen Sie die Codezelle Erste Schritte aus, um das Vertex AI SDK für Python zu importieren und eine Verbindung zum Ray-Cluster in Vertex AI herzustellen.
Python
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 # The CLUSTER_RESOURCE_NAME is the one returned from vertex_ray.create_ray_cluster. CLUSTER_RESOURCE_NAME='projects/{}/locations/{}/persistentResources/{}'.format(PROJECT_ID, REGION, CLUSTER_NAME) ray.init('vertex_ray://{}'.format(CLUSTER_RESOURCE_NAME))
Wobei:
REGION: Die Region, die Sie für Ihren Ray-Cluster in Vertex AI angegeben haben.
PROJECT_ID: Ihre Google Cloud-Projekt-ID. Sie finden die Projekt-ID auf der Begrüßungsseite der Google Cloud Console.
CLUSTER_NAME: Der Name des Ray-Clusters in Vertex AI, der beim Erstellen des Clusters angegeben wurde.
Die Ausgabe sollte in etwa so ausssehen:
Python version: 3.10.12 Ray version: 2.9 Vertex SDK version: 1.46.0 Dashboard: xxxx-dot-us-central1.aiplatform-training.googleusercontent.com
Sie können die URL Dashboard
verwenden, um über einen Browser auf das Ray-Dashboard zuzugreifen. Der URI hat das Format http://xxxx-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 in Vertex AI 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 in Vertex AI 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
Sie können einen Ray-Job mit Python, der Ray Jobs-Befehlszeile oder der öffentlichen Ray-Dashboard-Adresse senden.
Python – Name der Clusterressource
Senden Sie im VPC-Peering-Netzwerk 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", "xgboost", "ray==2.9.3", # pin the Ray version to prevent it from being overwritten ] } ) # Ensure that the Ray job has been created. print(job_id)
Wobei:
REGION: Die Region, die Sie für Ihren Ray-Cluster in Vertex AI angegeben haben.
PROJECT_ID: Ihre Google Cloud-Projektnummer. Sie finden die Projekt-ID auf der Begrüßungsseite der Google Cloud Console.
CLUSTER_NAME: Der Name des Ray-Clusters in Vertex AI, der beim Erstellen des Clusters angegeben wurde.
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 zu erhalten.
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", "xgboost", "ray==2.9.3", # pin the Ray version to prevent it from being overwritten ] } ) print(job_id)
Wobei:
DASHBOARD_ADDRESS: Die Ray-Dashboard-Adresse für Ihren Cluster. Sie finden die Dashboard-Adresse mit dem Vertex AI SDK für Python.
Ray Jobs-Befehlszeile
Beachten Sie, dass Sie die Befehle der Ray Jobs-Befehlszeile nur innerhalb des Peering-VPC-Netzwerks verwenden können.
$ ray job submit --working-dir ./ --address vertex_ray://{CLUSTER_RESOURCE_NAME} -- python my_script.py