Criar um recurso persistente

Quando você cria um recurso persistente, o serviço de treinamento primeiro encontra recursos do pool de recursos do Compute Engine com base nas especificações fornecidas e, em seguida, provisiona um cluster de longa duração para você. Nesta página, mostramos como criar um recurso permanente para executar jobs de treinamento personalizados usando o console do Google Cloud, a CLI do Google Cloud, o SDK da Vertex AI para Python e a API REST.

Funções exigidas

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 como conceder papéis, consulte Gerenciar acesso.

Esse papel predefinido contém a permissão aiplatform.persistentResources.create, que é necessária para criar um recurso permanente.

Também é possível conseguir essa permissão com papéis personalizados ou outros papéis predefinidos.

Criar um recurso persistente

Selecione uma das guias a seguir para ver instruções sobre como criar um recurso permanente.

Console

Para criar um recurso permanente usando o console do Google Cloud, faça o seguinte:

  1. No console do Google Cloud, acesse a página Recursos permanentes.

    Acessar recursos permanentes

  2. Clique em Criar cluster.

  3. Configure o cluster desta maneira:

    • Nome: digite um nome para o cluster.
    • Descrição: (opcional) insira uma descrição do cluster.
    • Região: selecione a região em que você quer criar o cluster.
  4. Clique em Continuar.

  5. Configure os recursos de computação do cluster da seguinte maneira:

    1. Clique em Pool de workers 1.
    2. Selecione a guia da família de máquinas que você quer usar e configure o pool de workers da seguinte maneira:

      Uso geral

      As VMs de uso geral oferecem a melhor relação custo-benefício para uma variedade de cargas de trabalho.

      • Série: selecione uma série de máquinas.
      • Tipo de máquina: selecione um tipo de máquina.
      • Tipo de disco: selecione Disco padrão ou Disco SSD.
      • Tamanho do disco: insira o tamanho do disco que você quer.
      • Contagem mínima de réplicas: insira o número mínimo de réplicas que devem estar no pool de workers.
      • Contagem máxima de réplicas: (opcional) digite o número máximo de réplicas permitidas no pool de workers. Se especificado, o pool de workers escalona automaticamente o número de réplicas até a contagem máxima de réplicas configurada, conforme necessário.

      Otimização para computação

      As VMs com otimização para computação oferecem o melhor desempenho por núcleo e são otimizadas para cargas de trabalho de computação intensiva.

      • Série: selecione uma série de máquinas.
      • Tipo de máquina: selecione um tipo de máquina.
      • Tipo de disco: selecione Disco padrão ou Disco SSD.
      • Tamanho do disco: insira o tamanho do disco que você quer.
      • Contagem mínima de réplicas: insira o número mínimo de réplicas que devem estar no pool de workers.
      • Contagem máxima de réplicas: (opcional) digite o número máximo de réplicas permitidas no pool de workers. Se especificado, o pool de workers escalona automaticamente o número de réplicas até a contagem máxima de réplicas configurada, conforme necessário.

      Otimização de memória

      Otimização de memória: as VMs são ideais para cargas de trabalho com uso intenso de memória, oferecendo mais memória por núcleo do que outras famílias de máquinas, com até 12 TB de memória.

      • Série: selecione uma série de máquinas.
      • Tipo de máquina: selecione um tipo de máquina.
      • Tipo de disco: selecione Disco padrão ou Disco SSD.
      • Tamanho do disco: insira o tamanho do disco que você quer.
      • Contagem mínima de réplicas: insira o número mínimo de réplicas que devem estar no pool de workers.
      • Contagem máxima de réplicas: (opcional) digite o número máximo de réplicas permitidas no pool de workers. Se especificado, o pool de workers escalona automaticamente o número de réplicas até a contagem máxima de réplicas configurada, conforme necessário.

      GPUs

      Essas VMs otimizadas para aceleradores são ideais para cargas de trabalho de computação da arquitetura de dispositivo unificado (CUDA, na sigla em inglês) massivamente paralelas, como machine learning (ML) e computação de alto desempenho (HPC). Essa família é a melhor opção para cargas de trabalho que exigem GPUs.

      • Tipo de GPU: selecione o tipo de GPU que você quer usar.
      • Número de GPUs: digite o número de GPUs que você quer usar.
      • Série: selecione uma série de máquinas.
      • Tipo de máquina: selecione um tipo de máquina.
      • Tipo de disco: selecione Disco padrão ou Disco SSD.
      • Tamanho do disco: insira o tamanho do disco que você quer.
      • Contagem mínima de réplicas: insira o número mínimo de réplicas que devem estar no pool de workers.
      • Contagem máxima de réplicas: (opcional) digite o número máximo de réplicas permitidas no pool de workers. Se especificado, o pool de workers escalona automaticamente o número de réplicas até a contagem máxima de réplicas configurada, conforme necessário.
    3. Clique em Concluído.

    4. (Opcional) Para adicionar mais pools de workers, clique em Adicionar pool de workers.

  6. Clique em Criar.

gcloud

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.

Cada pool de recursos pode ter o escalonamento automático ativado ou desativado. Para ativar o escalonamento automático, especifique min_replica_count e max_replica_count.

É 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 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: o ID do recurso permanente.
  • DISPLAY_NAME: (opcional) o nome de exibição do recurso permanente.
  • MACHINE_TYPE: o tipo de 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 API ResourcePool.
  • ACCELERATOR_TYPE: o tipo de GPU a ser anexado a cada VM no pool de recursos (opcional). Para uma lista de GPUs compatíveis, consulte GPUs. Esse campo corresponde ao machineSpec.acceleratorType na mensagem da API ResourcePool.
  • ACCELERATOR_COUNT: o número de GPUs a serem anexadas a cada VM no pool de recursos (opcional). O valor padrão é 1. Esse campo corresponde ao campo machineSpec.acceleratorCount na mensagem da API ResourcePool.
  • REPLICA_COUNT: o número de réplicas a serem criadas ao criar este pool de recursos. Esse campo corresponde ao replicaCount na mensagem da API ResourcePool. Este campo será obrigatório se você não especificar MIN_REPLICA_COUNT e MAX_REPLICA_COUNT.
  • MIN_REPLICA_COUNT (opcional): o número mínimo de réplicas que podem ser reduzidos no escalonamento automático para esse pool de recursos. MIN_REPLICA_COUNT e MAX_REPLICA_COUNT são necessários para ativar o escalonamento automático neste pool de recursos.
  • MAX_REPLICA_COUNT: (opcional) o número máximo de réplicas que o escalonamento automático pode escalonar verticalmente para esse pool de recursos. MIN_REPLICA_COUNT e MAX_REPLICA_COUNT são necessários para ativar o escalonamento automático neste pool de recursos.
  • BOOT_DISK_TYPE: o tipo de disco a ser usado como disco de inicialização de cada VM no pool de recursos (opcional). Esse campo corresponde ao diskSpec.bootDiskType na mensagem da API ResourcePool. Os valores aceitáveis são os seguintes:
    • pd-standard (padrão)
    • pd-ssd
  • BOOT_DISK_SIZE_GB: o tamanho do disco em GiB para o disco de inicialização de cada VM no pool de recursos (opcional). Os valores aceitáveis são de 100 (padrão) a 64000. Esse campo corresponde ao campo diskSpec.bootDiskSizeGb na mensagem da API ResourcePool.
  • CONFIG: caminho para o arquivo de configuração YAML do recurso permanente. Esse arquivo precisa conter uma lista de ResourcePool. Se uma opção for especificada no arquivo de configuração e nos argumentos da linha de comando, os argumentos substituirão o arquivo de configuração. Observe que as chaves com sublinhados são inválidas.

    Exemplo de arquivo de configuração YAML:

    resourcePoolSpecs:
      machineSpec:
        machineType: n1-standard-4
      replicaCount: 1
        

Execute o este 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,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT,machine-type=MACHINE_TYPE,accelerator-type=ACCELERATOR_TYPE,accelerator-count=ACCELERATOR_COUNT,disk-type=BOOT_DISK_TYPE,disk-size=BOOT_DISK_SIZE_GB"

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,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT,machine-type=MACHINE_TYPE,accelerator-type=ACCELERATOR_TYPE,accelerator-count=ACCELERATOR_COUNT,disk-type=BOOT_DISK_TYPE,disk-size=BOOT_DISK_SIZE_GB"

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,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT,machine-type=MACHINE_TYPE,accelerator-type=ACCELERATOR_TYPE,accelerator-count=ACCELERATOR_COUNT,disk-type=BOOT_DISK_TYPE,disk-size=BOOT_DISK_SIZE_GB"

Você receberá uma resposta semelhante a esta:

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
Operation to create PersistentResource [projects/123456789012/locations/us-central1/persistentResources/mypersistentresource/operations/1234567890123456789] is submitted successfully.

You may view the status of your PersistentResource create operation with the command

  $ gcloud ai operations describe projects/sample-project/locations/us-central1/operations/1234567890123456789

Comando gcloud de exemplo:

