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.
Prácticas recomendadas para la asignación de subredes
Cuando implementas Ray en Vertex AI mediante el acceso a servicios privados (PSA), es fundamental asegurarse de que el intervalo de direcciones IP asignado sea lo suficientemente grande y contiguo para dar cabida al número máximo de nodos al que se puede ampliar tu clúster. El agotamiento de IPs puede producirse si el intervalo de IPs reservado para tu conexión de PSA es demasiado pequeño o está fragmentado, lo que provoca errores en la implementación.
Como alternativa, te recomendamos que implementes Ray en Vertex AI con una interfaz de Private Service Connect, que reduce el consumo de IP a una subred /28.
Monitorización de Private Service Access
Como práctica recomendada, usa Analizador de redes, una herramienta de diagnóstico de Network Intelligence Center de Google Cloud que monitoriza automáticamente las configuraciones de tu red de nube privada virtual (VPC) para detectar configuraciones erróneas y ajustes no óptimos. Network Analyzer funciona de forma continua, por lo que ejecuta pruebas de forma proactiva y genera estadísticas para ayudarte a identificar, diagnosticar y resolver problemas de red antes de que afecten a la disponibilidad del servicio.
Analizador de red puede monitorizar las subredes que se usan para el acceso a servicios privados (PSA) y proporciona información valiosa específica relacionada con ellas. Se trata de una función fundamental para gestionar servicios como Cloud SQL, Memorystore y Vertex AI, que usan PSA.
La forma principal en la que Network Analyzer monitoriza las subredes de PSA es proporcionando estadísticas de uso de las direcciones IP de los intervalos asignados.
Utilización del intervalo de PSA: Network Analyzer monitoriza activamente el porcentaje de asignación de direcciones IP en los bloques CIDR dedicados que ha asignado a PSA. Esto es importante porque, cuando creas un servicio gestionado (como Vertex AI), Google crea una VPC de productor de servicios y una subred en ella, tomando un intervalo de IPs de tu bloque asignado.
Alertas proactivas: si el uso de la dirección IP de un intervalo asignado de PSA supera un determinado umbral (por ejemplo, el 75%), Network Analyzer genera una alerta. De esta forma, se le alertará de forma proactiva sobre posibles problemas de capacidad, lo que le dará tiempo para ampliar el intervalo de IPs asignado antes de que se quede sin direcciones disponibles para los nuevos recursos de servicio.
Actualizaciones de subredes de acceso a servicios privados
En las implementaciones de Ray en Vertex AI, Google recomienda asignar un bloque CIDR /16 o /17 a tu conexión PSA. De esta forma, se proporciona un bloque contiguo de direcciones IP lo suficientemente grande como para admitir un escalado significativo, con capacidad para 65.536 o 32.768 direcciones IP únicas, respectivamente. Esto ayuda a evitar el agotamiento de las IPs incluso con clústeres de Ray grandes.
Si agotas el espacio de direcciones IP asignado, Google Cloud se devuelve este error:
No se ha podido crear la subred. No se han encontrado bloques libres en los intervalos de IP asignados.
Te recomendamos que amplíes el intervalo de subred actual o que asignes un intervalo que se adapte al crecimiento futuro.
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.