Usa la interfaz de Private Service Connect para Vertex AI Training

Se recomienda la interfaz de Private Service Connect para la conectividad privada, ya que reduce la posibilidad de agotamiento de IP y permite el intercambio de tráfico transitivo.

La interfaz de Private Service Connect es compatible con los trabajos personalizados y los recursos persistentes de Agent Platform.

Descripción general

La interfaz de Private Service Connect es compatible con 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 un adjunto de red en tu proyecto de usuario. Consulta Configura una interfaz de Private Service Connect. El nombre del adjunto 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 Gemini Enterprise Agent Platform a otras redes

Gemini Enterprise Agent Platform integró las conectividades de red de salida compatibles con Private Service Connect (consulta Conéctate a cargas de trabajo en otras redes) con los siguientes comportamientos arquitectónicos.

Cómo llegar a las APIs de Google y a los servicios solo internos

Cuando Gemini Enterprise Agent Platform envía tráfico a las APIs de Google, se resuelve de forma local en el entorno del productor y no usa la configuración de Acceso privado a Google ni el enrutamiento de tu red de VPC del consumidor.

Nota:

  • Requisito de identidad de VPC: Debido a que la resolución local omite la ruta de la red de VPC del consumidor, el tráfico no lleva la identidad de tu red de VPC. Esto hará que las solicitudes a los servicios internos de Google, como los servicios de Cloud Run configurados con entrada interna, fallen con un error 404 o 403.
  • Solución de extremo de Private Service Connect: Para llegar a estos servicios internos de forma privada, debes configurar un extremo de Private Service Connect para las APIs de Google en tu red de VPC.
  • Configuración de DNS: Debes asegurarte de que el dominio de servicio (p.ej., *.run.app) se resuelva en la dirección IP interna de tu extremo de Private Service Connect para garantizar que el tráfico permanezca en una ruta puramente privada.

Salida de Internet y Cloud NAT

De forma predeterminada, Gemini Enterprise Agent Platform usa puertas de enlace de Internet administradas por Google para el tráfico saliente en lugar de las rutas de tu red de VPC. La salida con una puerta de enlace de Cloud NAT del consumidor solo se utiliza cuando el proyecto forma parte de un perímetro de Controles del servicio de VPC.

Este perímetro bloquea el acceso predeterminado a Internet, lo que obliga al tráfico a pasar por la interfaz de Private Service Connect y las reglas de enrutamiento de tu red de VPC. Si no usas Controles del servicio de VPC, el tráfico saliente de Internet omitirá por completo tu red de VPC y la puerta de enlace de Cloud NAT.

Limitaciones

Para conocer las funciones y limitaciones de las interfaces de Private Service Connect, consulta Información sobre el acceso a los servicios de Gemini Enterprise Agent Platform a través de interfaces de Private Service Connect.

Precios

Los precios de las interfaces de Private Service Connect se describen en la "Usa una interfaz de Private Service Connect para acceder a una red de VPC del productor o del consumidor" sección en la Precios de todas las redes página.

Antes de comenzar

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

Crea un trabajo de entrenamiento sin servidores con una interfaz de Private Service Connect

Puedes crear un trabajo de entrenamiento sin servidores con la interfaz de Private Service Connect mediante el SDK de Agent Platform para Python o la API de REST.

Python

Para crear un trabajo de entrenamiento sin servidores con PSC-I mediante el SDK de Agent Platform para Python, configura el trabajo con la aiplatform_v1/services/job_service definición.

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 Google Cloud consola página de bienvenida.
  • location: Consulta la lista de ubicaciones disponibles.
  • bucket: Reemplaza bucket por el nombre de un bucket al que tengas acceso.
  • display_name: Es el nombre visible del recurso persistente.
  • machine_type: Especifica los recursos de procesamiento.
  • replica_count: Es la cantidad de réplicas de trabajadores que se deben usar para cada prueba.
  • service_attachment: Es el nombre del recurso de adjunto de servicio. Se propaga si Private Service Connect está habilitado.
  • image_uri: Es el URI de una imagen de contenedor de Docker con el código de entrenamiento. Obtén más información para crear una imagen de contenedor personalizada.
  • network_attachment: Es el nombre o la ruta de acceso completa del adjunto de red que creaste cuando configuraste tus recursos para Private Service Connect.
  • domain: Es el nombre de DNS de la zona del DNS privada de Cloud DNS que creaste cuando configuraste el intercambio de tráfico de DNS privado.
  • target_project: Es el proyecto que aloja la red de VPC.
  • target_network: Es el nombre de la red de VPC.

REST

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

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LOCATION: Es la región en la que se ejecutará el contenedor o el paquete de Python.
  • PROJECT_ID: Es el ID del proyecto. .
  • JOB_NAME: Es un nombre visible para CustomJob.
  • REPLICA_COUNT: Es la cantidad de réplicas de trabajadores que se deben usar. En la mayoría de los casos, debes configurar esta opción como 1 para el primer grupo de trabajadores.
  • Si tu aplicación de entrenamiento se ejecuta en un contenedor personalizado, especifica lo siguiente:
    • IMAGE_URI: Es el URI de una imagen de contenedor de Docker con el código de entrenamiento. Obtén más información para crear una imagen de contenedor personalizada.
    • NETWORK_ATTACHMENT: Es el nombre o la ruta de acceso completa del adjunto de red que creaste cuando configuraste la interfaz de Private Service Connect.
    • Si necesitas el intercambio de tráfico de DNS privado, el campo dns_peering_configs es obligatorio. Para esta lista, cada elemento contiene lo siguiente:
      • DOMAIN_SUFFIX: Es el nombre de DNS de la zona privada de Cloud DNS que tú creaste cuando configuraste el intercambio de tráfico de DNS privado.
      • TARGET_PROJECT: Es el proyecto que aloja la red de VPC.
      • TARGET_NETWORK: Es el 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 que se muestra a continuación: