Crea un clúster de Ray en Gemini Enterprise Agent Platform

En este documento, se proporcionan instrucciones para configurar un clúster de Ray en Gemini Enterprise Agent Platform para satisfacer diversas necesidades. Por ejemplo, para compilar tu imagen, consulta Imagen personalizada. Algunas empresas pueden usar redes privadas. En este documento, se aborda la interfaz de Private Service Connect para Ray en Gemini Enterprise Agent Platform. Otro caso de uso implica acceder a archivos remotos como si fueran locales (consulta Ray en el sistema de archivos de red de Agent Platform).

Descripción general

Entre los temas que se tratan, se incluyen los siguientes:

Crea un clúster de Ray

Puedes usar la consola de Google Cloud o el SDK de Agent Platform para Python para crear un clúster de Ray. Un clúster puede tener hasta 2,000 nodos. Existe un límite superior de 1,000 nodos dentro de un grupo de trabajadores. No hay límite para la cantidad de grupos de trabajadores, pero una gran cantidad, como por ejemplo 1,000 grupos de trabajadores con un nodo cada uno, puede afectar de forma negativa el rendimiento del clúster.

Antes de comenzar, lee la descripción general de Ray en Gemini Enterprise Agent Platform y configura todas las herramientas de requisitos previos que necesitas.

Un clúster de Ray en Agent Platform puede tardar entre 10 y 20 minutos en iniciarse después de crearlo.

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.

  1. En la consola de Google Cloud , ve a la página Ray on Agent Platform.

    Ir a la página de Ray en Agent Platform

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

  3. 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:

    1. En Nombre y región, especifica un Nombre y elige una región para tu clúster.

    2. En Configuración de Compute, especifica la configuración del clúster de Ray en el nodo principal de Gemini Enterprise Agent Platform, 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, agrega 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.
    3. (Opcional) Para implementar un extremo privado en tu clúster, el método recomendado es usar Private Service Connect. Para obtener más detalles, consulta Interfaz de Private Service Connect para Ray en Agent Platform.

  4. Haz clic en Crear.

SDK de Ray on Agent Platform

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.

Desde un entorno interactivo de Python, usa lo siguiente para crear el clúster de Ray en Gemini Enterprise Agent Platform:

import ray
import vertex_ray
from google.cloud import aiplatform
from vertex_ray import Resources
from vertex_ray.util.resources import NfsMount

# Define a default CPU cluster, machine_type is n1-standard-16, 1 head node and 1 worker node
head_node_type = Resources()
worker_node_types = [Resources()]

# Or define a GPU cluster.
head_node_type = Resources(
  machine_type="n1-standard-16",
  node_count=1,
  custom_image="us-docker.pkg.dev/my-project/ray-custom.2-9.py310:latest",  # Optional. When not specified, a prebuilt image is used.
)

worker_node_types = [Resources(
  machine_type="n1-standard-16",
  node_count=2,  # Must be >= 1
  accelerator_type="NVIDIA_TESLA_T4",
  accelerator_count=1,
  custom_image="us-docker.pkg.dev/my-project/ray-custom.2-9.py310:latest",  # When not specified, a prebuilt image is used.
)]
# Optional. Create cluster with Network File System (NFS) setup.
nfs_mount = NfsMount(
    server="10.10.10.10",
    path="nfs_path",
    mount_point="nfs_mount_point",
)
aiplatform.init()
# Initialize Agent Platform to retrieve projects for downstream operations.
# Create the Ray cluster on Agent Platform
CLUSTER_RESOURCE_NAME = vertex_ray.create_ray_cluster(
  head_node_type=head_node_type,
  network=NETWORK, #Optional
  worker_node_types=worker_node_types,
  python_version="3.10",  # Optional
  ray_version="2.47",  # Optional
  cluster_name=CLUSTER_NAME, # Optional
  service_account=SERVICE_ACCOUNT,  # Optional
  enable_metrics_collection=True,  # Optional. Enable metrics collection for monitoring.
  labels=LABELS,  # Optional.
  nfs_mounts=[nfs_mount],  # Optional.

)

