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 Vertex AI.
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 Cómo configurar 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 Vertex AI a otras redes
Vertex AI integró las conectividades de red de salida compatibles con Private Service Connect (consulta Conexión a cargas de trabajo en otras redes) con los siguientes comportamientos de arquitectura.
Cómo acceder a las APIs de Google y a los servicios solo internos
Cuando Vertex AI envía tráfico a las APIs de Google, se resuelve de forma local dentro del entorno del productor y no usa la configuración ni el enrutamiento del Acceso privado a Google de tu red de VPC del consumidor.
Nota:
- Requisito de identidad de la 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 provocará 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 acceder 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 del servicio (p.ej., *.run.app) se resuelve 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, Vertex AI usa puertas de enlace de Internet administradas por Google para el tráfico saliente en lugar de las rutas de tu red de VPC. El tráfico de salida que usa una puerta de enlace de Cloud NAT del consumidor solo se utiliza cuando el proyecto forma parte de un perímetro de Control del servicio de VPC.
Este perímetro bloquea el acceso predeterminado a Internet y fuerza el tráfico a través de la interfaz de Private Service Connect y las reglas de enrutamiento de tu red de VPC. Si no usas los Controles del servicio de VPC, el tráfico de Internet saliente 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 Acerca del acceso a los servicios de Vertex AI a través de las interfaces de Private Service Connect.
Precios
Los precios de las interfaces de Private Service Connect se describen en la sección "Usa una interfaz de Private Service Connect para acceder a una red de VPC del productor o del consumidor" en la página Todos los precios de redes.
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 de Vertex AI con una interfaz de Private Service Connect
Puedes crear un trabajo de entrenamiento sin servidores con la interfaz de Private Service Connect a través del SDK de Vertex AI para Python o la API de REST.
Python
Para crear un trabajo de entrenamiento sin servidores con PSC-I usando el SDK de Vertex AI para Python, configura el trabajo con la definición de aiplatform_v1/services/job_service.
Python
project: . Puedes encontrar estos IDs en la página de bienvenida de la consola de Google Cloud .location: Consulta la lista de ubicaciones disponibles.bucket: Reemplazabucketpor el nombre de un bucket al que tienes acceso.display_name: Es el nombre visible del recurso persistente.machine_type: Especifica los recursos de procesamiento.replica_count: 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 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: 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: El ID del proyecto.
- JOB_NAME: Un nombre visible para
CustomJob. - REPLICA_COUNT: La cantidad de réplicas de trabajadores que se deben usar. En la mayoría de los casos, debes configurar esta opción como
1para 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 sobre cómo 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 intercambio de tráfico de DNS privado, el campo
dns_peering_configses obligatorio. En esta lista, cada elemento contiene lo siguiente:- DOMAIN_SUFFIX: Es el nombre de DNS de la zona 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: 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: