Um recurso permanente da Vertex AI é um cluster de longa duração que pode ser usado para executar jobs de treinamento personalizados e execuções de pipeline. Ao usar um recurso persistente para uma execução de pipeline, você ajuda a garantir a disponibilidade de recursos de computação e reduz o tempo de inicialização da tarefa do pipeline. Os recursos permanentes dão suporte a todas as VMs e GPUs compatíveis com jobs de treinamento personalizados. Para saber mais sobre recursos permanentes, consulte Visão geral dos recursos permanentes.
Nesta página, você aprende as seguintes ações com relação à verificação de tempo de atividade:
Antes de começar
Antes de criar uma execução de pipeline com um recurso persistente, conclua os seguintes pré-requisitos.
Definir e compilar um pipeline
Defina seu pipeline e compile a definição em um arquivo YAML. Para mais informações sobre como definir e compilar um pipeline, consulte Criar um pipeline.
Papéis necessários do IAM
Para receber a permissão necessária a fim de criar um recurso permanente,
peça ao administrador para conceder a você o
papel do IAM de Administrador da Vertex AI (roles/aiplatform.admin
) no projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém a
permissão
aiplatform.persistentResources.create
,
que é necessária para
excluir um recurso permanente.
Também é possível conseguir essa permissão com papéis personalizados ou outros papéis predefinidos.
Criar um recurso persistente
Use os exemplos a seguir para criar um recurso permanente que pode ser associado a uma execução de pipeline. Para mais informações sobre como criar recursos persistentes, consulte Criar um recurso persistente.
gcloud
Para criar um recurso permanente que possa ser associado a uma execução de pipeline, use
o comando gcloud ai persistent-resources create
com a flag --enable-custom-service-account
.
Um recurso permanente pode ter um ou mais pools de recursos. Para criar vários pools de recursos em um recurso persistente, especifique várias sinalizações --resource-pool-spec
.
É possível especificar todas as configurações do pool de recursos como parte da linha de comando ou usar a sinalização --config
para especificar o caminho para um arquivo YAML que contenha as configurações.
Antes de usar os dados do comando abaixo, faça estas substituições:
- PROJECT_ID: o ID do projeto do Google Cloud projeto em que você quer criar o recurso permanente.
- LOCATION: a região em que você quer criar o recurso permanente. Para uma lista de regiões com suporte, consulte Disponibilidade do recurso.
- PERSISTENT_RESOURCE_ID: um ID exclusivo definido pelo usuário para o recurso permanente. Ele precisa começar com uma letra, terminar com uma letra ou número e conter apenas letras minúsculas, números e hifens (-).
- DISPLAY_NAME: opcional. O nome de exibição do recurso permanente.
- MACHINE_TYPE: o tipo de máquina virtual (VM) a ser usada. Para uma lista de VMs compatíveis, consulte
Tipos de máquina.
Esse campo corresponde ao
machineSpec.machineType
na mensagem da APIResourcePool
. - REPLICA_COUNT: opcional. O número de réplicas a serem criadas
para o pool de recursos, se você não quiser usar o escalonamento automático. Esse campo corresponde ao
replicaCount
na mensagem da APIResourcePool
. É necessário especificar a contagem de réplicas se você 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 você estiver usando o escalonamento automático para o pool de recursos. É necessário especificar MIN_REPLICA_COUNT e MAX_REPLICA_COUNT para usar o escalonamento automático.
- MAX_REPLICA_COUNT: opcional. O número máximo de réplicas se você estiver usando o escalonamento automático para o pool de recursos. É necessário especificar MIN_REPLICA_COUNT e MAX_REPLICA_COUNT para usar o escalonamento automático.
- CONFIG: caminho para o arquivo de configuração YAML do recurso permanente, que contém uma lista de especificações
ResourcePool
. Se uma opção for especificada no arquivo de configuração e nos argumentos da linha de comando, os argumentos vão substituir o arquivo de configuração. Observe que as chaves com sublinhados são consideradas inválidas.Exemplo de arquivo 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
Você receberá uma resposta semelhante a esta:
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
Comando gcloud
de exemplo:
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 você quiser especificar opções de configuração que não estejam disponíveis nos
exemplos anteriores, use a sinalização --config
para especificar o
caminho para um arquivo config.yaml
no ambiente local que contém os campos de
persistentResources
. 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 testar essa amostra, siga as instruções de configuração para Python Guia de início rápido da Vertex AI: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Python.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Para criar um recurso persistente que pode ser usado 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:
- PERSISTENT_RESOURCE_ID: um ID exclusivo definido pelo usuário para o
recurso permanente. O ID só pode conter letras minúsculas, números e hifens (
-
). O primeiro caractere precisa ser uma letra minúscula, e o último, uma letra minúscula ou um número. - DISPLAY_NAME: opcional. O nome de exibição do recurso persistente.
- MACHINE_TYPE: o tipo de máquina virtual (VM) a ser usada. Para uma lista de VMs compatíveis, consulte
Tipos de máquina.
Esse campo corresponde ao
machineSpec.machineType
na mensagem da APIResourcePool
. - REPLICA_COUNT: o número de réplicas a serem criadas ao criar este pool de recursos.
REST
Para criar um recurso PersistentResource
que pode ser associado a uma execução de pipeline, envie uma solicitação POST usando o método
persistentResources/create
com o parâmetro enable_custom_service_account
definido como
true
no corpo da solicitação.
Um recurso permanente pode ter um ou mais pools de recursos. É possível configurar cada pool de recursos para usar um número fixo de réplicas ou o escalonamento automático.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto do Google Cloud projeto em que você quer criar o recurso permanente.
- LOCATION: a região em que você quer criar o recurso permanente. Para uma lista de regiões com suporte, consulte Disponibilidade do recurso.
- PERSISTENT_RESOURCE_ID: um ID exclusivo definido pelo usuário para o recurso permanente. Ele precisa começar com uma letra, terminar com uma letra ou número e conter apenas letras minúsculas, números e hifens (-).
- DISPLAY_NAME: opcional. O nome de exibição do recurso permanente.
- MACHINE_TYPE: o tipo de máquina virtual (VM) a ser usada. Para uma lista de VMs compatíveis, consulte
Tipos de máquina.
Esse campo corresponde ao
machineSpec.machineType
na mensagem da APIResourcePool
. - REPLICA_COUNT: opcional. O número de réplicas a serem criadas
para o pool de recursos, se você não quiser usar o escalonamento automático. Esse campo corresponde ao
replicaCount
na mensagem da APIResourcePool
. É necessário especificar a contagem de réplicas se você 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 você estiver usando o escalonamento automático para o pool de recursos. É necessário especificar MIN_REPLICA_COUNT e MAX_REPLICA_COUNT para usar o escalonamento automático.
- MAX_REPLICA_COUNT: opcional. O número máximo de réplicas se você estiver usando o escalonamento automático para o pool de recursos. É necessário especificar MIN_REPLICA_COUNT e MAX_REPLICA_COUNT para usar o escalonamento 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 da solicitação:
{ "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 a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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" } } }
Criar uma execução de pipeline usando o recurso permanente
Para criar um job de pipeline, primeiro você precisa criar uma especificação de pipeline, que é um objeto na memória criado ao converter 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 compile-o 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 a seguir 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 uma execução de pipeline
Use o exemplo de código Python a seguir para criar uma execução de pipeline que usa o recurso permanente:
# 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:
PROJECT_ID: o Google Cloud projeto em que o pipeline é executado.
LOCATION: a região em que a execução do pipeline é realizada. Para mais informações sobre as regiões em que o Vertex AI Pipelines está disponível, consulte o guia de locais da Vertex AI. Se você não definir esse parâmetro, o Vertex AI Pipelines usará o local padrão definido em
aiplatform.init
.PERSISTENT_RESOURCE_ID: o ID do recurso permanente que você criou.
PROJECT_NUMBER: o número do projeto Google Cloud. Ele é diferente do ID do projeto. Encontre esse número na página Configurações do projeto no console do Google Cloud .
COMPILED_PIPELINE_PATH: o caminho para o arquivo YAML do pipeline compilado. Pode ser um caminho local ou um URI do Google Cloud Storage.
WAIT_TIME: o tempo em milissegundos para aguardar se o recurso persistente estiver indisponível.
TIMEOUT_BEHAVIOR: o comportamento de fallback da tarefa do pipeline caso o WAIT_TIME seja excedido. Os valores possíveis incluem o seguinte:
FAIL
A tarefa do pipeline falha após exceder o tempo de espera.FALL_BACK_TO_ON_DEMAND
A tarefa do pipeline continua sendo executada usando os recursos de treinamento padrão da Vertex AI, sem usar o recurso persistente.
PIPELINE_ROOT: o caminho para um URI do Cloud Storage para armazenar os artefatos da execução do pipeline.
PIPELINE_DISPLAY_NAME: o nome da execução 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.
A seguir
- Saiba como executar um pipeline.