Aquí:

  • CLUSTER_NAME: Es un nombre para el clúster de Ray en Gemini Enterprise Agent Platform que debe ser único en todo el proyecto.

  • NETWORK: (Opcional) Nombre completo de tu red de VPC, en el formato projects/PROJECT_ID/global/networks/VPC_NAME. Para establecer un extremo privado en lugar de un extremo público para tu clúster, especifica una red de VPC que se usará con Ray en Agent Platform. Para obtener más información, consulta Conectividad privada y pública.

  • VPC_NAME: Es opcional. La VPC en la que opera la VM .

  • PROJECT_ID: Es el ID del proyecto de Google Cloud . Puedes encontrar el ID del proyecto en la página de bienvenida de la consola de Google Cloud .

  • SERVICE_ACCOUNT: Es opcional. Es la cuenta de servicio para ejecutar aplicaciones de Ray en el clúster. Otorga los roles necesarios.

  • LABELS: (Opcional) Las etiquetas con metadatos definidos por el usuario que se usan para organizar los clústeres de Ray. Las claves y valores de etiquetas no pueden tener más de 64 caracteres (puntos de código Unicode) y solo pueden contener letras en minúscula, caracteres numéricos, guiones bajos y guiones. Se permite el uso de caracteres internacionales. Consulta https://goo.gl/xmQnxf para obtener más información y ejemplos de etiquetas.

Deberías ver el siguiente resultado hasta que el estado cambie a RUNNING:

none [Ray on Agent Platform]: Cluster State = State.PROVISIONING Waiting for cluster provisioning; attempt 1; sleeping for 0:02:30 seconds ... [Ray on Agent Platform]: Cluster State = State.RUNNING

Ten en cuenta lo siguiente:

  • El primer nodo es el nodo principal.

  • Los tipos de máquinas de TPU no son compatibles.

Administración del ciclo de vida

Durante el ciclo de vida de un clúster de Ray en Gemini Enterprise Agent Platform, cada acción se asocia con un estado. En la siguiente tabla, se resumen el estado de facturación y la opción de administración para cada estado. En la documentación de referencia, se proporciona una definición para cada uno de estos estados.

Acción Estado ¿Facturado? ¿Está disponible la acción de borrar? ¿Está disponible la acción de cancelación?
El usuario crea un clúster APROVISIONAMIENTO No No No
El usuario aumenta o reduce la escala verticalmente de forma manual. ACTUALIZANDO Sí, según el tamaño en tiempo real Sí No
El clúster se ejecuta EN EJECUCIÓN Sí Sí No aplicable (puedes borrarlo)
El clúster aumenta o reduce la escala verticalmente de forma automática. ACTUALIZANDO Sí, según el tamaño en tiempo real Sí No
El usuario borra el clúster DETENIENDO No No No aplicable: ya se está deteniendo
El clúster entra en un estado de error ERROR No Sí No aplicable (puedes borrarlo)
No aplicable STATE_UNSPECIFIED No Sí No aplicable

Imagen personalizada (opcional)

Las imágenes compiladas previamente se alinean con la mayoría de los casos prácticos. Si quieres compilar tu imagen, usa las imágenes compiladas previamente de Ray en Gemini Enterprise Agent Platform como imagen base. Consulta la documentación de Docker para saber cómo compilar tus imágenes a partir de una imagen base.

Estas imágenes base incluyen una instalación de Python, Ubuntu y Ray. También incluyen dependencias como las siguientes:

  • python-json-logger
  • google-cloud-resource-manager
  • ca-certificates-java
  • libatlas-base-dev
  • liblapack-dev
  • g++, libio-all-perl
  • libyaml-0-2.

Conectividad privada y pública

De forma predeterminada, Ray en Agent Platform crea un extremo público y seguro para el desarrollo interactivo con el cliente de Ray en clústeres de Ray en Gemini Enterprise Agent Platform. Usa la conectividad pública para casos de desarrollo o efímeros. Se puede acceder a este extremo público a través de Internet. Solo los usuarios autorizados que tienen, como mínimo, permisos de rol de usuario de Gemini Enterprise Agent Platform en el proyecto de usuario del clúster de Ray pueden acceder al clúster.

Si necesitas una conexión privada a tu clúster o si usas los Controles del servicio de VPC, el intercambio de tráfico de VPC es compatible con los clústeres de Ray en Gemini Enterprise Agent Platform. Solo se puede acceder a los clústeres con un extremo privado desde un cliente dentro de una red de VPC que intercambia tráfico con Gemini Enterprise Agent Platform.

Para configurar la conectividad privada con el intercambio de tráfico de VPC para Ray en Agent Platform, selecciona una red de VPC cuando crees tu clúster. La red de VPC requiere una conexión de servicios privados entre tu red de VPC y Gemini Enterprise Agent Platform. Si usas Ray en Agent Platform en la consola, puedes configurar tu conexión de acceso privado a servicios cuando crees el clúster.

