Usar una IP privada para el entrenamiento personalizado

Usar una IP privada para conectarte a tus trabajos de entrenamiento proporciona más seguridad de red y una latencia de red menor que usar la IP pública. Para usar una IP privada, usa una nube privada virtual (VPC) a fin de intercambiar tráfico de tu red con cualquier tipo de trabajo de entrenamiento personalizado de Vertex AI. Esto permite que los trabajos de entrenamiento accedan a direcciones IP privadas dentro de tus redes locales o de Google Cloud.

En esta guía, se muestra cómo ejecutar trabajos de entrenamiento personalizados en tu red después de que hayas configurado el intercambio de tráfico entre redes de VPC para intercambiar tráfico de tu red con un recurso CustomJob, HyperparameterTuningJob, o TrainingPipeline personalizado de Vertex AI.

Ten en cuenta que no puedes usar direcciones IP privadas para el entrenamiento personalizado si también usas una VM de TPU.

Descripción general

Antes de enviar un trabajo de entrenamiento personalizado con una IP privada, debes configurar el acceso privado a los servicios para crear conexiones de intercambio de tráfico entre tu red y la Vertex AI. Si ya lo configuraste, puedes usar tus conexiones de intercambio de tráfico existentes.

En esta guía, se abarcan las siguientes tareas:

  • Comprender qué rangos de IP para reservar para el entrenamiento personalizado
  • Verificar el estado de las conexiones del intercambio de tráfico existentes.
  • Realizar el entrenamiento personalizado de Vertex AI en tu red.
  • Verifica el entrenamiento activo que se produce en una red antes de entrenar en otra red.
  • Probar que tu código de entrenamiento pueda acceder a las IP privadas de tu red.

Reserva rangos de IP para el entrenamiento personalizado

Cuando reservas un rango de IP para productores de servicios, Vertex AI y otros servicios pueden usarlo. En esta tabla, se muestra la cantidad máxima de trabajos de entrenamiento paralelos que puedes ejecutar con rangos reservados de /16 a /19, en caso de que Vertex AI los use casi de forma exclusiva. Si te conectas con otros productores de servicios mediante el mismo rango, asigna un rango más grande para alojarlos a fin de evitar el agotamiento de la IP.

Configuración de la máquina para el trabajo de entrenamiento Rango reservado Cantidad máxima de trabajos paralelos
Hasta 8 nodos.
Por ejemplo: una réplica principal en el primer grupo de trabajadores, 6 réplicas en el segundo grupo de trabajadores y un trabajador en el tercer grupo de trabajadores (para que actúe como un servidor de parámetros)
/16 63
/17 31
/18 15
/19 7
Hasta 16 nodos.
Por ejemplo: una réplica principal en el primer grupo de trabajadores, 14 réplicas en el segundo grupo de trabajadores y un trabajador en el tercer grupo de trabajadores (para que actúe como un servidor de parámetros)
/16 31
/17 15
/18 7
/19 3
Hasta 32 nodos.
Por ejemplo: una réplica principal en el primer grupo de trabajadores, 30 réplicas en el segundo grupo de trabajadores y un trabajador en el tercer grupo de trabajadores (para que actúe como un servidor de parámetros)
/16 15
/17 7
/18 3
/19 1

Obtén más información sobre cómo configurar grupos de trabajadores para el entrenamiento distribuido.

Verificar el estado de las conexiones de intercambio de tráfico existentes

Si tienes conexiones de intercambio de tráfico existentes que usas con Vertex AI, puedes enumerarlas para verificar el estado:

gcloud compute networks peerings list --network NETWORK_NAME

Deberías ver que el estado de las conexiones de intercambio de tráfico es ACTIVE. Obtén más información sobre las conexiones de intercambio de tráfico activas.

Realiza entrenamientos personalizados

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

Según 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 ejecuta tu entrenamiento personalizado sin una conexión de intercambio de tráfico y sin acceso a IP privadas en tu proyecto.

Ejemplo: crea un CustomJob con la CLI de gcloud

En el siguiente ejemplo, se muestra cómo especificar una red cuando usas la CLI de gcloud para ejecutar un CustomJob que usa un contenedor compilado previamente. Si realizas un entrenamiento personalizado de manera diferente, agrega el campo network como se describe para el tipo de trabajo de entrenamiento personalizado que usas.

  1. Crea un archivo config.yaml para especificar la red. Si usas una VPC compartida, usa el número del 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 ejecutar 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 obtener información sobre cómo reemplazar los marcadores de posición de este comando, lee Crea trabajos de entrenamiento personalizados.

Ejecuta trabajos en diferentes redes

No puedes realizar el entrenamiento personalizado en una red nueva mientras sigues realizando un entrenamiento personalizado en otra red. Antes de cambiar a una red diferente, debes esperar a que finalicen todos los recursos CustomJob, HyperparameterTuningJob y TrainingPipeline personalizados enviados, o bien cancelarlos.

Prueba el acceso al trabajo de entrenamiento

En esta sección, se explica cómo probar si un recurso de entrenamiento personalizado puede acceder a IP privadas en tu red.

  1. Crea una instancia de Compute Engine en tu red de VPC.
  2. Verifica tus reglas de firewall para asegurarte de que no restrinjan la entrada desde la red de Vertex AI. Si es así, agrega una regla para asegurarte de que la red de Vertex AI pueda acceder al rango de IP que reservaste para Vertex AI (y otros productores de servicios).
  3. Configura un servidor local en la instancia de VM para crear un extremo al que pueda acceder un CustomJob de Vertex AI.
  4. Crea una aplicación de entrenamiento de Python para ejecutar en Vertex AI. En lugar del código de entrenamiento de modelos, crea el código que accede al extremo que configuraste en el paso anterior.
  5. Sigue el ejemplo anterior para crear un CustomJob.

Problemas comunes

En esta sección, se enumeran algunos problemas comunes para configurar el intercambio de tráfico entre redes de VPC con Vertex AI.

  • Cuando configures Vertex AI para usar 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 realizar el entrenamiento personalizado en otra red.

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

Para obtener información adicional sobre la solución de problemas, consulta la Guía de solución de problemas de intercambio de tráfico entre redes de VPC.

¿Qué sigue?