Escalar clústeres de Ray en Vertex AI

Los clústeres de Ray en Vertex AI ofrecen dos opciones de escalado: autoescalado y escalado manual. El autoescalado permite que el clúster ajuste automáticamente el número de nodos de trabajador en función de los recursos que necesiten las tareas y los actores de Ray. Si ejecutas una carga de trabajo pesada y no sabes qué recursos necesitas, te recomendamos que uses el autoescalado. El escalado manual ofrece a los usuarios un control más detallado de los nodos.

El autoescalado puede reducir los costes de las cargas de trabajo, pero añade una sobrecarga de inicio de nodos y puede ser difícil de configurar. Si no tienes experiencia con Ray, empieza con clústeres sin autoescalado y usa la función de escalado manual.

Autoescalado

Habilita la función de autoescalado de un clúster de Ray especificando el número mínimo (min_replica_count) y máximo (max_replica_count) de réplicas de un grupo de trabajadores.

Ten en cuenta lo siguiente:

  • Configura la especificación de autoescalado de todos los grupos de trabajadores.
  • No se admite la velocidad de aumento ni de reducción de escala personalizada. Para ver los valores predeterminados, consulta Velocidad de aumento y reducción de escala en la documentación de Ray.

Definir la especificación de autoescalado del grupo de trabajadores

Usa la Google Cloud consola o el SDK de Vertex AI para Python para habilitar la función de autoescalado de un clúster de Ray.

SDK de Ray en Vertex AI

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 Vertex AI
CLUSTER_RESOURCE_NAME = vertex_ray.create_ray_cluster(
head_node_type=head_node_type,
worker_node_types=worker_node_types,
...
)

Consola

De acuerdo con la recomendación de práctica recomendada de OSS Ray, se aplica la configuración del número de CPUs lógicas en 0 en el nodo principal de Ray para evitar que se ejecute ninguna carga de trabajo en el nodo principal.

  1. En la Google Cloud consola, ve a la página Ray en Vertex AI.

    Ir a la página Ray en Vertex AI

  2. Haz clic en Crear clúster para abrir el panel Crear clúster.

  3. En cada paso del panel Crear clúster, revise o sustituya la información predeterminada del clúster. Haga clic en Continuar para completar cada paso:

    1. En Nombre y región, especifica un Nombre y elige una ubicación para el clúster.
    2. En Configuración de Compute, especifica la configuración del clúster de Ray en el nodo principal, incluido el tipo de máquina, el tipo y el número de aceleradores, el tipo y el tamaño del disco, y el número de réplicas. También puedes añadir un URI de imagen personalizado para especificar una imagen de contenedor personalizada que añada dependencias de Python que no proporcione la imagen de contenedor predeterminada. Consulta Imagen personalizada.

      En Opciones avanzadas, puedes hacer lo siguiente:

      • Especifica tu propia clave de cifrado.
      • Especifica una cuenta de servicio personalizada.
      • Si no necesitas monitorizar las estadísticas de recursos de tu carga de trabajo durante el entrenamiento, inhabilita la recogida de métricas.
    3. Para crear un clúster con un grupo de trabajadores con autoescalado, proporciona un valor para el número máximo de réplicas del grupo de trabajadores. Configuración de Compute para el autoescalado

  4. Haz clic en Crear.

Escalado manual

A medida que aumentan o disminuyen las cargas de trabajo en tus clústeres de Ray en Vertex AI, puedes escalar manualmente el número de réplicas para adaptarlo a la demanda. Por ejemplo, si tienes capacidad excedente, reduce la escala de tus grupos de trabajadores para ahorrar costes.

Limitaciones del emparejamiento de VPC

Cuando escales clústeres, solo podrás cambiar el número de réplicas de tus grupos de trabajadores. Por ejemplo, no puedes añadir ni quitar grupos de trabajadores de tu clúster ni cambiar el tipo de máquina de tus grupos de trabajadores. Además, el número de réplicas de tus grupos de trabajadores no puede ser inferior a uno.

Si usas una conexión de emparejamiento de VPC para conectarte a tus clústeres, existe una limitación en el número máximo de nodos. El número máximo de nodos depende del número de nodos que tenía el clúster cuando lo creaste. Para obtener más información, consulta la sección Cálculo del número máximo de nodos. Este número máximo incluye no solo tus grupos de trabajadores, sino también tu nodo principal. Si usas la configuración de red predeterminada, el número de nodos no puede superar los límites superiores que se describen en la documentación sobre creación de clústeres.

Cálculo del número máximo de nodos

Si usas el acceso a servicios privados (emparejamiento de VPC) para conectarte a tus nodos, usa las siguientes fórmulas para comprobar que no superas el número máximo de nodos (M), suponiendo que 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))

El número total máximo de nodos del clúster de Ray en Vertex AI al que puedes aumentar la escala (M) depende del número total inicial de nodos que hayas configurado (N). Una vez que hayas creado el clúster de Ray en Vertex AI, podrás ajustar el número total de nodos a cualquier valor entre P y M (ambos incluidos), donde P es el número de grupos de tu clúster.

El número total inicial de nodos del clúster y el número de destino del escalado vertical deben estar en el mismo bloque de color.

Diagrama que muestra la relación entre el número de nodos inicial y el escalado

Actualizar el número de réplicas

Usa la consola de Google Cloud o el SDK de Vertex AI para Python para actualizar el número de réplicas de tu grupo de trabajadores. Si tu clúster incluye varios grupos de trabajadores, puedes cambiar individualmente el número de réplicas de cada uno de ellos en una sola solicitud.

SDK de Ray en Vertex AI

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,
)

Consola

  1. En la Google Cloud consola, ve a la página Ray en Vertex AI.

    Ir a la página Ray en Vertex AI

  2. En la lista de clústeres, haz clic en el que quieras modificar.

  3. En la página Detalles del clúster, haz clic en Editar clúster.

  4. En el panel Editar clúster, selecciona el grupo de trabajo que quieras actualizar y, a continuación, modifica el número de réplicas.

  5. Haz clic en Actualizar.

    Espera unos minutos a que se actualice el clúster. Cuando se haya completado la actualización, podrás ver el número de réplicas actualizado en la página Detalles del clúster.

  6. Haz clic en Crear.