Faire évoluer les clusters Ray sur Gemini Enterprise Agent Platform

Les clusters Ray sur Gemini Enterprise Agent Platform 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, nous vous recommandons d'utiliser l'autoscaling. 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 d'instances répliquées (min_replica_count) et le nombre maximal d'instances répliquées (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 Google Cloud console ou SDK Agent Platform pour Python pour 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 Google Cloud console, accédez à la page Ray sur 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 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é.
      • 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 Gemini Enterprise Agent Platform, 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 liées à l'appairage VPC

Lorsque vous mettez à l'échelle des clusters, vous ne pouvez modifier que le nombre d'instances répliquées dans vos pools de nœuds de calcul existants. Par exemple, vous ne pouvez pas ajouter ou 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 d'instances répliquées de vos pools de nœuds de calcul ne peut pas être inférieur à un.

Si vous utilisez une connexion d'appairage 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 lorsque vous l'avez créé. Pour en savoir plus, consultez la section Calcul du nombre maximal de nœuds. Ce nombre maximal inclut non seulement vos pools de nœuds de calcul, mais également 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 d'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, ce qui réduit la consommation d'adresses IP à un sous-réseau /28.

Surveillance de l'accès aux services privés

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 cloud privé virtuel (VPC) pour détecter les erreurs de configuration et les paramètres non optimaux. Network Analyzer fonctionne en continu, ce qui exécute de manière proactive des tests et génère des insights pour vous aider à identifier, à diagnostiquer et à résoudre les problèmes de 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 aux services privés (PSA) et fournit des insights spécifiques à leur sujet. Il s'agit d'une fonction essentielle pour la gestion de services tels que Cloud SQL, Memorystore et Agent Platform, qui utilisent le PSA.

La principale façon dont Network Analyzer surveille les sous-réseaux PSA consiste à fournir des insights sur l'utilisation des adresses IP pour les plages allouées.

  • Utilisation de la plage PSA : Network Analyzer suit activement le pourcentage d'allocation d'adresses IP dans les blocs CIDR dédiés que vous avez alloués pour le 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 au PSA dépasse un certain seuil (par exemple, 75%), Network Analyzer génère un insight d'avertissement. Cela vous alerte de manière proactive sur les problèmes de capacité potentiels, ce qui vous donne 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 de 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 un scaling important, pouvant accueillir 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 affiche 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 prend en compte 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 faire évoluer (M) dépend du nombre total initial de nœuds que vous avez configurés (N). Après avoir créé le cluster Ray sur Agent Platform, vous pouvez adapter le nombre total de nœuds à une valeur comprise entre P et M inclus, où P correspond au nombre de pools de 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 Google Cloud console ou le SDK Agent Platform pour Python pour 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 Google Cloud console, accédez à la page Ray sur Agent Platform.

    Accéder à la page Ray sur Agent Platform

  2. Dans la liste des clusters, cliquez sur le cluster à 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.