Faire évoluer les clusters Ray sur Gemini Enterprise Agent Platform

Les clusters Ray sur la plate-forme Gemini Enterprise Agent offrent deux options de scaling : l'autoscaling et le scaling manuel. L'autoscaling permet au cluster d'ajuster automatiquement le nombre de nœuds de calcul en fonction des ressources requises par les tâches et les acteurs Ray. Si vous exécutez une charge de travail importante et que vous n'êtes pas sûr des ressources nécessaires, l'autoscaling est recommandé. Le scaling manuel permet aux utilisateurs de contrôler plus précisément les nœuds.

L'autoscaling peut réduire les coûts liés à la charge de travail, mais ajoute des frais généraux de lancement de nœuds et peut être difficile à configurer. Si vous débutez avec Ray, commencez par des clusters sans autoscaling et utilisez la fonctionnalité de scaling manuel.

Autoscaling

Activez la fonctionnalité d'autoscaling d'un cluster Ray en spécifiant le nombre minimal de réplicas (min_replica_count) et le nombre maximal de réplicas (max_replica_count) d'un pool de nœuds de calcul.

Veuillez noter les points suivants :

  • Configurez la spécification d'autoscaling de tous les pools de nœuds de calcul.
  • La vitesse d'upscaling et de downscaling personnalisée n'est pas prise en charge. Pour connaître les valeurs par défaut, consultez la section Vitesse d'upscaling et de downscaling dans la documentation de Ray.

Définir la spécification d'autoscaling du pool de nœuds de calcul

Utilisez la console Google Cloud ou le SDK Agent Platform pour Python afin d'activer la fonctionnalité d'autoscaling d'un cluster Ray.

SDK Ray sur Agent Platform

from google.cloud import aiplatform
import vertex_ray
from vertex_ray import AutoscalingSpec

autoscaling_spec = AutoscalingSpec(
 min_replica_count=1,
 max_replica_count=3,
)

head_node_type = Resources(
 machine_type="n1-standard-16",
 node_count=1,
)

worker_node_types = [Resources(
 machine_type="n1-standard-16",
 accelerator_type="NVIDIA_TESLA_T4",
 accelerator_count=1,
 autoscaling_spec=autoscaling_spec,
)]

# Create the Ray cluster on Gemini Enterprise Agent Platform
CLUSTER_RESOURCE_NAME = vertex_ray.create_ray_cluster(
head_node_type=head_node_type,
worker_node_types=worker_node_types,
...
)

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.

  1. Dans la console Google Cloud , accédez à la page "Ray on Agent Platform".

    Accéder à la page Ray sur Agent Platform

  2. Cliquez sur Créer un cluster pour ouvrir le panneau Créer un cluster.

  3. 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 :

    1. Dans le champ Nom et région, spécifiez un Nom et choisissez un emplacement pour votre cluster.
    2. Pour les paramètres de calcul, spécifiez la configuration du cluster Ray sur le nœud principal, 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ée afin d'ajouter des dépendances Python non fournies par l'image de conteneur par défaut. Consultez Image personnalisée.

      Sous Options avancées, vous pouvez :

      • Spécifier votre propre clé de chiffrement.
      • Spécifiez un compte de service personnalisé.
      • Si vous n'avez pas besoin de surveiller les statistiques de ressources de votre charge de travail pendant l'entraînement, désactivez la collecte de métriques.
    3. Pour créer un cluster avec un pool de nœuds de calcul à autoscaling, indiquez une valeur pour le nombre maximal d'instances répliquées du pool de nœuds de calcul.Paramètres de calcul pour l'autoscaling

  4. Cliquez sur Créer.

Scaling manuel

Lorsque vos charges de travail augmentent ou diminuent sur vos clusters Ray sur la plate-forme d'agents Gemini Enterprise, ajustez manuellement le nombre d'instances répliquées pour répondre à la demande. Par exemple, si vous disposez d'une capacité excédentaire, réduisez la taille de vos pools de nœuds de calcul pour réduire les coûts.

Limites de l'appairage de VPC

Lorsque vous mettez à l'échelle des clusters, vous ne pouvez modifier que le nombre de répliques dans vos pools de nœuds de calcul existants. Par exemple, vous ne pouvez pas ajouter ni supprimer de pools de nœuds de calcul dans votre cluster, ni modifier le type de machine de vos pools de nœuds de calcul. De plus, le nombre de répliques de vos pools de nœuds de calcul ne peut pas être inférieur à un.

Si vous utilisez une connexion d'appairage de VPC pour vous connecter à vos clusters, le nombre maximal de nœuds est limité. Le nombre maximal de nœuds dépend du nombre de nœuds que le cluster comportait lors de sa création. Pour en savoir plus, consultez Calcul du nombre maximal de nœuds. Ce nombre maximal inclut non seulement vos pools de nœuds de calcul, mais aussi votre nœud principal. Si vous utilisez la configuration réseau par défaut, le nombre de nœuds ne peut pas dépasser les limites supérieures décrites dans la documentation sur la création de clusters.

Bonnes pratiques pour l'allocation de sous-réseaux

Lorsque vous déployez Ray sur Gemini Enterprise Agent Platform à l'aide de l'accès aux services privés (PSA), il est essentiel de vous assurer que la plage d'adresses IP allouée est suffisamment grande et contiguë pour accueillir le nombre maximal de nœuds que votre cluster peut atteindre. L'épuisement des adresses IP peut se produire si la plage d'adresses IP réservée à votre connexion PSA est trop petite ou fragmentée, ce qui entraîne des échecs de déploiement.

Nous vous recommandons également de déployer Ray sur Agent Platform avec une interface Private Service Connect, qui réduit la consommation d'adresses IP à un sous-réseau /28.

