É 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:
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.
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" } }