Si quieres usar los Controles del servicio de VPC y el intercambio de tráfico entre VPC con clústeres de Ray en Agent Platform, se requiere una configuración adicional para usar el panel de Ray y la shell interactiva. Sigue las instrucciones que se abordan en el panel de Ray y la shell interactiva con VPC-SC + intercambio de tráfico entre VPC para configurar la shell interactiva con VPC-SC y el intercambio de tráfico entre VPC en tu proyecto de usuario.

Después de crear el clúster de Ray en Gemini Enterprise Agent Platform, puedes conectarte al nodo principal con el SDK de Agent Platform para Python. El entorno de conexión, como una VM de Compute Engine o una instancia de Vertex AI Workbench, debe estar en la red de VPC que intercambia tráfico con Gemini Enterprise Agent Platform. Ten en cuenta que una conexión de servicios privados tiene una cantidad limitada de direcciones IP, lo que puede provocar el agotamiento de la dirección IP. Por lo tanto, recomendamos usar conexiones privadas para clústeres de larga duración.

Interfaz de Private Service Connect para Ray en Gemini Enterprise Agent Platform

La entrada y la salida de la interfaz de Private Service Connect se admiten en los clústeres de Ray en Gemini Enterprise Agent Platform.

Para usar la salida de la interfaz de Private Service Connect, sigue las instrucciones de la siguiente sección. Si los Controles del servicio de VPC no están habilitados, los clústeres con salida de interfaz de Private Service Connect usan el endpoint público seguro para la entrada con el cliente de Ray.

Si los Controles del servicio de VPC están habilitados, la entrada de la interfaz de Private Service Connect se usa de forma predeterminada con la salida de la interfaz de Private Service Connect. Para conectarte con el cliente de Ray o enviar trabajos desde un notebook para un clúster con entrada de interfaz de Private Service Connect, asegúrate de que el notebook esté dentro de la VPC y la subred del proyecto del usuario. Para obtener más detalles sobre cómo configurar los Controles del servicio de VPC, consulta Controles del servicio de VPC con Gemini Enterprise Agent Platform.

Diagrama de habilitación de la interfaz de Private Service Connect

Habilita la interfaz de Private Service Connect

Sigue la guía para configurar tus recursos y configurar tu interfaz de Private Service Connect. Después de configurar tus recursos, ya puedes habilitar la interfaz de Private Service Connect en tu clúster de Ray en Gemini Enterprise Agent Platform.

Console

  1. Mientras creas tu clúster y después de especificar el Nombre y la región y la Configuración de procesamiento, aparecerá la opción Herramientas de redes.

    Especifica la red en la consola

  2. Para configurar un adjunto de red, realiza una de las siguientes acciones:

    • Usa el nombre de NETWORK_ATTACHMENT_NAME que especificaste cuando configuraste tus recursos para Private Service Connect.
    • Para crear un adjunto de red nuevo, haz clic en el botón Crear adjunto de red que aparece en el menú desplegable.

    Crea una red nueva en la consola

  3. Haz clic en Crear adjunto de red.

  4. En la subtarea que aparece, especifica un nombre, una red y una subred para el adjunto de red nuevo.

    Adjunto de red

  5. Haz clic en Crear.

SDK de Ray on Agent Platform

El SDK de Ray on Agent Platform forma parte del SDK de Agent Platform para Python. Para obtener información sobre cómo instalar o actualizar el SDK de Agent Platform para Python, consulta Instala el SDK de Agent Platform para Python. Para obtener más información, consulta la documentación de la referencia de la API de Python del SDK de Agent Platform.

from google.cloud import aiplatform
import vertex_ray

# Initialization
aiplatform.init()

# Create a default cluster with network attachment configuration

psc_config = vertex_ray.PscIConfig(network_attachment=NETWORK_ATTACHMENT_NAME)
cluster_resource_name = vertex_ray.create_ray_cluster(
   psc_interface_config=psc_config,
)

Aquí:

  • NETWORK_ATTACHMENT_NAME: Es el nombre que especificaste cuando configuraste tus recursos para Private Service Connect en tu proyecto de usuario.

Sistema de archivos de red (NFS) de Ray on Agent Platform

Para que los archivos remotos estén disponibles en tu clúster, activa los recursos compartidos del sistema de archivos de red (NFS). Luego, tus trabajos pueden acceder a archivos remotos como si fueran locales, lo que permite una alta capacidad de procesamiento y una latencia baja.

Configuración de VPC

Existen dos opciones para configurar la VPC:

  1. Crea un adjunto de red de interfaz de Private Service Connect. (Recomendado)
  2. Configura el intercambio de tráfico entre redes de VPC.

