Usar la interfaz de Private Service Connect para Vertex AI Training

Se recomienda usar la interfaz de Private Service Connect para la conectividad privada, ya que reduce las probabilidades de que se agoten las IPs y permite el intercambio de tráfico transitivo.

La interfaz de Private Service Connect se admite en los trabajos personalizados y los recursos persistentes de Vertex AI.

Información general

La interfaz de Private Service Connect se admite en los trabajos personalizados y los recursos persistentes de Vertex AI Training. Para usar la interfaz de Private Service Connect, debes configurar una red de VPC, una subred y una vinculación de red en tu proyecto de usuario. Consulta Configurar una interfaz de Private Service Connect. El nombre de la vinculación de red debe incluirse en la solicitud para crear un trabajo personalizado o un recurso persistente para habilitar la interfaz de Private Service Connect.

Conectividad de salida de Private Service Connect de Vertex AI a otras redes

Vertex AI ha integrado las conectividades de red de salida que admite Private Service Connect (consulte Conectarse a cargas de trabajo de otras redes), con las siguientes excepciones:

  • No se admite la salida a Private Google Access de un cliente. En su lugar, la salida de Private Service Connect se resolvería de forma local para Acceso privado de Google.

  • La salida a Cloud NAT solo se admite cuando se habilita el control de servicio de VPC.

Limitaciones

  • Las interfaces de Private Service Connect no admiten direcciones IP externas.

Precios

Los precios de las interfaces de Private Service Connect se describen en la sección "Uso de una interfaz de Private Service Connect para acceder a una red de VPC de un productor o un consumidor" de la página Todos los precios de redes.

Antes de empezar

Configura los recursos de la interfaz de Private Service Connect en tu proyecto de usuario.

Crear un trabajo de entrenamiento personalizado con una interfaz Private Service Connect

Puedes crear un trabajo de entrenamiento personalizado con una interfaz de Private Service Connect mediante el SDK de Vertex AI para Python o la API REST.

Python

Para crear una tarea de entrenamiento personalizada con PSC-I mediante el SDK de Vertex AI para Python, configura la tarea con la definición aiplatform_v1/services/job_service.

Python

from google.cloud import aiplatform


def create_custom_job_psci_sample(
    project: str,
    location: str,
    bucket: str,
    display_name: str,
    machine_type: str,
    replica_count: int,
    image_uri: str,
    network_attachment: str,
    domain: str,
    target_project: str,
    target_network: str,
):
    """Custom training job sample with PSC Interface Config."""
    aiplatform.init(project=project, location=location, staging_bucket=bucket)

    worker_pool_specs = [{
        "machine_spec": {
            "machine_type": machine_type,
        },
        "replica_count": replica_count,
        "container_spec": {
            "image_uri": image_uri,
            "command": [],
            "args": [],
        },
    }]
    psc_interface_config = {
        "network_attachment": network_attachment,
        "dns_peering_configs": [
            {
                "domain": domain,
                "target_project": target_project,
                "target_network": target_network,
            },
        ],
    }
    job = aiplatform.CustomJob(
        display_name=display_name,
        worker_pool_specs=worker_pool_specs,
    )

    job.run(psc_interface_config=psc_interface_config)

  • project: . Puedes encontrar estos IDs en la página de bienvenida de la Google Cloud consola.
  • location: consulta la lista de ubicaciones disponibles.
  • bucket: sustituye bucket por el nombre de un segmento al que tengas acceso.
  • display_name: nombre visible del recurso persistente.
  • machine_type: Especifica los recursos de computación.
  • replica_count: número de réplicas de trabajadores que se deben usar en cada prueba.
  • service_attachment: nombre del recurso de vinculación de servicio. Se rellena si Private Service Connect está habilitado.
  • image_uri: el URI de una imagen de contenedor Docker con tu código de entrenamiento. Consulta cómo crear una imagen de contenedor personalizada.
  • network_attachment: el nombre o la ruta completa de la vinculación de red que has creado al configurar tus recursos para Private Service Connect.
  • domain: el nombre de DNS de la zona de Cloud DNS privada que has creado al configurar el emparejamiento de DNS privado.
  • target_project: el proyecto que aloja la red de VPC.
  • target_network: nombre de la red de VPC.

REST

Para crear un trabajo de entrenamiento personalizado, envía una solicitud POST mediante el método customJobs.create.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION: la región en la que se ejecutará el contenedor o el paquete de Python.
  • PROJECT_ID: tu ID de proyecto.
  • JOB_NAME: nombre visible del CustomJob.
  • REPLICA_COUNT: número de réplicas de trabajadores que se deben usar. En la mayoría de los casos, asigna el valor 1 a tu primer grupo de trabajadores.
  • Si tu aplicación de entrenamiento se ejecuta en un contenedor personalizado, especifica lo siguiente:
    • IMAGE_URI: el URI de una imagen de contenedor Docker con tu código de entrenamiento. Consulta cómo crear una imagen de contenedor personalizada.
    • NETWORK_ATTACHMENT: nombre o ruta completa de la vinculación de red que has creado al configurar la interfaz de Private Service Connect.
    • Si necesitas un emparejamiento de DNS privado, el campo dns_peering_configs es obligatorio. En esta lista, cada elemento contiene lo siguiente:
      • DOMAIN_SUFFIX: nombre DNS de la zona de Cloud DNS privada que has creado al configurar el emparejamiento de DNS privado.
      • TARGET_PROJECT: el proyecto que aloja la red de VPC.
      • TARGET_NETWORK: nombre de la red de VPC.

Método HTTP y URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs

Cuerpo JSON de la solicitud:

"display_name": JOB_NAME,
"job_spec": {
    "worker_pool_specs": [
      {
        "machine_spec": {
          "machine_type": "n2-standard-4",
        },
        "replica_count": REPLICA_COUNT,
        "container_spec": {
          "image_uri": IMAGE_URI,
        },
      },
    ],
    "psc_interface_config": {
      "network_attachment": NETWORK_ATTACHMENT,
      "dns_peering_configs": [
         {
          "domain": DOMAIN_SUFFIX,
          "target_project": TARGET_PROJECT,
          "target_network": TARGET_NETWORK
         }
      ],
    },
    "enable_web_access": 1
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs"

PowerShell

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente: