Existen dos opciones para escalar clústeres de Ray en Vertex AI: el ajuste de escala automático y el ajuste de escala manual. El ajuste de escala automático permite que el clúster ajuste automáticamente la cantidad de nodos trabajadores según los recursos que requieren, por ejemplo, las tareas y los actores de Ray. Se recomienda el ajuste de escala automático si ejecutas una carga de trabajo pesada y no estás seguro de los recursos necesarios. El escalamiento manual les brinda a los usuarios un control más detallado de los nodos.
El ajuste de escala automático puede reducir los costos de la carga de trabajo, pero agrega sobrecarga de inicio de nodos y puede ser difícil de configurar. Si es la primera vez que usas Ray, te recomendamos que comiences con clústeres que no tengan el ajuste de escala automático y que uses la función de escalamiento manual.
Ajuste de escala automático
Para habilitar la función de ajuste de escala automático de un clúster de Ray, especifica el recuento mínimo de réplicas (min_replica_count
) y el recuento máximo de réplicas (max_replica_count
) de un grupo de trabajadores.
Ten en cuenta lo siguiente:
- Debes configurar la especificación de escalamiento automático de todos los grupos de trabajadores.
- El valor de
min_replica_count
debe ser mayor o igual que1
. - No se admite la velocidad de escalamiento personalizado. Para obtener los valores predeterminados, consulta Velocidad de aumento y disminución de escala en la documentación de Ray.
Establece la especificación del ajuste de escala automático del grupo de trabajadores
Puedes usar la consola de Google Cloud o el SDK de Vertex AI para Python para habilitar la función de escalamiento automático 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, ... )
Console
De acuerdo con la recomendación de prácticas recomendadas de Ray de OSS, se aplica la configuración del recuento lógico de CPU en 0 en el nodo principal de Ray para evitar ejecutar cualquier carga de trabajo en el nodo principal.
En la consola de Google Cloud, ve a la página Ray en Vertex AI.
Haz clic en Crear clúster para abrir el panel Crear clúster.
Para cada paso del panel Crear clúster, revisa o reemplaza la información del clúster predeterminada. Haz clic en Continuar para completar cada paso:
- En Nombre y región, especifica un Nombre y elige una ubicación para tu clúster.
En Configuración de Compute, especifica la configuración del clúster de Ray en el nodo principal, incluidos el tipo de máquina, el tipo y el recuento de aceleradores, el tipo y el tamaño del disco y el recuento de réplicas. De forma opcional, puedes agregar un URI de imagen personalizada para especificar una imagen de contenedor personalizada con el fin de agregar dependencias de Python no proporcionadas por la imagen de contenedor predeterminada. Consulta Imagen personalizada.
En Opciones avanzadas, puedes hacer lo siguiente:
- Especifica tu propia clave de encriptación.
- Especifica una cuenta de servicio personalizada.
- Inhabilita la recopilación de métricas si no necesitas supervisar las estadísticas de recursos de tu carga de trabajo durante el entrenamiento.
Para crear un clúster con un grupo de trabajadores con ajuste de escala automático, proporciona un valor para el recuento máximo de réplicas del grupo de trabajadores.
Haz clic en Crear.
Ajuste de escala manual
A medida que tus cargas de trabajo aumenten o disminuyan en tus clústeres de Ray en Vertex AI, puedes escalar manualmente la cantidad de réplicas para que coincidan con la demanda. Por ejemplo, si tienes capacidad en exceso, puedes reducir tus grupos de trabajadores para ahorrar costos.
Limitaciones del intercambio de tráfico entre VPC
Cuando escalas clústeres, solo puedes cambiar la cantidad de réplicas en tus grupos de trabajadores existentes. Por ejemplo, no puedes agregar ni quitar grupos de trabajadores de tu clúster ni cambiar el tipo de máquina de tus grupos de trabajadores. Además, la cantidad de réplicas de tus grupos de trabajadores no puede ser inferior a una.
Si usas una conexión de intercambio de tráfico entre VPC para conectarte a tus clústeres, hay una limitación en la cantidad máxima de nodos. La cantidad máxima de nodos depende de la cantidad de nodos que tenía el clúster cuando se creó. Para obtener más información, consulta Cálculo de la cantidad máxima de nodos. Esta cantidad máxima incluye no solo tus grupos de nodos trabajadores, sino también tu nodo principal. Si usas la configuración de red predeterminada, la cantidad de nodos no puede superar los límites superiores que se describen en la documentación para crear clústeres.
Cálculo de la cantidad máxima de nodos
Si usas el acceso a servicios privados (intercambio de tráfico de VPC) para conectarte a tus nodos, usa las siguientes fórmulas para verificar que no superes la cantidad máxima 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))
La cantidad máxima de nodos del clúster de Ray en Vertex AI que puedes escalar (M
) depende de la cantidad total inicial de nodos que configuraste (N
). Después de crear el clúster de Ray en Vertex AI, puedes escalar la cantidad total de nodos a cualquier cantidad entre P
y M
inclusive, donde P
es la cantidad de grupos de tu clúster.
La cantidad total inicial de nodos en el clúster y la cantidad objetivo de escalamiento deben estar en el mismo bloque de color.
Actualiza el recuento de réplicas
Puedes usar la consola de Google Cloud o el SDK de Vertex AI para Python para actualizar el recuento de réplicas de tu conjunto de trabajadores. Si tu clúster incluye varios grupos de trabajadores, puedes cambiar individualmente cada uno de sus recuentos de réplicas 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, )
Console
En la consola de Google Cloud, ve a la página Ray en Vertex AI.
En la lista de clústeres, haz clic en el que deseas 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 deseas actualizar y, luego, modifica el recuento de réplicas.
Haz clic en Actualizar.
Espera unos minutos a que se actualice el clúster. Cuando se complete la actualización, podrás ver el recuento de réplicas actualizado en la página Detalles del clúster.
Haz clic en Crear.