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.
En la Google Cloud consola, ve a la página Ray en Vertex AI.
Haz clic en Crear clúster para abrir el panel Crear clúster.
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:
- En Nombre y región, especifica un Nombre y elige una ubicación para el clúster.
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.
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.
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.
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
En la Google Cloud consola, ve a la página Ray en Vertex AI.
En la lista de clústeres, haz clic en el que quieras modificar.
En la página Detalles del clúster, haz clic en Editar clúster.
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.
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.
Haz clic en Crear.