Usar una IP privada para conectarse a los trabajos de entrenamiento proporciona más seguridad de red y menor latencia de red que usar una IP pública. Para usar una IP privada, debes usar Virtual Private Cloud (VPC) para emparejar tu red con cualquier tipo de trabajo de entrenamiento sin servidor 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 explica cómo ejecutar trabajos de entrenamiento sin servidor 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 sin servidor 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 los intervalos de IP que se deben reservar para el entrenamiento sin servidor.
- Verifica el estado de tus conexiones de peering.
- Realiza entrenamientos sin servidor 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 sin servidor
Cuando reservas un intervalo de IPs 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 mayor 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 interconexión
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 emparejamiento es ACTIVE.
Más información sobre las conexiones de emparejamiento activas
Realizar un entrenamiento sin servidor
Cuando realices un entrenamiento sin servidor, 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 sin servidor, especifica la red en uno de los siguientes campos de la API:
Si vas a crear un
CustomJob, especifica el campoCustomJob.jobSpec.network.Si usas Google Cloud CLI, puedes usar la marca
--configen elgcloud ai custom-jobs createcomando para especificar el camponetwork.Si vas a crear un
HyperparameterTuningJob, especifica el campoHyperparameterTuningJob.trialJobSpec.network.Si usas la CLI de gcloud, puedes usar la marca
--configen el comandogcloud ai hpt-tuning-jobs createpara especificar el camponetwork.Más información sobre cómo crear una
HyperparameterTuningJobSi vas a crear un
TrainingPipelinesin ajuste de hiperparámetros, especifica el campoTrainingPipeline.trainingTaskInputs.network.Más información sobre cómo crear un
TrainingPipelinepersonalizadoSi vas a crear un
TrainingPipelinecon ajuste de hiperparámetros, especifica el campoTrainingPipeline.trainingTaskInputs.trialJobSpec.network.
Si no especificas un nombre de red, Vertex AI ejecutará tu entrenamiento sin servidor 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 sin servidor de otra forma, añade el campo network como se describe para el tipo de tarea de entrenamiento sin servidor que estés usando.
Crea un archivo
config.yamlpara especificar la red. Si utilizas una VPC compartida, usa el número de tu proyecto host de la 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 EOFCrea una aplicación de entrenamiento para ejecutarla en Vertex AI.
Crea el
CustomJoby pasa tu archivoconfig.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 sin servidor en una red nueva mientras sigues realizando un entrenamiento sin servidor 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 bien cancelarlos.
Probar el acceso a tareas de entrenamiento
En esta sección se explica cómo comprobar que un recurso de entrenamiento sin servidor puede acceder a IPs privadas de tu red.
- Crea una instancia de Compute Engine en tu red de VPC.
- 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).
- Configura un servidor local en la instancia de VM para crear un endpoint al que pueda acceder un
CustomJobde Vertex AI. - Crea una aplicación de entrenamiento de Python para ejecutarla en Vertex AI. En lugar de código de entrenamiento del modelo, crea código que acceda al endpoint que has configurado en el paso anterior.
- 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 sin servidor 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
- Consulta más información sobre el emparejamiento entre redes de VPC.
- Consulta las arquitecturas de referencia y las prácticas recomendadas para diseñar una VPC.