gcloud ai persistent-resources create \
    --persistent-resource-id=my-persistent-resource \
    --region=us-central1 \
    --resource-pool-spec="min-replica-count=4,max-replica-count=12,machine-type=n1-highmem-2,accelerator-type=NVIDIA_TESLA_K80,accelerator-count=1,disk-type=pd-standard,disk-size=200" \
    --resource-pool-spec="replica-count=4,machine-type=n1-standard-4"

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

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.

# Create the persistent resource. This method returns the created resource.
# Setting `sync` to `FALSE` makes the method is non-blocking and the resource
# object returned syncs when the method completes.
my_example_resource = persistent_resource.PersistentResource.create(
    persistent_resource_id=EXAMPLE_PERSISTENT_RESOURCE_ID,
    display_name=EXAMPLE_PERSISTENT_RESOURCE_NAME,
    resource_pools=[
        EXAMPLE_RESOURCE_POOL # EXAMPLE_AUTOSCALED_RESOURCE_POOL
    ],
    labels=EXAMPLE_LABELS,
    sync=SYNC,
)

if not SYNC:
    my_example_resource.wait()

REST

Um recurso permanente pode ter um ou mais pools de recursos (machine_spec), e cada pool de recursos pode ter o escalonamento automático ativado ou desativado.

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 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: o ID do recurso permanente.
  • DISPLAY_NAME: (opcional) o nome de exibição do recurso permanente.
  • MACHINE_TYPE: o tipo de 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 API ResourcePool.
  • ACCELERATOR_TYPE: o tipo de GPU a ser anexado a cada VM no pool de recursos (opcional). Para uma lista de GPUs compatíveis, consulte GPUs. Esse campo corresponde ao machineSpec.acceleratorType na mensagem da API ResourcePool.
  • ACCELERATOR_COUNT: o número de GPUs a serem anexadas a cada VM no pool de recursos (opcional). O valor padrão é 1. Esse campo corresponde ao campo machineSpec.acceleratorCount na mensagem da API ResourcePool.
  • REPLICA_COUNT: o número de réplicas a serem criadas ao criar este pool de recursos. Esse campo corresponde ao replicaCount na mensagem da API ResourcePool. Este campo será obrigatório se você não especificar MIN_REPLICA_COUNT e MAX_REPLICA_COUNT.
  • MIN_REPLICA_COUNT (opcional): o número mínimo de réplicas que podem ser reduzidos no escalonamento automático para esse pool de recursos. MIN_REPLICA_COUNT e MAX_REPLICA_COUNT são necessários para ativar o escalonamento automático neste pool de recursos.
  • MAX_REPLICA_COUNT: (opcional) o número máximo de réplicas que o escalonamento automático pode escalonar verticalmente para esse pool de recursos. MIN_REPLICA_COUNT e MAX_REPLICA_COUNT são necessários para ativar o escalonamento automático neste pool de recursos.
  • BOOT_DISK_TYPE: o tipo de disco a ser usado como disco de inicialização de cada VM no pool de recursos (opcional). Esse campo corresponde ao diskSpec.bootDiskType na mensagem da API ResourcePool. Os valores aceitáveis são os seguintes:
    • pd-standard (padrão)
    • pd-ssd
  • BOOT_DISK_SIZE_GB: o tamanho do disco em GiB para o disco de inicialização de cada VM no pool de recursos (opcional). Os valores aceitáveis são de 100 (padrão) a 64000. Esse campo corresponde ao campo diskSpec.bootDiskSizeGb na mensagem da API ResourcePool.

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",
        "accelerator_type": "ACCELERATOR_TYPE",
        "accelerator_count": ACCELERATOR_COUNT
      },
      "replica_count": REPLICA_COUNT,
      "autoscaling_spec": {
        "min_replica_count": MIN_REPLICA_COUNT,
        "max_replica_count": MAX_REPLICA_COUNT
      },
      "disk_spec": {
        "boot_disk_type": "BOOT_DISK_TYPE",
        "boot_disk_size_gb": BOOT_DISK_SIZE_GB
      }
    }
  ]
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/123456789012/locations/us-central1/persistentResources/mypersistentresource/operations/1234567890123456789",
  "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"
    }
  }
}

Estoque esgotado do recurso

Pode haver estoque esgotado de recursos escassos, como as GPUs A100, o que pode levar a uma falha permanente na criação de recursos quando nenhum recurso está disponível na região especificada. Nesse caso, é possível tentar reduzir o número de réplicas, mudar para um tipo de acelerador diferente, tentar novamente fora dos horários de pico ou tentar outra região.

A seguir