Vous pouvez vous connecter à un cluster Ray sur Vertex AI et développer une application à l'aide des méthodes suivantes :
Connectez-vous au cluster Ray sur Vertex AI via le client Ray à l'aide de la version du SDK Vertex AI pour Python qui inclut les fonctionnalités du client Ray. Utilisez cette option si vous préférez un environnement de développement Python interactif.
Utiliser le SDK Vertex AI pour Python dans le notebook Colab Enterprise de la console Google Cloud.
Utilisez le SDK Vertex AI pour Python dans une session Python, une interface système ou un notebook Jupyter.
Écrivez un script Python et envoyez-le au cluster Ray sur Vertex AI à l'aide de l'API Ray Jobs. Utilisez cette option si vous préférez envoyer des tâches par programmation.
Se connecter à un cluster Ray via le client Ray
Pour utiliser le client Ray interactif, connectez-vous à votre cluster Ray sur Vertex AI. Le réseau de l'environnement de connexion dépend de la configuration réseau du cluster. Il n'existe aucune restriction concernant l'environnement de connexion tant que le cluster dispose d'un accès Internet public. Autrement dit, aucun réseau VPC n'a été spécifié lors de la création du cluster. Toutefois, si le cluster se trouve sur un réseau VPC privé appairé avec Vertex AI, l'environnement de connexion doit se trouver sur le même réseau VPC que le cluster.
La version de Ray côté client doit correspondre à la version de Ray du cluster.
pip install "google-cloud-aiplatform[ray]"
installe la version 2.33 de Ray côté client par défaut. Si la version de Ray du cluster est 2.9, vous devez utiliser pip install ray==2.9.3
pour faire correspondre la version de Ray du côté client à celle du cluster.
Console
Conformément aux bonnes pratiques OSS Ray, le nombre de processeurs logiques est défini sur 0 sur le nœud principal de Ray afin d'éviter toute exécution de charge de travail sur ce nœud.
Dans la console Google Cloud, accédez à la page Ray sur Vertex AI.
Sur la ligne du cluster que vous avez créé, cliquez sur Ouvrir dans Colab Enterprise.
Le notebook Colab Enterprise s'ouvre. Suivez les instructions d'utilisation du SDK Vertex AI pour Python pour vous connecter au cluster Ray sur Vertex AI.
Si une boîte de dialogue vous invite à activer des API, cliquez sur Activer.
Cliquez sur Se connecter si vous vous connectez au cluster pour la première fois ou sur Se reconnecter si vous vous reconnectez au cluster. La connexion du notebook à l'environnement d'exécution prend quelques minutes.
Cliquez sur + CRÉER pour créer un notebook.
Cliquez sur pour ouvrir le panneau Ray sur Vertex AI.
L'affichage des clusters existants s'affiche.Sélectionnez un cluster, puis cliquez sur SE CONNECTER.
Le code apparaît dans le notebook ouvert qui se connecte au cluster choisi.Autres actions (facultatif) : Pour ouvrir la page de la liste des clusters Ray sur Vertex AI, cliquez sur Gérer les clusters dans le panneau Ray sur Vertex AI.
- Sélectionnez un cluster, puis cliquez sur le menu
D'autres options s'affichent :
Autres actions.
- Sélectionnez un cluster, puis cliquez sur le menu
Exécutez la cellule de code Premiers pas pour importer le SDK Vertex AI pour Python et vous connecter au cluster Ray sur Vertex AI.
Python
Conformément aux bonnes pratiques OSS Ray, le nombre de processeurs logiques est défini sur 0 sur le nœud principal de Ray afin d'éviter toute exécution de charge de travail sur ce nœud.
Depuis un environnement Python interactif :
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))
Où :
LOCATION : emplacement que vous avez spécifié pour votre cluster Ray sur Vertex AI.
PROJECT_ID : ID de votre projet Google Cloud. Vous pouvez trouver l'ID de projet sur la page Accueil de la console Google Cloud.
CLUSTER_NAME : nom de votre cluster Ray sur Vertex AI, spécifié lors de la création du cluster. Accédez à la console Google Cloud pour afficher la liste des noms de clusters d'un projet.
Des résultats semblables aux lignes suivantes devraient s'afficher :
Python version: 3.10.12 Ray version: 2.33 Vertex SDK version: 1.46.0 Dashboard: xxxx-dot-us-central1.aiplatform-training.googleusercontent.com
Vous pouvez utiliser l'URL Dashboard
pour accéder au tableau de bord Ray à partir d'un navigateur. L'URI est au format https://xxxx-dot-us-central1.aiplatform-training.googleusercontent.com/
.
Le tableau de bord affiche les tâches envoyées, le nombre de GPU ou de processeurs, ainsi que l'espace disque de chaque machine du cluster.
Une fois que vous êtes connecté au cluster Ray sur Vertex AI, vous pouvez développer un programme Ray de la même manière que pour un backend OSS Ray normal.
@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]
Développer une application à l'aide de l'API Ray Jobs
Cette section explique comment envoyer un programme Python au cluster Ray sur Vertex AI à l'aide de l'API Ray Jobs.
Écrire un script Python
Développez votre application en tant que script Python dans n'importe quel éditeur de texte. Par exemple, placez le script suivant dans un fichier my_script.py
:
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)]))
Envoyer un job Ray à l'aide de l'API Ray Jobs
Vous pouvez envoyer un job Ray à l'aide de Python, de la CLI Ray Jobs ou de l'adresse publique du tableau de bord Ray.
Python – Nom de la ressource de cluster
Envoyez un job Ray à l'aide d'un environnement Python :
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)
Où :
REGION : région que vous avez spécifiée pour votre cluster Ray sur Vertex AI.
PROJECT_ID : numéro de votre projet Google Cloud. Vous pouvez trouver l'ID de projet sur la page Accueil de la console Google Cloud.
CLUSTER_NAME : nom de votre cluster Ray sur Vertex AI, spécifié lors de la création du cluster. Accédez à la console Google Cloud pour afficher la liste des noms de clusters d'un projet.
CLUSTER_RAY_VERSION : associer la version de Ray à la même version que le cluster. Par exemple : 2.33.0.
Python - Tableau de bord Ray
L'adresse du tableau de bord Ray est accessible depuis l'extérieur du VPC, y compris l'Internet public.
Notez que vertex_ray
est requis pour obtenir une authentification automatiquement.
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)
Où :
DASHBOARD_ADDRESS : adresse du tableau de bord Ray pour votre cluster. Vous pouvez trouver l'adresse du tableau de bord à l'aide du SDK Vertex AI pour Python.
CLI Ray Jobs
Notez que vous ne pouvez utiliser que les commandes de la CLI Ray Jobs dans le réseau VPC appairé.
$ ray job submit --working-dir ./ --address vertex_ray://{CLUSTER_RESOURCE_NAME} -- python my_script.py
Prise en charge de l'appairage de VPC et du compte de service personnalisé
Ray sur Vertex AI est compatible avec Ray Client et l'API Ray Jobs (JobSubmissionClient) dans un réseau public pour l'agent de service par défaut et les comptes de service personnalisés.
La compatibilité de Ray sur Vertex AI avec l'appairage de réseaux VPC, lorsque le cluster Ray est créé avec le réseau VPC, est présentée dans le tableau suivant :
Appairage de VPC | Agent de service par défaut | Compte de service personnalisé |
---|---|---|
Client Ray (mode interactif) | Oui | Non |
Ray JobSubmissionClient | Oui | Oui |
VPC Service Controls (VPC-SC) nécessite des configurations supplémentaires. Pour en savoir plus, consultez la section Connectivité privée et publique.