Surveillance de l'accès privé aux services

Nous vous recommandons d'utiliser Network Analyzer, un outil de diagnostic du Network Intelligence Center de Google Cloud qui surveille automatiquement les configurations de votre réseau de cloud privé virtuel (VPC) pour détecter les erreurs de configuration et les paramètres non optimaux. Network Analyzer fonctionne en continu. Il exécute des tests de manière proactive et génère des insights pour vous aider à identifier, diagnostiquer et résoudre les problèmes réseau avant qu'ils n'affectent la disponibilité des services.

Network Analyzer peut surveiller les sous-réseaux utilisés pour l'accès privé aux services (PSA, Private Service Access) et fournit des insights spécifiques les concernant. Il s'agit d'une fonction essentielle pour gérer les services qui utilisent le PSA, comme Cloud SQL, Memorystore et Agent Platform.

Network Analyzer surveille principalement les sous-réseaux PSA en fournissant des insights sur l'utilisation des adresses IP pour les plages allouées.

  • Utilisation de la plage d'adresses IP de PSA : Network Analyzer suit activement le pourcentage d'adresses IP allouées dans les blocs CIDR dédiés que vous avez alloués pour PSA. Cela est important, car lorsque vous créez un service géré (tel qu'Agent Platform), Google crée un VPC de producteur de services et un sous-réseau dans celui-ci, en tirant une plage d'adresses IP de votre bloc alloué.

  • Alertes proactives : si l'utilisation des adresses IP pour une plage allouée à un PSA dépasse un certain seuil (par exemple, 75%), Network Analyzer génère un insight d'avertissement. Vous êtes ainsi alerté de manière proactive des éventuels problèmes de capacité, ce qui vous laisse le temps d'étendre la plage d'adresses IP allouée avant de manquer d'adresses disponibles pour les nouvelles ressources de service.

Mises à jour des sous-réseaux d'accès aux services privés

Pour les déploiements Ray sur Agent Platform, Google recommande d'allouer un bloc CIDR /16 ou /17 pour votre connexion PSA. Cela fournit un bloc contigu d'adresses IP suffisamment grand pour prendre en charge une mise à l'échelle importante, avec respectivement jusqu'à 65 536 ou 32 768 adresses IP uniques. Cela permet d'éviter l'épuisement des adresses IP, même avec de grands clusters Ray.

Si vous épuisez votre espace d'adresses IP alloué, Google Cloud renvoie l'erreur suivante :

Échec de la création du sous-réseau. Impossible de trouver des blocs libres dans les plages d'adresses IP allouées.

Nous vous recommandons d'étendre la plage de sous-réseaux actuelle ou d'allouer une plage qui tient compte de la croissance future.

Calcul du nombre maximal de nœuds

Si vous utilisez l'accès aux services privés (appairage VPC) pour vous connecter à vos nœuds, utilisez les formules suivantes pour vérifier que vous ne dépassez pas le nombre maximal de nœuds (M), en supposant f(x) = min(29, (32 - ceiling(log2(x))) :

  • f(2 * M) = f(2 * N)
  • f(64 * M) = f(64 * N)
  • f(max(32, 16 + M)) = f(max(32, 16 + N))

Le nombre total maximal de nœuds dans le cluster Ray sur Agent Platform que vous pouvez mettre à l'échelle (M) dépend du nombre total initial de nœuds que vous avez configuré (N). Une fois le cluster Ray sur Agent Platform créé, vous pouvez mettre à l'échelle le nombre total de nœuds sur n'importe quelle valeur comprise entre P et M inclus, où P correspond au nombre de pools dans votre cluster.

Le nombre total initial de nœuds dans le cluster et le nombre cible de scaling à la hausse doivent se trouver dans le même bloc de couleur.

Diagramme montrant la relation entre le nombre de nœuds initial et le nombre de nœuds mis à l'échelle

Mettre à jour le nombre d'instances répliquées

Utilisez la console Google Cloud ou le SDK Agent Platform pour Python afin de mettre à jour le nombre d'instances dupliquées de votre pool de nœuds de calcul. Si votre cluster comprend plusieurs pools de nœuds de calcul, vous pouvez modifier individuellement le nombre d'instances répliquées de chacun d'eux dans une seule requête.

SDK Ray sur Agent Platform

import vertexai
import vertex_ray

vertexai.init()
cluster = vertex_ray.get_ray_cluster("CLUSTER_NAME")

# Get the resource name.
cluster_resource_name = cluster.cluster_resource_name

# Create the new worker pools
new_worker_node_types = []
for worker_node_type in cluster.worker_node_types:
 worker_node_type.node_count = REPLICA_COUNT # new worker pool size
 new_worker_node_types.append(worker_node_type)

# Make update call
updated_cluster_resource_name = vertex_ray.update_ray_cluster(
 cluster_resource_name=cluster_resource_name,
 worker_node_types=new_worker_node_types,
)

Console

  1. Dans la console Google Cloud , accédez à la page "Ray on Agent Platform".

    Accéder à la page Ray sur Agent Platform

  2. Dans la liste des clusters, cliquez sur celui que vous souhaitez modifier.

  3. Sur la page Détails du cluster, cliquez sur Modifier le cluster.

  4. Dans le volet Modifier le cluster, sélectionnez le pool de nœuds de calcul à mettre à jour, puis modifiez le nombre d'instances dupliquées.

  5. Cliquez sur Mettre à jour.

    Patientez quelques minutes pendant la mise à jour de votre cluster. Une fois la mise à jour terminée, vous pouvez consulter le nombre d'instances répliquées mis à jour sur la page Détails du cluster.

  6. Cliquez sur Créer.