Um recurso persistente do Vertex AI é um cluster de execução prolongada que pode usar para executar tarefas de preparação personalizadas e execuções de pipelines. Ao usar um recurso persistente para uma execução de pipeline, pode ajudar a garantir a disponibilidade de recursos de computação e reduzir o tempo de arranque da tarefa do pipeline. Os recursos persistentes suportam todas as VMs e GPUs suportadas por tarefas de programação personalizadas. Para saber mais sobre os recursos persistentes, consulte o artigo Vista geral dos recursos persistentes.
Esta página mostra como fazer o seguinte:
Antes de começar
Antes de poder criar uma execução de pipeline com um recurso persistente, tem de concluir os seguintes pré-requisitos.
Defina e compile um pipeline
Defina o seu pipeline e, em seguida, compile a definição do pipeline num ficheiro YAML. Para mais informações sobre como definir e compilar um pipeline, consulte o artigo Crie um pipeline.
Funções de IAM necessárias
Para receber a autorização de que
precisa para criar um recurso persistente,
peça ao seu administrador para lhe conceder a
função do IAM administrador do Vertex AI (roles/aiplatform.admin
)
no seu projeto.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Esta função predefinida contém a autorização
aiplatform.persistentResources.create
, que é necessária para
criar um recurso persistente.
Também pode obter esta autorização com funções personalizadas ou outras funções predefinidas.
Crie um recurso persistente
Use os exemplos seguintes para criar um recurso persistente que pode associar a uma execução de pipeline. Para mais informações sobre a criação de recursos persistentes, consulte o artigo Crie um recurso persistente.
gcloud
Para criar um recurso persistente que pode associar a uma execução de pipeline, use o comando gcloud ai persistent-resources create
juntamente com a flag --enable-custom-service-account
.
Um recurso persistente pode ter um ou mais conjuntos de recursos. Para criar vários
pools de recursos num recurso persistente, especifique várias flags --resource-pool-spec
.
Pode especificar todas as configurações do conjunto de recursos como parte da linha de comandos ou usar o sinalizador --config
para especificar o caminho para um ficheiro YAML que contém as configurações.
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
- PROJECT_ID: O ID do projeto do Google Cloud projeto onde quer criar o recurso persistente.
- LOCATION: a região onde quer criar o recurso persistente. Para ver uma lista das regiões suportadas, consulte o artigo Disponibilidade das funcionalidades.
- PERSISTENT_RESOURCE_ID: um ID exclusivo definido pelo utilizador para o recurso persistente. Tem de começar por uma letra, terminar com uma letra ou um número e conter apenas letras minúsculas, números e hífenes (-).
- DISPLAY_NAME: opcional. O nome a apresentar do recurso persistente.
- MACHINE_TYPE: O tipo de máquina virtual (VM) a usar. Para ver uma lista das VMs suportadas, consulte a secção
Tipos de máquinas.
Este campo corresponde ao campo
machineSpec.machineType
na mensagem da APIResourcePool
. - REPLICA_COUNT: opcional. O número de réplicas a criar para o conjunto de recursos, se não quiser usar o dimensionamento automático. Este campo corresponde ao campo
replicaCount
na mensagem da APIResourcePool
. Tem de especificar a quantidade de réplicas se não especificar os campos MIN_REPLICA_COUNT e MAX_REPLICA_COUNT. - MIN_REPLICA_COUNT: opcional. O número mínimo de réplicas se estiver a usar o dimensionamento automático para o conjunto de recursos. Tem de especificar MIN_REPLICA_COUNT e MAX_REPLICA_COUNT para usar o ajuste de escala automático.
- MAX_REPLICA_COUNT: opcional. O número máximo de réplicas se estiver a usar o dimensionamento automático para o conjunto de recursos. Tem de especificar MIN_REPLICA_COUNT e MAX_REPLICA_COUNT para usar o ajuste de escala automático.
- CONFIG: caminho para o ficheiro de configuração YAML
do recurso persistente, que contém uma lista de especificações
ResourcePool
. Se uma opção for especificada no ficheiro de configuração e nos argumentos da linha de comandos, os argumentos da linha de comandos substituem o ficheiro de configuração. Tenha em atenção que as chaves com carateres de sublinhado são consideradas inválidas.Exemplo de ficheiro de configuração YAML:
resourcePoolSpecs: machineSpec: machineType: n1-standard-4 replicaCount: 1
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud ai persistent-resources create \ --persistent-resource-id=PERSISTENT_RESOURCE_ID \ --display-name=DISPLAY_NAME \ --project=PROJECT_ID \ --region=LOCATION \ --resource-pool-spec="replica-count=REPLICA_COUNT,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" \ --enable-custom-service-account
Windows (PowerShell)
gcloud ai persistent-resources create ` --persistent-resource-id=PERSISTENT_RESOURCE_ID ` --display-name=DISPLAY_NAME ` --project=PROJECT_ID ` --region=LOCATION ` --resource-pool-spec="replica-count=REPLICA_COUNT,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" ` --enable-custom-service-account
Windows (cmd.exe)
gcloud ai persistent-resources create ^ --persistent-resource-id=PERSISTENT_RESOURCE_ID ^ --display-name=DISPLAY_NAME ^ --project=PROJECT_ID ^ --region=LOCATION ^ --resource-pool-spec="replica-count=REPLICA_COUNT,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" ^ --enable-custom-service-account
Deve receber uma resposta semelhante à seguinte:
Using endpoint [https://us-central1-aiplatform.googleapis.com/] Operation to create PersistentResource [projects/PROJECT_NUMBER/locations/us-central1/persistentResources/mypersistentresource/operations/OPERATION_ID] is submitted successfully. You can view the status of your PersistentResource create operation with the command $ gcloud ai operations describe projects/sample-project/locations/us-central1/operations/OPERATION_ID
Exemplo de comando gcloud
:
gcloud ai persistent-resources create \ --persistent-resource-id=my-persistent-resource \ --region=us-central1 \ --resource-pool-spec="replica-count=4,machine-type=n1-standard-4" --enable-custom-service-account
Configurações gcloud
avançadas
Se quiser especificar opções de configuração que não estão disponíveis nos exemplos anteriores, pode usar a flag --config
para especificar o caminho para um ficheiro config.yaml
no seu ambiente local que contenha os campos de persistentResources
. Por exemplo:
gcloud ai persistent-resources create \ --persistent-resource-id=PERSISTENT_RESOURCE_ID \ --project=PROJECT_ID \ --region=LOCATION \ --config=CONFIG --enable-custom-service-account
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Para criar um recurso persistente que pode usar com uma execução de pipeline, defina o parâmetroenable_custom_service_account
como True
no objeto ResourceRuntimeSpec
ao criar o recurso persistente.
from google.cloud.aiplatform.preview import persistent_resource
from google.cloud.aiplatform_v1beta1.types.persistent_resource import ResourcePool
from google.cloud.aiplatform_v1beta1.types.machine_resources import MachineSpec
my_example_resource = persistent_resource.PersistentResource.create(
persistent_resource_id='PERSISTENT_RESOURCE_ID',
display_name='DISPLAY_NAME',
resource_pools=[
ResourcePool(
machine_spec=MachineSpec(
machine_type='MACHINE_TYPE'
),
replica_count=REPLICA_COUNT
)
],
enable_custom_service_account=True,
)
Substitua o seguinte:
- PERSISTENT_RESOURCE_ID: um ID exclusivo definido pelo utilizador para o recurso persistente. O ID tem de conter apenas letras minúsculas, números e
hífenes (
-
). O primeiro caráter tem de ser uma letra minúscula e o último caráter tem de ser uma letra minúscula ou um número. - DISPLAY_NAME: opcional. O nome a apresentar do recurso persistente.
- MACHINE_TYPE: o tipo de máquina virtual (VM) a usar. Para ver uma lista das VMs suportadas, consulte os tipos de máquinas.
Este campo corresponde ao campo
machineSpec.machineType
na mensagem da APIResourcePool
. - REPLICA_COUNT: o número de réplicas a criar quando criar este conjunto de recursos.
REST
Para criar um recurso PersistentResource
que pode associar a uma execução de pipeline, envie um pedido POST através do método
persistentResources/create
com o parâmetro enable_custom_service_account
definido como
true
no corpo do pedido.
Um recurso persistente pode ter um ou mais conjuntos de recursos. Pode configurar cada conjunto de recursos para usar um número fixo de réplicas ou o dimensionamento automático.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: O ID do projeto do Google Cloud projeto onde quer criar o recurso persistente.
- LOCATION: a região onde quer criar o recurso persistente. Para ver uma lista das regiões suportadas, consulte o artigo Disponibilidade das funcionalidades.
- PERSISTENT_RESOURCE_ID: um ID exclusivo definido pelo utilizador para o recurso persistente. Tem de começar por uma letra, terminar com uma letra ou um número e conter apenas letras minúsculas, números e hífenes (-).
- DISPLAY_NAME: opcional. O nome a apresentar do recurso persistente.
- MACHINE_TYPE: O tipo de máquina virtual (VM) a usar. Para ver uma lista das VMs suportadas, consulte a secção
Tipos de máquinas.
Este campo corresponde ao campo
machineSpec.machineType
na mensagem da APIResourcePool
. - REPLICA_COUNT: opcional. O número de réplicas a criar para o conjunto de recursos, se não quiser usar o dimensionamento automático. Este campo corresponde ao campo
replicaCount
na mensagem da APIResourcePool
. Tem de especificar a quantidade de réplicas se não especificar os campos MIN_REPLICA_COUNT e MAX_REPLICA_COUNT. - MIN_REPLICA_COUNT: opcional. O número mínimo de réplicas se estiver a usar o dimensionamento automático para o conjunto de recursos. Tem de especificar MIN_REPLICA_COUNT e MAX_REPLICA_COUNT para usar o ajuste de escala automático.
- MAX_REPLICA_COUNT: opcional. O número máximo de réplicas se estiver a usar o dimensionamento automático para o conjunto de recursos. Tem de especificar MIN_REPLICA_COUNT e MAX_REPLICA_COUNT para usar o ajuste de escala automático.
Método HTTP e URL:
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/persistentResources?persistent_resource_id=PERSISTENT_RESOURCE_ID
Corpo JSON do pedido:
{ "display_name": "DISPLAY_NAME", "resource_pools": [ { "machine_spec": { "machine_type": "MACHINE_TYPE" }, "replica_count": REPLICA_COUNT, "autoscaling_spec": { "min_replica_count": MIN_REPLICA_COUNT, "max_replica_count": MAX_REPLICA_COUNT } } ], "resource_runtime_spec": { "service_account_spec": { "enable_custom_service_account": true } } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/persistentResources/mypersistentresource/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreatePersistentResourceOperationMetadata", "genericMetadata": { "createTime": "2023-02-08T21:17:15.009668Z", "updateTime": "2023-02-08T21:17:15.009668Z" } } }
Crie uma execução do pipeline com o recurso persistente
Para criar uma tarefa de pipeline, primeiro tem de criar uma especificação de pipeline. Uma especificação de pipeline é um objeto na memória que cria convertendo uma definição de pipeline compilada.
Crie uma especificação do pipeline
Siga estas instruções para criar uma especificação de pipeline na memória que pode usar para criar a execução do pipeline:
Defina um pipeline e compile-o num ficheiro YAML. Para mais informações sobre como definir e compilar um pipeline, consulte o artigo Crie um pipeline.
Use o seguinte exemplo de código para converter o ficheiro YAML do pipeline compilado numa especificação do 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 para o ficheiro YAML da pipeline compilada.
Crie uma execução de pipeline
Use o seguinte exemplo de código Python para criar uma execução de pipeline que usa o recurso persistente:
# Import aiplatform and the appropriate API version v1beta1
from google.cloud import aiplatform, aiplatform_v1beta1
from google.cloud.aiplatform_v1beta1.types import pipeline_job as pipeline_job_types
# 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 runtime detail
pr_runtime_detail = pipeline_job_types.PipelineJob.RuntimeConfig.PersistentResourceRuntimeDetail(
persistent_resource_name=(
f"projects/PROJECT_NUMBER/"
f"locations/LOCATION/"
f"persistentResources/PERSISTENT_RESOURCE_ID"
),
task_resource_unavailable_wait_time_ms=WAIT_TIME,
task_resource_unavailable_timeout_behavior='TIMEOUT_BEHAVIOR',
)
# Construct the default runtime configuration block
default_runtime = pipeline_job_types.PipelineJob.RuntimeConfig.DefaultRuntime(
persistent_resource_runtime_detail=pr_runtime_detail
)
# Construct the main runtime configuration
runtime_config = pipeline_job_types.PipelineJob.RuntimeConfig(
gcs_output_directory='PIPELINE_ROOT',
parameter_values={
'project_id': 'PROJECT_ID'
},
default_runtime=default_runtime
)
# Construct the pipeline job object
pipeline_job = pipeline_job_types.PipelineJob(
display_name='PIPELINE_DISPLAY_NAME',
pipeline_spec=PIPELINE_SPEC,
runtime_config=runtime_config,
)
# Construct the request
parent_path = f"projects/PROJECT_ID/locations/LOCATION"
request = aiplatform_v1beta1.CreatePipelineJobRequest(
parent=parent_path,
pipeline_job=pipeline_job,
)
# Make the API Call to create the pipeline job
response = client.create_pipeline_job(request=request)
# Construct the Google Cloud console link
job_id = response.name.split('/')[-1]
console_link = (
f"https://console.cloud.google.com/vertex-ai/locations/LOCATION"
f"/pipelines/runs/{job_id}"
f"?project=PROJECT_ID"
)
# Print the Google Cloud console link to the pipeline run
print(f"View Pipeline Run in Google Cloud console: {console_link}")
Substitua o seguinte:
PROJECT_ID: o Google Cloud projeto no qual o pipeline é executado.
LOCATION: a região onde a execução do pipeline é feita. Para mais informações sobre as regiões onde o Vertex AI Pipelines está disponível, consulte o guia de localizações da Vertex AI. Se não definir este parâmetro, o Vertex AI Pipelines usa a localização predefinida definida em
aiplatform.init
.PERSISTENT_RESOURCE_ID: O ID do recurso persistente que criou.
PROJECT_NUMBER: o número do projeto do seu Google Cloud projeto. Isto é diferente do ID do projeto. Pode encontrar o número do projeto na página Definições do projeto na Google Cloud consola.
COMPILED_PIPELINE_PATH: o caminho para o ficheiro YAML da pipeline compilada. Pode ser um caminho local ou um URI do Cloud Storage.
WAIT_TIME: O tempo em milissegundos a aguardar se o recurso persistente não estiver disponível.
TIMEOUT_BEHAVIOR: o comportamento alternativo da tarefa de pipeline caso o limite de WAIT_TIME seja excedido. Os valores possíveis incluem o seguinte:
FAIL
A tarefa da pipeline falha após exceder o tempo de espera.FALL_BACK_TO_ON_DEMAND
A tarefa do pipeline continua a ser executada com os recursos de preparação do Vertex AI predefinidos, sem usar o recurso persistente.
PIPELINE_ROOT: o caminho para um URI do Cloud Storage para armazenar os artefactos da execução da sua pipeline.
PIPELINE_DISPLAY_NAME: o nome da execução da pipeline. O comprimento máximo de um nome a apresentar é de 128 carateres UTF-8.
PIPELINE_SPEC: a especificação da pipeline que criou em Crie uma especificação da pipeline.
O que se segue?
- Saiba como executar um pipeline.