Usa la interfaz de Private Service Connect para el entrenamiento de Vertex AI

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

La interfaz de Private Service Connect es compatible con trabajos personalizados y 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 se debe incluir 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 que admite Private Service Connect (consulta Cómo conectarse a cargas de trabajo en otras redes), con las siguientes excepciones:

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

  • La salida a Cloud NAT solo es compatible cuando se habilita el Control de servicios 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 "Cómo usar 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 las redes.

Antes de comenzar

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

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

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

Python

Para crear un trabajo de entrenamiento personalizado con PSC-I con el SDK de Vertex AI para Python, configúralo con la definición de aiplatform_v1beta1/services/job_service.

Python

from google.cloud import aiplatform
from google.cloud import aiplatform_v1beta1


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_name: str,
):
    """Custom training job sample with PSC-I through aiplatform_v1beta1."""
    aiplatform.init(project=project, location=location, staging_bucket=bucket)

    client_options = {"api_endpoint": f"{location}-aiplatform.googleapis.com"}

    client = aiplatform_v1beta1.JobServiceClient(client_options=client_options)

    request = aiplatform_v1beta1.CreateCustomJobRequest(
        parent=f"projects/{project}/locations/{location}",
        custom_job=aiplatform_v1beta1.CustomJob(
            display_name=display_name,
            job_spec=aiplatform_v1beta1.CustomJobSpec(
                worker_pool_specs=[
                    aiplatform_v1beta1.WorkerPoolSpec(
                        machine_spec=aiplatform_v1beta1.MachineSpec(
                            machine_type=machine_type,
                        ),
                        replica_count=replica_count,
                        container_spec=aiplatform_v1beta1.ContainerSpec(
                            image_uri=image_uri,
                        ),
                    )
                ],
                psc_interface_config=aiplatform_v1beta1.PscInterfaceConfig(
                    network_attachment=network_attachment_name,
                ),
            ),
        ),
    )

    response = client.create_custom_job(request=request)

    return response

  • project: El ID del proyecto. Puedes encontrar estos IDs en la página de bienvenida de la consola de Google Cloud.
  • location: Consulta la lista de ubicaciones disponibles.
  • bucket: Reemplaza bucket por 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_name: Es el nombre que especificaste cuando configuraste tus recursos para Private Service Connect en tu proyecto de usuario.

REST

Para crear un trabajo de entrenamiento personalizado, 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 1 para el primer grupo de trabajadores.
  • Si tu aplicación de entrenamiento se ejecuta en un contenedor personalizado, especifica lo siguiente:

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

"display_name": JOB_NAME,
"job_spec": {
    "worker_pool_specs": [
      {
        "machine_spec": {
          "machine_type": "n1-standard-4",
        },
        "replica_count": REPLICA_COUNT,
        "container_spec": {
          "image_uri": IMAGE_URI,
        },
      },
    ],
    "psc_interface_config": {
      "network_attachment": NETWORK_ATTACHMENT_NAME
    },
    "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/v1beta1/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/v1beta1/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: