Configura la interfaz de Private Service Connect para una canalización

Puedes configurar la conectividad privada para la ejecución de tu canalización con una interfaz de Private Service Connect. Google recomienda usar Private Service Connect de Vertex AI para la conectividad privada, ya que reduce las posibilidades de agotamiento de IP y admite el intercambio de tráfico transitivo.

Vertex AI Pipelines usa la infraestructura subyacente de la interfaz de Private Service Connect para el entrenamiento para pasar los detalles de la conexión al trabajo de entrenamiento personalizado. Para obtener más información sobre las limitaciones y los precios del uso de interfaces de Private Service Connect con el entrenamiento personalizado, consulta Cómo usar la interfaz de Private Service Connect para el entrenamiento de Vertex AI.

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 página Todos los precios de las herramientas de redes.

Antes de comenzar

Para usar una interfaz de Private Service Connect con Vertex AI Pipelines, primero debes configurar una interfaz de Private Service Connect para los recursos de Vertex AI.

Crea una ejecución de canalización con interfaces de Private Service Connect

Para crear un trabajo de canalización, primero debes crear una especificación de canalización. Una especificación de canalización es un objeto en memoria que se crea convirtiendo una definición de canalización compilada.

Crea una especificación de canalización

Sigue estas instrucciones para crear una especificación de canalización en memoria que puedas usar para crear la ejecución de canalización:

  1. Define una canalización y compílala en un archivo YAML. Para obtener más información sobre cómo definir y compilar una canalización, consulta Crea una canalización.

  2. Usa la siguiente muestra de código para convertir el archivo YAML de la canalización compilada en una especificación de canalización en memoria.

    import yaml
    with open("COMPILED_PIPELINE_PATH", "r") as stream:
      try:
        pipeline_spec = yaml.safe_load(stream)
        print(pipeline_spec)
      except yaml.YAMLError as exc:
        print(exc)
    

    Reemplaza COMPILED_PIPELINE_PATH por la ruta de acceso local al archivo YAML de la canalización compilada.

Crea la ejecución de canalización

Usa los siguientes ejemplos para crear una ejecución de canalización con interfaces de Private Service Connect:

Python

Para crear una ejecución de canalización con interfaces de Private Service Connect con el SDK de Vertex AI para Python, configura la ejecución con la definición de aiplatform_v1beta1/services/pipeline_service.

# Import aiplatform and the appropriate API version v1beta1
from google.cloud import aiplatform, aiplatform_v1beta1

# Initialize the Vertex SDK using PROJECT_ID and LOCATION
aiplatform.init(project="PROJECT_ID", location="LOCATION")

# Create the API endpoint
client_options = {
"api_endpoint": f"LOCATION-aiplatform.googleapis.com"
}

# Initialize the PipelineServiceClient
client = aiplatform_v1beta1.PipelineServiceClient(client_options=client_options)

# Construct the request
request = aiplatform_v1beta1.CreatePipelineJobRequest(
parent=f"projects/PROJECT_ID/locations/LOCATION",
pipeline_job=aiplatform_v1beta1.PipelineJob(
    display_name="DISPLAY_NAME",
    pipeline_spec=PIPELINE_SPEC,
    runtime_config=aiplatform_v1beta1.PipelineJob.RuntimeConfig(
        gcs_output_directory="OUTPUT_DIRECTORY",
    ),
    psc_interface_config=aiplatform_v1beta1.PscInterfaceConfig(
        network_attachment="NETWORK_ATTACHMENT_NAME"
    ),
)

# Make the API call
response = client.create_pipeline_job(request=request)

# Print the response
print(response)

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto en el que deseas crear la ejecución de la canalización.
  • LOCATION: Es la región en la que deseas crear la ejecución de canalización.
  • DISPLAY_NAME: Es el nombre del trabajo de canalización. La longitud máxima para un nombre visible es de 128 caracteres UTF-8.
  • PIPELINE_SPEC: La especificación de canalización que creaste en Crea una especificación de canalización.
  • OUTPUT_DIRECTORY: Es el URI del bucket de Cloud Storage para almacenar artefactos de salida. Esta ruta de acceso es el directorio de salida raíz de la canalización y se usa para generar las rutas de acceso de los artefactos de salida.
  • NETWORK_ATTACHMENT_NAME: Es el nombre del archivo adjunto de red de Compute Engine que se adjuntará al recurso PipelineJob. Para obtener el archivo adjunto de red, debes haber completado los pasos de la sección Antes de comenzar. Para obtener más información sobre el adjunto de red, consulta Cómo configurar una red de VPC, una subred y un adjunto de red.

REST

Para crear una ejecución de canalización, envía una solicitud POST mediante el método pipelineJobs.create.

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

  • PROJECT_ID: El ID del proyecto en el que deseas crear la ejecución de la canalización.
  • LOCATION: Es la región en la que deseas crear la ejecución de canalización.
  • DISPLAY_NAME: Es el nombre del trabajo de canalización. La longitud máxima para un nombre visible es de 128 caracteres UTF-8.
  • PIPELINE_SPEC: La especificación de canalización que creaste en Crea una especificación de canalización.
  • OUTPUT_DIRECTORY: Es el URI del bucket de Cloud Storage para almacenar artefactos de salida. Esta ruta de acceso es el directorio de salida raíz de la canalización y se usa para generar las rutas de acceso de los artefactos de salida.
  • NETWORK_ATTACHMENT_NAME: Es el nombre del archivo adjunto de red de Compute Engine que se adjuntará al recurso PipelineJob. Para obtener el archivo adjunto de red, debes haber completado los pasos de la sección Antes de comenzar. Para obtener más información sobre el adjunto de red, consulta Cómo configurar una red de VPC, una subred y un adjunto de red.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "display_name": "DISPLAY_NAME",
  "pipeline_spec": "PIPELINE_SPEC",
  "runtime_config": {
       "gcs_output_directory": "OUTPUT_DIRECTORY",
   },
   "psc_interface_config": {
       "network_attachment": "NETWORK_ATTACHMENT_NAME"
   }
}

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/pipelineJobs"

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/pipelineJobs" | Select-Object -Expand Content

Deberías ver un resultado similar al siguiente. PIPELINE_JOB_ID representa el ID de la ejecución de la canalización y SERVICE_ACCOUNT_NAME representa la cuenta de servicio que se usó para ejecutar la canalización.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/pipelineJobs/PIPELINE_JOB_ID",
  "displayName": "DISPLAY_NAME",
  "createTime": "20xx-01-01T00:00:00.000000Z",
  "updateTime": "20xx-01-01T00:00:00.000000Z",
  "pipelineSpec": PIPELINE_SPEC,
  "state": "PIPELINE_STATE_PENDING",
  "labels": {
    "vertex-ai-pipelines-run-billing-id": "VERTEX_AI_PIPELINES_RUN_BILLING_ID"
  },
  "runtimeConfig": {
    "gcsOutputDirectory": "OUTPUT_DIRECTORY"
  },
  "serviceAccount": "SERVICE_ACCOUNT_NAME"
  "pscInterfaceConfig": {
    "networkAttachment": "NETWORK_ATTACHMENT_NAME"
  }
}