Este documento explica como usar as reservas do Compute Engine para ter um elevado nível de garantia de que as suas tarefas de preparação personalizadas têm os recursos de máquinas virtuais (VMs) necessários para serem executadas.
As reservas são uma funcionalidade do Compute Engine. Ajudam a garantir que tem os recursos disponíveis para criar VMs com o mesmo hardware (memória e vCPUs) e recursos opcionais (CPUs, GPUs, TPUs e discos SSD locais) sempre que precisar deles.
Quando cria uma reserva, o Compute Engine verifica se a capacidade pedida está disponível na zona especificada. Se for o caso, o Compute Engine reserva os recursos, cria a reserva e acontece o seguinte:
- Pode consumir imediatamente os recursos reservados, e estes permanecem disponíveis até eliminar a reserva.
- Os recursos reservados são cobrados à mesma taxa a pedido que as VMs em execução, incluindo quaisquer descontos aplicáveis, até que a reserva seja eliminada. Uma VM que consuma uma reserva não incorre em custos separados. Só lhe é cobrado o custo dos recursos fora da reserva, como discos ou endereços IP. Para saber mais, consulte os preços das reservas.
Limitações e requisitos
Quando usar reservas do Compute Engine com a Vertex AI, considere as seguintes limitações e requisitos:
- A Vertex AI só pode usar reservas para: CPUs, VMs de GPU, ou TPUs (pré-visualização).
- O Vertex AI não pode consumir reservas de VMs que tenham discos SSD locais anexados manualmente.
- A utilização de reservas do Compute Engine com o Vertex AI só é suportada para preparação e inferência personalizadas e para o Vertex AI Workbench (pré-visualização).
- As propriedades da VM de uma reserva têm de corresponder exatamente à sua carga de trabalho do Vertex AI
para consumir a reserva. Por exemplo, se uma reserva especificar um tipo de máquina
a2-ultragpu-8g
, a carga de trabalho do Vertex AI só pode consumir a reserva se também usar um tipo de máquinaa2-ultragpu-8g
. Veja os requisitos. - Para consumir uma reserva partilhada de VMs com GPUs ou TPUs, tem de a consumir através do projeto proprietário ou de um projeto consumidor com o qual a reserva é partilhada. Veja Como funcionam as reservas partilhadas.
- Para suportar atualizações regulares das suas implementações da Vertex AI, recomendamos que aumente o número de VMs em, pelo menos, mais 1 VM para cada implementação simultânea.
-
O início flexível para o programador de cargas de trabalho dinâmicas e a execução de tarefas de preparação num recurso persistente são suportados, exceto quando usa reservas do Compute Engine com a preparação do Vertex AI.
Faturação
Quando usa reservas do Compute Engine, é-lhe faturado o seguinte:
- Preços do Compute Engine para os recursos do Compute Engine, incluindo quaisquer descontos de fidelidade (DFs) aplicáveis. Consulte os preços do Compute Engine.
- Taxas de gestão da preparação personalizada da Vertex AI, além da sua utilização da infraestrutura. Consulte os preços dos modelos personalizados.
Antes de começar
- Reveja os requisitos e as restrições para reservas.
- Reveja os requisitos de quota e as restrições para reservas partilhadas.
Permitir que uma reserva seja consumida
Antes de consumir uma reserva de CPUs, VMs de GPU ou TPUs, tem de definir a respetiva política de partilha para permitir que o Vertex AI consuma a reserva. Para tal, use um dos seguintes métodos:
Permitir o consumo durante a criação de uma reserva
Quando cria uma reserva de projeto único ou uma reserva partilhada de VMs de GPU, pode permitir que o Vertex AI consuma a reserva da seguinte forma:
- Se estiver a usar a Google Cloud consola, na secção Serviços Google Cloud, selecione Partilhar reserva.
- Se estiver a usar a Google Cloud CLI, inclua a flag
--reservation-sharing-policy
definida comoALLOW_ALL
. - Se estiver a usar a API REST, no corpo do pedido, inclua o campo
serviceShareType
definido comoALLOW_ALL
.
Permitir o consumo numa reserva existente
Só pode modificar uma reserva criada automaticamente de VMs com GPU ou TPUs para uma reserva futura após a hora de início da reserva.
Para permitir que o Vertex AI consuma uma reserva existente, use um dos seguintes métodos:
Verifique se uma reserva é consumida
Para verificar se a reserva está a ser consumida, consulte o artigo Verifique o consumo de reservas na documentação do Compute Engine.Crie uma tarefa de preparação personalizada com uma reserva
Use a API REST para criar uma tarefa de preparação personalizada que consuma uma reserva do Compute Engine de VMs de GPU.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION: a região onde o contentor ou o pacote Python vai ser executado.
- PROJECT_ID: o projeto no qual a reserva foi criada. Para consumir uma reserva partilhada de outro projeto, tem de partilhar a reserva com esse projeto. Para mais informações, consulte Modifique os projetos de consumidor numa reserva partilhada.
-
JOB_NAME: obrigatório. Um nome a apresentar para o
CustomJob
. - MACHINE_TYPE: o tipo de máquina a usar para a tarefa. A predefinição é
n1-standard-2
. Para mais informações sobre os tipos de máquinas suportados, consulte o artigo Configure recursos de computação para preparação personalizada. - ACCELERATOR_TYPE: o tipo de acelerador a associar à máquina. Para mais informações sobre o tipo de GPU que cada tipo de máquina suporta, consulte GPUs para cargas de trabalho de computação.
- ACCELERATOR_COUNT: o número de aceleradores a associar à máquina.
- Defina a tarefa de formação personalizada:
RESERVATION_AFFINITY_TYPE: tem de ser
ANY
,SPECIFIC_RESERVATION
ouNONE
.ANY
significa que as VMs do seucustomJob
podem consumir automaticamente qualquer reserva com propriedades correspondentes.SPECIFIC_RESERVATION
significa que as VMs do seucustomJob
só podem consumir uma reserva que as VMs segmentam especificamente por nome.NONE
significa que as VMs do seucustomJob
não podem consumir nenhuma reserva. A especificação deNONE
tem o mesmo efeito que omitir uma especificação de afinidade de reserva.
- ZONE: a zona onde a reserva foi criada.
- RESERVATION_NAME: o nome da sua reserva.
- DISK_TYPE: opcional. O tipo de disco de arranque a usar para a tarefa,
pd-standard
(predefinição) oupd-ssd
. Saiba mais sobre os tipos de discos. - DISK_SIZE: opcional. O tamanho em GB do disco de arranque a usar para a tarefa. O valor predefinido é 100.
- REPLICA_COUNT: o número de réplicas de trabalhadores a usar. Na maioria dos casos,
defina este valor como
1
para o seu primeiro conjunto de trabalhadores. - Se a sua aplicação de preparação for executada num contentor personalizado, especifique o seguinte:
- CUSTOM_CONTAINER_IMAGE_URI: o URI de uma imagem de contentor no Artifact Registry ou no Docker Hub que vai ser executada em cada réplica de worker.
- CUSTOM_CONTAINER_COMMAND: opcional. O comando a invocar quando o contentor é iniciado. Este comando substitui o ponto de entrada predefinido do contentor.
- CUSTOM_CONTAINER_ARGS: opcional. Os argumentos a transmitir quando iniciar o contentor.
- Se a sua aplicação de preparação for um pacote Python executado num contentor pré-criado,
especifique o seguinte:
- EXECUTOR_IMAGE_URI: o URI da imagem do contentor que executa o código facultado. Consulte os contentores pré-criados disponíveis para formação.
- PYTHON_PACKAGE_URIS: lista separada por vírgulas de URIs do Cloud Storage que especificam os ficheiros de pacotes Python que são o programa de preparação e os respetivos pacotes dependentes. O número máximo de URIs de pacotes é 100.
- PYTHON_MODULE: o nome do módulo Python a executar após a instalação dos pacotes.
- PYTHON_PACKAGE_ARGS: opcional. Argumentos da linha de comandos a transmitir ao módulo Python.
- TIMEOUT: opcional. O tempo de execução máximo da tarefa.
- Especifique os elementos LABEL_NAME e LABEL_VALUE para todas as etiquetas que quer aplicar a esta tarefa personalizada.
Método HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs
Corpo JSON do pedido:
{ "displayName": "JOB_NAME", "jobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "MACHINE_TYPE", "acceleratorType": "ACCELERATOR_TYPE", "acceleratorCount": ACCELERATOR_COUNT, "reservationAffinity": { "reservationAffinityType": "RESERVATION_AFFINITY_TYPE", "key": "compute.googleapis.com/reservation-name", "values": [ "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME" ] }, }, "replicaCount": REPLICA_COUNT, "diskSpec": { "bootDiskType": DISK_TYPE, "bootDiskSizeGb": DISK_SIZE }, // Union field task can be only one of the following: "containerSpec": { "imageUri": CUSTOM_CONTAINER_IMAGE_URI, "command": [ CUSTOM_CONTAINER_COMMAND ], "args": [ CUSTOM_CONTAINER_ARGS ] }, "pythonPackageSpec": { "executorImageUri": EXECUTOR_IMAGE_URI, "packageUris": [ PYTHON_PACKAGE_URIS ], "pythonModule": PYTHON_MODULE, "args": [ PYTHON_PACKAGE_ARGS ] } // End of list of possible types for union field task. } // Specify one workerPoolSpec for single replica training, or multiple workerPoolSpecs // for distributed training. ], "scheduling": { "timeout": TIMEOUT } }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
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/v1/projects/PROJECT_ID/locations/LOCATION/customJobs"
PowerShell
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$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/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content
A resposta contém informações sobre as especificações, bem como o TRAININGPIPELINE_ID.
O que se segue?
- Saiba mais sobre as reservas de recursos zonais do Compute Engine.
- Saiba como usar reservas com a previsão do Vertex AI.
- Saiba como ver reservas.
- Saiba como monitorizar o consumo de reservas.