Vous pouvez utiliser la console Google Cloud ou le SDK Vertex AI pour Python pour créer un cluster Ray. Un cluster peut contenir jusqu'à 2 000 nœuds. Il existe une limite supérieure de 1 000 nœuds dans un pool de nœuds de calcul. Il n'y a pas de limite au nombre de pools de nœuds de calcul. Toutefois, en créer un grand nombre (par exemple, disposer de 1 000 pools de nœuds de calcul avec un nœud chacun) peut avoir un impact négatif sur les performances du cluster.
Avant de commencer, veillez à lire la Présentation de Ray sur Vertex AI et à configurer tous les outils prérequis.
Une fois créé, un cluster Ray sur Vertex AI peut prendre entre 10 et 20 minutes pour démarrer.
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.
Cliquez sur Créer un cluster pour ouvrir le panneau Créer un cluster.
Pour chaque étape du panneau Créer un cluster, vérifiez ou remplacez les informations du cluster par défaut. Cliquez sur Continuer à chaque étape :
Dans le champ Nom et région, spécifiez un Nom et choisissez un Emplacement pour votre cluster.
Pour les paramètres de calcul, spécifiez la configuration du cluster Ray sur le nœud principal de Vertex AI, y compris le type de machine, le type et le nombre d'accélérateurs, le type et la taille du disque et le nombre d'instances répliquées. Vous pouvez éventuellement ajouter un URI d'image personnalisée pour spécifier une image de conteneur personnalisé afin d'ajouter des dépendances Python non fournies par l'image de conteneur par défaut. Consultez la section Image personnalisée.
Sous Options avancées, vous pouvez :
- Spécifier votre propre clé de chiffrement.
- Spécifiez un compte de service personnalisé.
- Désactivez la collecte de métriques si vous n'avez pas besoin de surveiller les statistiques de ressources de votre charge de travail pendant l'entraînement.
(Facultatif) Pour définir un point de terminaison privé au lieu d'un point de terminaison public pour votre cluster, spécifiez un réseau VPC à utiliser avec Ray sur Vertex AI. Pour en savoir plus, consultez Connectivité privée et publique.
Si vous n'avez pas configuré de connexion pour votre réseau VPC, cliquez sur Configurer la connexion. Dans le panneau Créer une connexion d'accès aux services privés, cliquez sur Continuer pour effectuer chacune des étapes suivantes :
Activez l'API Service Networking.
Pour Allouer une plage d'adresses IP, vous pouvez sélectionner, créer ou autoriser Google à allouer automatiquement une plage d'adresses IP.
Dans la section Créer une connexion, consultez les informations Réseau et Plage d'adresses IP allouée.
Cliquez sur Créer une connexion.
Cliquez sur Créer.
SDK Ray sur Vertex AI
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 un environnement Python interactif, utilisez les éléments suivants pour créer le cluster Ray sur Vertex AI :
import ray import vertex_ray from google.cloud import aiplatform from vertex_ray import Resources # 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. )] aiplatform.init() # Initialize Vertex AI to retrieve projects for downstream operations. # Create the Ray cluster on Vertex AI 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.33", # Optional cluster_name=CLUSTER_NAME, # Optional service_account=SERVICE_ACCOUNT, # Optional enable_metrics_collection=True, # Optional. Enable metrics collection for monitoring. labels=LABELS, # Optional. )
Où :
CLUSTER_NAME : nom du cluster Ray sur Vertex AI qui doit être unique dans votre projet.
NETWORK : (facultatif) nom complet de votre réseau VPC, au format
projects/PROJECT_ID/global/networks/VPC_NAME
. Pour définir un point de terminaison privé au lieu d'un point de terminaison public pour votre cluster, spécifiez un réseau VPC à utiliser avec Ray sur Vertex AI. Pour en savoir plus, consultez Connectivité privée et publique.VPC_NAME : (facultatif) VPC sur lequel la VM fonctionne.
PROJECT_ID : ID de votre projet Google Cloud. Vous pouvez trouver l'ID du projet sur la page Accueil de la console Google Cloud.
SERVICE_ACCOUNT : (facultatif) compte de service permettant d'exécuter les applications Ray sur le cluster. Les rôles requis doivent être attribués.
LABELS : (facultatif) libellés avec des métadonnées définies par l'utilisateur utilisées pour organiser les clusters Ray. Les clés et les valeurs des libellés ne peuvent pas dépasser 64 caractères (points de code Unicode) et ne peuvent contenir que des lettres minuscules, des chiffres, des traits de soulignement et des tirets. Les caractères internationaux sont acceptés. Pour en savoir plus et obtenir des exemples de libellés, consultez la page https://goo.gl/xmQnxf.
Le résultat suivant doit s'afficher jusqu'à ce que l'état passe à RUNNING
:
[Ray on Vertex AI]: Cluster State = State.PROVISIONING Waiting for cluster provisioning; attempt 1; sleeping for 0:02:30 seconds ... [Ray on Vertex AI]: Cluster State = State.RUNNING
Veuillez noter les points suivants :
Le premier nœud est utilisé comme nœud principal.
Les types de machines TPU ne sont pas compatibles.
Gestion du cycle de vie
Au cours du cycle de vie d'un cluster Ray sur Vertex AI, chaque action est associée à un état. Le tableau ci-dessous récapitule l'état de facturation et l'option de gestion pour chaque état. La documentation de référence fournit une définition pour chacun de ces états.
Action | État | Facturé ? | Action "Supprimer" disponible ? | Action "Annuler" disponible ? |
---|---|---|---|---|
L'utilisateur crée un cluster | PROVISIONNEMENT | Non | Non | Non |
L'utilisateur effectue un scaling à la hausse ou à la baisse manuellement | UPDATING | Oui, en fonction de la taille en temps réel | Oui | Non |
Exécution du cluster… | RUNNING | Oui | Oui | Non applicable : vous pouvez supprimer |
Le cluster effectue un scaling à la hausse ou à la baisse | UPDATING | Oui, en fonction de la taille en temps réel | Oui | Non |
L'utilisateur supprime le cluster | ARRÊT… | Non | Non | Non applicable : l'arrêt est déjà en cours |
Le cluster passe à l'état d'erreur | ERREUR | Non | Oui | Non applicable : vous pouvez supprimer |
Non applicable | STATE_UNSPECIFIED | Non | Oui | Non applicable |
Image personnalisée (facultatif)
Les images prédéfinies correspondent à la plupart des cas d'utilisation. Si vous souhaitez créer votre propre image, nous vous conseillons d'utiliser les images prédéfinies Ray sur Vertex en tant qu'image de base. Consultez la documentation Docker pour savoir comment créer vos images à partir d'une image de base.
Ces images de base incluent une installation de Python, Ubuntu et Ray. Elles incluent également des dépendances telles que :
- python-json-logger
- google-cloud-resource-manager
- ca-certificates-java
- libatlas-base-dev
- liblapack-dev
- g++, libio-all-perl
- libyaml-0-2.
- rsync
Si vous souhaitez créer votre propre image sans notre image de base (avancé), assurez-vous qu'elle inclut les éléments suivants :
- Ray 2.33.0 ou 2.9.3
- Python 3.10
- python-json-logger==2.0.7
Connectivité privée et publique
Par défaut, Ray sur Vertex AI crée un point de terminaison public et sécurisé pour le développement interactif avec le client Ray sur les clusters Ray sur Vertex AI. Il est recommandé d'utiliser la connectivité publique pour les cas d'utilisation de développement ou éphémères. Ce point de terminaison public est accessible via Internet. Seuls les utilisateurs autorisés disposant au minimum des autorisations de rôle utilisateur Vertex AI sur le projet utilisateur du cluster Ray peuvent y accéder.
Si vous avez besoin d'une connexion privée à votre cluster ou si vous utilisez VPC Service Controls, l'appairage de VPC est compatible avec les clusters Ray sur Vertex AI. Les clusters avec un point de terminaison privé ne sont accessibles qu'à partir d'un client situé dans un réseau VPC appairé avec Vertex AI.
Pour configurer une connectivité privée avec l'appairage de VPC pour Ray sur Vertex AI, sélectionnez un réseau VPC lorsque vous créez votre cluster. Le réseau VPC nécessite une connexion aux services privés entre votre réseau VPC et Vertex AI. Si vous utilisez Ray sur Vertex AI dans la console, vous pouvez configurer votre connexion d'accès aux services privés lors de la création du cluster.
Si vous souhaitez utiliser VPC Service Controls et l'appairage de VPC avec des clusters Ray sur Vertex AI, une configuration supplémentaire est requise pour utiliser le tableau de bord Ray et le shell interactif. Suivez les instructions de la section Tableau de bord Ray et shell interactif avec VPC-SC et appairage de VPC pour configurer le shell interactif avec VPC-SC et l'appairage de VPC dans votre projet utilisateur.
Après avoir créé votre cluster Ray sur Vertex AI, vous pouvez vous connecter au nœud principal à l'aide du SDK Vertex AI pour Python. L'environnement de connexion, tel qu'une VM Compute Engine ou une instance Vertex AI Workbench, doit se trouver sur le réseau VPC appairé à Vertex AI. Notez qu'une connexion aux services privés possède un nombre limité d'adresses IP, ce qui peut entraîner l'épuisement des adresses IP. Il est donc recommandé d'utiliser des connexions privées pour les clusters de longue durée.
Tableau de bord Ray et shell interactif avec VPC-SC + Appairage de VPC
-
configurer
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 : passer à un réseau appairé.
-
LOCATION : emplacement souhaité (par exemple,
us-central1
).
-
-
configurer
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 : ID de votre projet Vous pouvez trouver ces ID sur la page Accueil de la console Google Cloud.
-
-
Transaction d'enregistrement DNS.
{ 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 }
-
Envoyer une tâche d'entraînement avec l'interface système interactive, VPC-SC et l'appairage de VPC activés.