Usa el intercambio de tráfico entre redes de VPC con Training

Puedes configurar los trabajos de AI Platform Training para intercambiar tráfico con la nube privada virtual (VPC). Esto permite que los trabajos de entrenamiento accedan a direcciones IP privadas dentro de tus redes locales o de Google Cloud. 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.

En esta guía, se muestra cómo configurar una IP privada con AI Platform Training mediante el uso del intercambio de tráfico entre redes de VPC a fin de intercambiar tráfico de tu red con los trabajos de AI Platform Training. Se recomienda esta guía a los administradores de redes que ya están familiarizados con los conceptos de las herramientas de redes de Google Cloud.

Descripción general

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

  • Configurar el acceso a servicios privados para la VPC. Esto establece una conexión de intercambio de tráfico entre la VPC y la red de VPC compartida de Google
  • Considerar el rango de IP que debes reservar para AI Platform Training
  • Si corresponde, exportar las rutas personalizadas para que AI Platform Training pueda importarlas
  • Verificar el estado de las conexiones del intercambio de tráfico
  • Enviar un trabajo de entrenamiento a tu red
  • Verificar si hay trabajos de entrenamiento activos en una red antes de enviar trabajos a otra red
  • Probar que un trabajo de entrenamiento pueda acceder a las IP privadas de tu red

Antes de comenzar

  • Selecciona la VPC con la que deseas intercambiar tráfico con los trabajos de AI Platform Training.
  • Selecciona o crea un proyecto de Google Cloud para ejecutar trabajos de entrenamiento con AI Platform Training.
  • Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  • Habilita las API de Compute Engine API, AI Platform Training & Prediction, and the Service Networking.

    Habilita las API

  • De forma opcional, puedes usar la VPC compartida. Si usas una VPC compartida, sueles ejecutar trabajos de entrenamiento en un proyecto de Google Cloud distinto al de tu proyecto host de VPC. Habilita las API de Compute Engine y las API de Herramientas de redes de servicios en ambos proyectos. Obtén más información sobre cómo aprovisionar una VPC compartida.
  • Instala la CLI de gcloud si deseas ejecutar los ejemplos de la línea de comandos de gcloud de esta guía.

Permisos

Si no eres propietario o editor de un proyecto, asegúrate de tener la función de administrador de red de Compute, que incluya los permisos que necesitas para administrar los recursos de herramientas de redes.

Para ejecutar trabajos en AI Platform Training, necesitas los permisos que se incluyen en las funciones de Administrador de AI Platform Training o Desarrollador de AI Platform Training. Obtén más información sobre las funciones de IAM de AI Platform Training.

Intercambia tráfico con una red local

Hay pasos adicionales para el intercambio de tráfico entre redes de VPC con una red local:

  1. Conecta tu red local a tu VPC. Puedes usar un túnel VPN o una interconexión.
  2. Configura rutas personalizadas desde la VPC hasta tu red local.
  3. Exporta tus rutas personalizadas para que AI Platform Training pueda importarlas.

Configura el acceso a servicios privados de tu VPC

Cuando configuras el acceso privado a servicios, debes establecer una conexión privada entre tu red y una red de Google o de un servicio de terceros (productores de servicios). En este caso, AI Platform Training es un productor de servicios. Para configurar el acceso a servicios privados, debes reservar un rango de IP para los productores de servicios y, luego, crear una conexión de intercambio de tráfico con AI Platform Training.

