Configurar a interface do Private Service Connect para um pipeline

É possível configurar a conectividade privada para sua execução de pipeline usando a Interface do Private Service Connect (PSC-I). Recomendamos o uso do Vertex AI Private Service Connect para conectividade particular, já que ele reduz as chances de esgotamento de IP e oferece suporte a peering transitivo.

O Vertex AI Pipelines usa a infraestrutura PSC-I para treinamento para transmitir os detalhes de conexão ao job de treinamento personalizado. Para saber mais sobre as limitações e os preços do uso do PSC-I com o treinamento personalizado, consulte Usar a interface do Private Service Connect para o treinamento da Vertex AI.

Limitações

As interfaces do Private Service Connect não aceitam endereços IP externos.

Preços

Os preços das interfaces do Private Service Connect são descritos na página Todos os preços de rede.

Antes de começar

Para usar o PSC-I com o Vertex AI Pipelines, primeiro é necessário configurar uma interface do Private Service Connect para recursos da Vertex AI.

Criar uma execução de pipeline com PSC-I

Para criar um job de pipeline, primeiro é necessário criar uma especificação de pipeline. Uma especificação de pipeline é um objeto na memória que você cria convertendo uma definição de pipeline compilada.

Criar uma especificação de pipeline

Siga estas instruções para criar uma especificação de pipeline na memória que pode ser usada para criar a execução do pipeline:

  1. Defina um pipeline e o compile em um arquivo YAML. Para mais informações sobre como definir e compilar um pipeline, consulte Criar um pipeline.

  2. Use o exemplo de código abaixo para converter o arquivo YAML do pipeline compilado em uma especificação de pipeline na memória.

    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)
    

    Substitua COMPILED_PIPELINE_PATH pelo caminho local do arquivo YAML do pipeline compilado.

Criar a execução do pipeline

Use os exemplos a seguir para criar uma execução de pipeline usando o PSC-I:

Python

Para criar uma execução de pipeline com PSC-I usando o SDK da Vertex AI para Python, configure a execução usando a definição 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)

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer criar a execução do pipeline.
  • LOCATION: a região em que você quer criar a execução do pipeline.
  • DISPLAY_NAME: o nome do job do pipeline. O comprimento máximo de um nome de exibição é de 128 caracteres UTF-8.
  • PIPELINE_SPEC: a especificação de pipeline criada em Criar uma especificação de pipeline.
  • OUTPUT_DIRECTORY: o URI do bucket do Cloud Storage para armazenar artefatos de saída. Esse caminho é o diretório de saída raiz do pipeline e é usado para gerar os caminhos dos artefatos de saída.
  • NETWORK_ATTACHMENT_NAME: o nome do anexo de rede do Compute Engine a ser anexado ao recurso PipelineJob. Para receber o anexo de rede, você precisa ter concluído as etapas na seção Antes de começar. Para mais informações sobre o anexo de rede, consulte Configurar uma rede VPC, uma sub-rede e um anexo de rede.

REST

Para criar uma execução de pipeline, envie uma solicitação POST usando o método pipelineJobs.create.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto em que você quer criar a execução do pipeline.
  • LOCATION: a região em que você quer criar a execução do pipeline.
  • DISPLAY_NAME: o nome do job do pipeline. O comprimento máximo de um nome de exibição é de 128 caracteres UTF-8.
  • PIPELINE_SPEC: a especificação de pipeline criada em Criar uma especificação de pipeline.
  • OUTPUT_DIRECTORY: o URI do bucket do Cloud Storage para armazenar artefatos de saída. Esse caminho é o diretório de saída raiz do pipeline e é usado para gerar os caminhos dos artefatos de saída.
  • NETWORK_ATTACHMENT_NAME: o nome do anexo de rede do Compute Engine a ser anexado ao recurso PipelineJob. Para receber o anexo de rede, você precisa ter concluído as etapas na seção Antes de começar. Para mais informações sobre o anexo de rede, consulte Configurar uma rede VPC, uma sub-rede e um anexo de rede.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "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 a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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

Será exibido um código semelhante a este. PIPELINE_JOB_ID representa o ID da execução do pipeline, e SERVICE_ACCOUNT_NAME representa a conta de serviço usada para executar o pipeline.

{
  "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"
  }
}