Usar una IP privada para el entrenamiento personalizado

Usar IPs privadas para conectarse a los trabajos de entrenamiento proporciona más seguridad de red y menor latencia de red que usar IPs públicas. Para usar una IP privada, debes usar nubes privadas virtuales (VPC) para emparejar tu red con cualquier tipo de trabajo de entrenamiento personalizado de Vertex AI. De esta forma, tu código de entrenamiento puede acceder a direcciones IP privadas dentro de tus redesGoogle Cloud o locales.

En esta guía se muestra cómo ejecutar trabajos de entrenamiento personalizados en tu red después de haber configurado el peering de redes de VPC para emparejar tu red con un recurso CustomJob, HyperparameterTuningJob o personalizado TrainingPipeline de Vertex AI.

Información general

Antes de enviar un trabajo de entrenamiento personalizado mediante una IP privada, debes configurar el acceso a servicios privados para crear conexiones de emparejamiento entre tu red y Vertex AI. Si ya lo has configurado, puedes usar tus conexiones de peering.

En esta guía se explican las siguientes tareas:

  • Información sobre qué intervalos de IP reservar para el entrenamiento personalizado.
  • Verifica el estado de tus conexiones de peering.
  • Realiza un entrenamiento personalizado de Vertex AI en tu red.
  • Comprueba si hay algún entrenamiento activo en una red antes de entrenar otra.
  • Comprueba que tu código de entrenamiento pueda acceder a las IPs privadas de tu red.

Reservar intervalos de IP para el entrenamiento personalizado

Cuando reservas un intervalo de direcciones IP para productores de servicios, Vertex AI y otros servicios pueden usarlo. En esta tabla se muestra el número máximo de tareas de entrenamiento paralelas que puedes ejecutar con intervalos reservados de /16 a /18, suponiendo que Vertex AI use el intervalo casi exclusivamente. Si te conectas con otros productores de servicios que usan el mismo intervalo, asigna un intervalo más amplio para dar cabida a todos y evitar que se agoten las IPs.

Configuración de la máquina para el trabajo de entrenamiento Intervalo reservado Número máximo de tareas paralelas
Hasta 8 nodos.
Por ejemplo: 1 réplica principal en el primer grupo de trabajadores, 6 réplicas en el segundo grupo de trabajadores y 1 trabajador en el tercer grupo de trabajadores (para actuar como servidor de parámetros).
/16 63
/17 31
/18 15
Hasta 16 nodos.
Por ejemplo: 1 réplica principal en el primer grupo de trabajadores, 14 réplicas en el segundo grupo de trabajadores y 1 trabajador en el tercer grupo de trabajadores (para actuar como servidor de parámetros).
/16 31
/17 15
/18 7
Hasta 32 nodos.
Por ejemplo: 1 réplica principal en el primer grupo de trabajadores, 30 réplicas en el segundo grupo de trabajadores y 1 trabajador en el tercer grupo de trabajadores (para actuar como servidor de parámetros).
/16 15
/17 7
/18 3

Más información sobre cómo configurar grupos de trabajadores para el entrenamiento distribuido

Comprobar el estado de las conexiones de emparejamiento

Si tienes conexiones de peering que usas con Vertex AI, puedes enumerarlas para comprobar su estado:

gcloud compute networks peerings list --network NETWORK_NAME

Deberías ver que el estado de tus conexiones de peering es ACTIVE. Más información sobre las conexiones de emparejamiento activas

Realizar un entrenamiento personalizado

Cuando realices un entrenamiento personalizado, debes especificar el nombre de la red a la que quieres que Vertex AI tenga acceso.

En función de cómo realices el entrenamiento personalizado, especifica la red en uno de los siguientes campos de la API:

Si no especificas un nombre de red, Vertex AI ejecutará tu entrenamiento personalizado sin una conexión de peering y sin acceso a las IPs privadas de tu proyecto.

Ejemplo: Crear un CustomJob con la CLI de gcloud

En el siguiente ejemplo se muestra cómo especificar una red al usar la CLI de gcloud para ejecutar un CustomJob que usa un contenedor prediseñado. Si realizas el entrenamiento personalizado de otra forma, añade el campo network como se describe para el tipo de trabajo de entrenamiento personalizado que estés usando.

  1. Crea un archivo config.yaml para especificar la red. Si utilizas una VPC compartida, usa el número de tu proyecto host de VPC.

    Asegúrate de que el nombre de la red tenga el formato correcto:

    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    
    cat <<EOF > config.yaml
    network: projects/PROJECT_NUMBER/global/networks/NETWORK_NAME
    EOF
    
  2. Crea una aplicación de entrenamiento para que se ejecute en Vertex AI.

  3. Crea el CustomJob y pasa tu archivo config.yaml:

    gcloud ai custom-jobs create \
      --region=LOCATION \
      --display-name=JOB_NAME \
      --python-package-uris=PYTHON_PACKAGE_URIS \
      --worker-pool-spec=machine-type=MACHINE_TYPE,replica-count=REPLICA_COUNT,executor-image-uri=PYTHON_PACKAGE_EXECUTOR_IMAGE_URI,python-module=PYTHON_MODULE \
      --config=config.yaml
    

Para saber cómo sustituir los marcadores de posición de este comando, consulta Crear trabajos de entrenamiento personalizados.

Ejecutar tareas en diferentes redes

No puedes realizar un entrenamiento personalizado en una red nueva mientras estés realizando un entrenamiento personalizado en otra red. Antes de cambiar a otra red, debes esperar a que se completen todos los recursos CustomJob, HyperparameterTuningJob y TrainingPipeline personalizados que hayas enviado o cancelarlos.

Probar el acceso a tareas de entrenamiento

En esta sección se explica cómo comprobar que un recurso de entrenamiento personalizado puede acceder a IPs privadas de tu red.

  1. Crea una instancia de Compute Engine en tu red de VPC.
  2. Comprueba las reglas de tu cortafuegos para asegurarte de que no restringen el acceso desde la red de Vertex AI. Si es así, añade una regla para asegurarte de que la red de Vertex AI pueda acceder al intervalo de IPs que has reservado para Vertex AI (y otros productores de servicios).
  3. Configura un servidor local en la instancia de VM para crear un endpoint al que pueda acceder un CustomJob de Vertex AI.
  4. Crea una aplicación de entrenamiento de Python para ejecutarla en Vertex AI. En lugar de código de entrenamiento de modelos, crea código que acceda al endpoint que has configurado en el paso anterior.
  5. Sigue el ejemplo anterior para crear un CustomJob.

Problemas habituales

En esta sección se enumeran algunos problemas habituales al configurar el emparejamiento entre redes de VPC con Vertex AI.

  • Cuando configures Vertex AI para que use tu red, especifica el nombre completo de la red:

    "projects/YOUR_PROJECT_NUMBER/global/networks/YOUR_NETWORK_NAME"

  • Asegúrate de no realizar un entrenamiento personalizado en una red antes de hacerlo en otra.

  • Asegúrate de haber asignado un intervalo de IPs suficiente para todos los productores de servicios a los que se conecta tu red, incluido Vertex AI.

Para obtener más información sobre cómo solucionar problemas, consulta la guía de solución de problemas de emparejamiento entre redes de VPC.

Siguientes pasos