Si ya tienes una VPC con el acceso a servicios privados configurado y deseas usar esa VPC para intercambiar tráfico con tu trabajo de entrenamiento, continúa con la exportación de las rutas personalizadas.

  1. Configura las variables de entorno para el ID del proyecto, el nombre de la región, el nombre del rango reservado y el nombre de la red.
    • Si usas una VPC compartida, usa el ID de tu proyecto host de VPC. De lo contrario, usa el ID del proyecto de Google Cloud que usas para ejecutar trabajos de entrenamiento.
    • Selecciona una región apta para usar con AI Platform Training.
  2. Habilita las API necesarias. Si usas una VPC compartida, asegúrate de habilitar las API en tu proyecto host de VPC y el proyecto de Google Cloud que usas para ejecutar trabajos de entrenamiento.
  3. Configura un rango reservado mediante gcloud compute addresses create.
  4. Establece una conexión de intercambio de tráfico entre tu proyecto host de VPC y las Herramientas de redes de servicios de Google mediante gcloud services vpc-peerings connect.

    PROJECT_ID=YOUR_PROJECT_ID
    gcloud config set project $PROJECT_ID
    
    REGION=YOUR_REGION
    
    # This is for display only; you can name the range anything.
    PEERING_RANGE_NAME=google-reserved-range
    
    NETWORK=YOUR_NETWORK_NAME
    
    # NOTE: `prefix-length=16` means a CIDR block with mask /16 will be
    # reserved for use by Google services, such as AI Platform Training.
    gcloud compute addresses create $PEERING_RANGE_NAME \
      --global \
      --prefix-length=16 \
      --description="peering range for Google service" \
      --network=$NETWORK \
      --purpose=VPC_PEERING
    
    # Create the VPC connection.
    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --network=$NETWORK \
      --ranges=$PEERING_RANGE_NAME \
      --project=$PROJECT_ID
    

Obtén más información sobre el acceso privado a servicios.

Reserva rangos de IP para AI Platform Training

Cuando reservas un rango de IP para productores de servicios, AI Platform Training y otros servicios pueden usarlo. Por lo tanto, si planeas conectar otros servicios al mismo rango reservado, también debes asegurarte de que el rango sea lo suficientemente grande como para evitar el agotamiento de la IP.

Puedes estimar de manera conservadora la cantidad de direcciones que usa cada trabajo de entrenamiento de la siguiente manera:

nextPow2(32 * NUMBER_OF_POOLS * max(POOL_SIZE))

En la siguiente tabla, se muestra la cantidad máxima de trabajos de entrenamiento paralelos que puedes ejecutar con rangos reservados de /16 a /19, si se supone que AI Platform Training usa el rango casi de forma exclusiva.

Configuración de la máquina para el trabajo de entrenamiento Rango reservado Cantidad máxima de trabajos paralelos
Hasta 8 nodos.
Por ejemplo: 6 trabajadores, 1 instancia principal y 1 servidor de parámetros.
/16 63
/17 31
/18 15
/19 7
Hasta 16 nodos.
Por ejemplo: 14 trabajadores, 1 instancia principal y 1 servidor de parámetros.
/16 31
/17 15
/18 7
/19 3
Hasta 32 nodos.
Por ejemplo: 30 trabajadores, 1 instancia principal y 1 servidor de parámetros.
/16 15
/17 7
/18 3
/19 1

Obtén más información sobre la especificación de tipos de máquinas para trabajos de entrenamiento.

Exporta rutas personalizadas

Si usas rutas personalizadas, debes exportarlas para que AI Platform Training pueda importarlas. Si no usas rutas personalizadas, continúa con el envío del trabajo de entrenamiento.

Para exportar rutas personalizadas, actualiza la conexión de intercambio de tráfico en tu VPC. Exportar las rutas personalizadas envía todas las rutas estáticas y dinámicas aptas que están en tu red de VPC, como las rutas a tu red local y a las redes de productores de servicios (en este caso, AI Platform Training). Esto establece las conexiones necesarias y permite que los trabajos de entrenamiento envíen el tráfico de vuelta a tu red local.

Obtén más información sobre las conexiones privadas con redes locales.

Consola

  1. Ve a la página Intercambio de tráfico entre redes de VPC en la consola de Google Cloud.
    Ir a la página Intercambio de tráfico entre redes de VPC
  2. Selecciona la conexión de intercambio de tráfico que quieres actualizar.
  3. Haz clic en Editar.
  4. Selecciona Exportar rutas personalizadas.

gcloud

  1. Busca el nombre de la conexión de intercambio de tráfico que deseas actualizar. Si tienes varias conexiones de intercambio de tráfico, omite la marca --format.

    gcloud services vpc-peerings list \
      --network=$NETWORK \
      --service=servicenetworking.googleapis.com \
      --project=$PROJECT_ID \
      --format "value(peering)"
    
  2. Actualiza la conexión de intercambio de tráfico a fin de exportar rutas personalizadas.

    gcloud compute networks peerings update PEERING-NAME \
        --network=$NETWORK \
        --export-custom-routes \
        --project=$PROJECT_ID
    