Configura tu instancia de NFS

Para obtener más detalles sobre cómo crear una instancia de Filestore, consulta Crea una instancia. Si usas el método de interfaz de Private Service Connect, no tienes que seleccionar el modo de acceso privado a servicios cuando creas el almacén de archivos.

Usa el sistema de archivos de red (NFS)

Para usar el sistema de archivos de red, especifica una red o un adjunto de red (recomendado).

Console

  1. En el paso Herramientas de redes de la página de creación, después de especificar una red o un adjunto de red. Para ello, haz clic en Agregar activación de NFS en la sección Sistema de archivos de red (NFS) y especifica una activación de NFS (servidor, ruta de acceso y punto de activación).

    Campo Descripción
    server La dirección IP de tu servidor NFS. Debe ser una dirección privada en tu VPC.
    path La ruta del recurso compartido de NFS. Esta debe ser una ruta de acceso absoluta que comience con /.
    mountPoint El punto de activación local. Debe ser un nombre de directorio UNIX válido. Por ejemplo, si el punto de activación local es sourceData, especifica la ruta de acceso /mnt/nfs/ sourceData de tu instancia de VM de entrenamiento.

    Para obtener más información, consulta Dónde especificar recursos de procesamiento.

  2. Especifica un servidor, una ruta de acceso y un punto de activación. Sistema de archivos NFS

  3. Haz clic en Crear. Esto crea el clúster de Ray.

Panel de Ray y shell interactivo con VPC-SC + intercambio de tráfico entre VPC

  1. Configura peered-dns-domains.

    {
      VPC_NAME=NETWORK_NAME
      REGION=LOCATION
      gcloud services peered-dns-domains create training-cloud \
      --network=$VPC_NAME \
      --dns-suffix=$REGION.aiplatform-training.cloud.google.com.
    
      # Verify
      gcloud beta services peered-dns-domains list --network $VPC_NAME;
    }
        
    • NETWORK_NAME: Cambia a la red con intercambio de tráfico.

    • LOCATION: La ubicación deseada (por ejemplo, us-central1).

  2. Configura DNS managed zone.

    {
      PROJECT_ID=PROJECT_ID
      ZONE_NAME=$PROJECT_ID-aiplatform-training-cloud-google-com
      DNS_NAME=aiplatform-training.cloud.google.com
      DESCRIPTION=aiplatform-training.cloud.google.com
    
      gcloud dns managed-zones create $ZONE_NAME  \
      --visibility=private  \
      --networks=https://www.googleapis.com/compute/v1/projects/$PROJECT_ID/global/networks/$VPC_NAME  \
      --dns-name=$DNS_NAME  \
      --description="Training $DESCRIPTION"
    }
        
    • PROJECT_ID: ID del proyecto Puedes encontrar estos IDs en la página de bienvenida de la consola de Google Cloud .

  3. Registro de la transacción de DNS.

    {
      gcloud dns record-sets transaction start --zone=$ZONE_NAME
    
      gcloud dns record-sets transaction add \
      --name=$DNS_NAME. \
      --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
      --zone=$ZONE_NAME \
      --ttl=300
    
      gcloud dns record-sets transaction add \
      --name=*.$DNS_NAME. \
      --type=CNAME $DNS_NAME. \
      --zone=$ZONE_NAME \
      --ttl=300
    
      gcloud dns record-sets transaction execute --zone=$ZONE_NAME
    }
        
  4. Envía un trabajo de entrenamiento con la shell interactiva + VPC-SC + intercambio de tráfico entre VPC habilitado.

Responsabilidad compartida

Proteger las cargas de trabajo en Gemini Enterprise Agent Platform es una responsabilidad compartida. Si bien Gemini Enterprise Agent Platform actualiza con regularidad las configuraciones de infraestructura para abordar las vulnerabilidades de seguridad, Gemini Enterprise Agent Platform no actualiza de forma automática los clústeres de Ray en Gemini Enterprise Agent Platform y los recursos persistentes existentes para evitar interrumpir las cargas de trabajo en ejecución. Por lo tanto, eres responsable de tareas como las siguientes:

  1. Borra y vuelve a crear de forma periódica tus clústeres de Ray en Gemini Enterprise Agent Platform y los recursos persistentes para usar las versiones más recientes de la infraestructura. Gemini Enterprise Agent Platform recomienda volver a crear tus clústeres y recursos persistentes al menos una vez cada 30 días.
  2. Configura correctamente las imágenes personalizadas que uses.

Para obtener más información, consulta Responsabilidad compartida.

¿Qué sigue?