Verifica el estado de las conexiones de intercambio de tráfico

Para verificar que las conexiones de intercambio de tráfico estén activas, puedes enumerarlas mediante el siguiente comando:

gcloud compute networks peerings list --network $NETWORK

El estado del intercambio de tráfico que acabas de crear debería estar ACTIVE. Obtén más información sobre las conexiones de intercambio de tráfico activas.

Envía el trabajo de entrenamiento

Cuando envías el trabajo de entrenamiento, debes especificar el nombre de la red a la que deseas que AI Platform Training tenga acceso.

Si envías un trabajo de entrenamiento sin un nombre de red, este se ejecuta de forma predeterminada sin una conexión de intercambio de tráfico y sin acceso a las IP privadas en tu proyecto.

  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
    trainingInput:
      scaleTier: BASIC
      network: projects/$PROJECT_NUMBER/global/networks/$NETWORK
    EOF
    
  2. Crea una aplicación de entrenamiento para enviarla a AI Platform Training.

  3. Especifica otros parámetros para tu trabajo de entrenamiento. Obtén más información sobre los parámetros necesarios para enviar un trabajo de entrenamiento.

    TRAINER_PACKAGE_PATH="PATH_TO_YOUR_TRAINING_APPLICATION"
    now=$(date +"%Y%m%d_%H%M%S")
    JOB_NAME="YOUR_JOB_NAME_$now"
    MAIN_TRAINER_MODULE="trainer.task"
    JOB_DIR="gs://PATH_TO_OUTPUT_DIRECTORY"
    REGION="us-east1"
    RUNTIME_VERSION="2.11"
    PYTHON_VERSION="3.7"
    
  4. Envía el trabajo y pasa tu archivo config.yaml:

    gcloud ai-platform jobs submit training $JOB_NAME \
      --module-name $MAIN_TRAINER_MODULE \
      --job-dir $JOB_DIR \
      --region $REGION \
      --runtime-version $RUNTIME_VERSION \
      --python-version $PYTHON_VERSION \
      --package-path $TRAINER_PACKAGE_PATH \
      --config config.yaml
    

Ejecuta trabajos en diferentes redes

No puedes enviar trabajos de entrenamiento a una red nueva mientras aún existen trabajos de entrenamiento activos en otra red. Antes de cambiar a una red diferente, debes esperar a que finalicen todos los trabajos de entrenamiento enviados o cancelarlos. Por ejemplo, si configuraste una red para pruebas y enviaste trabajos de entrenamiento a esa red, deberás buscar trabajos activos en la red de prueba y asegurarte de que se hayan completado o cancelado antes de enviar trabajos de entrenamiento a una red diferente para la producción.

Enumera los trabajos de entrenamiento que aún están activos en una red:

PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
NETWORK_FULL_NAME="projects/$PROJECT_NUMBER/global/networks/$NETWORK"

gcloud ai-platform jobs list \
  --filter "(state=queued OR state=running) AND (trainingInput.network=$NETWORK_FULL_NAME)"

El resultado puede ser similar al siguiente:

JOB_ID                                             STATUS     CREATED
job_20200502_151443                                QUEUED     2020-05-02T15:14:47

Si se enumeran los trabajos, puedes esperar a que se completen o usar gcloud ai-platform jobs cancel para cancelarlos a todos.

Prueba el acceso al trabajo de entrenamiento

Para probar que tu trabajo de entrenamiento pueda acceder a un extremo de tu red, debes configurar un extremo en tu red y enviar un trabajo de entrenamiento que acceda a él. Obtén más información en la guía para probar tu conexión de intercambio de tráfico.

Soluciona problemas

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

  • Cuando envíes el trabajo de entrenamiento, usa el nombre completo de la red:

    "projects/YOUR_PROJECT_NUMBER/global/networks/YOUR_NETWORK_NAME"

  • No uses TPU en un trabajo de entrenamiento de intercambio de tráfico con tu red. Las TPU no son compatibles con el intercambio de tráfico entre redes de VPC en AI Platform Training.

  • Asegúrate de que no haya trabajos de entrenamiento activos en una red antes de enviar estos trabajos a una red diferente.

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

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?