Esta página fornece o método direto baseado em API para criar e gerir
um cluster de preparação. Vai saber como definir a configuração completa do cluster, incluindo nós de início de sessão, partições de GPU de alto desempenho, como a A4, e definições do orquestrador Slurm, num ficheiro JSON.
Também está incluído como usar o curl e as chamadas API REST para implementar esta configuração, criar o cluster e gerir o respetivo ciclo de vida com as operações GET, LIST, UPDATE e DELETE.
Defina a configuração do cluster
Crie um ficheiro JSON para definir a configuração completa do seu cluster de preparação.
Se a sua política organizacional proibir endereços IP públicos em instâncias de computação, implemente o cluster de preparação com o parâmetro enable_public_ips: false e use o Cloud NAT para a saída da Internet.
O primeiro passo no aprovisionamento de um cluster de preparação é definir a respetiva configuração completa num ficheiro JSON. Este ficheiro funciona como o projeto do cluster, especificando tudo, desde o nome e as definições de rede ao hardware para os respetivos nós de início de sessão e de trabalho.
A secção seguinte apresenta vários ficheiros de configuração JSON completos que servem como modelos práticos para uma variedade de exemplos de utilização comuns. Consulte esta lista para encontrar o exemplo que melhor se adequa às suas necessidades e usá-lo como ponto de partida.
GPU apenas com o Filestore: uma configuração padrão para a preparação de GPUs de uso geral.
GPU com Filestore e Lustre gerido: Uma configuração avançada para tarefas com utilização intensiva de E/S.
GPU com script de arranque: Demonstra como executar comandos personalizados em nós no arranque.
Cluster apenas de CPU: Uma configuração básica que usa apenas recursos da CPU.
CPU com configuração avançada do Slurm: Um exemplo que mostra as definições do agendador do Slurm personalizadas.
Cada exemplo é seguido de uma descrição detalhada dos parâmetros principais usados nessa configuração específica.
GPU apenas com o Filestore
Esta é a configuração padrão. Fornece uma instância do Filestore que serve como o diretório /home para o cluster, adequado para utilização geral e armazenamento de dados do utilizador.
O exemplo seguinte mostra o conteúdo de gpu-filestore.json. Esta especificação cria um cluster com uma partição de GPU. Pode usar isto como modelo e
modificar valores como machineType ou nodeCount de acordo com as suas necessidades.
Para ver uma lista de parâmetros, consulte a referência de parâmetros.
{ "display_name": "DISPLAY_NAME", "network": { "network": "projects/PROJECT_ID/global/networks/NETWORK", "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK" }, "node_pools": [ { "id": "login", "machine_spec": { "machine_type": "n2-standard-8" }, "scaling_spec": { "min_node_count": MIN_NODE_COUNT, "max_node_count": MAX_NODE_COUNT }, "enable_public_ips": true, "zone": "ZONE", "boot_disk": { "boot_disk_type": "pd-standard", "boot_disk_size_gb": 200 }, }, { "id": "a4", "machine_spec": { "machine_type": "a4-highgpu-8g", "accelerator_type": "NVIDIA_B200", "provisioning_model": "RESERVATION", "accelerator_count": 8, "reservation_affinity": { "reservationAffinityType": "RESERVATION_AFFINITY_TYPE", "key": "compute.googleapis.com/reservation-name", "values": [ "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION" ] } }, "scaling_spec": { "min_node_count": MIN_NODE_COUNT, "max_node_count": MAX_NODE_COUNT }, "enable_public_ips": true, "zone": "ZONE", "boot_disk": { "boot_disk_type": "hyperdisk-balanced", "boot_disk_size_gb": 200 }, } ], "orchestrator_spec": { "slurm_spec": { "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE", "partitions": [ { "id": "a4", "node_pool_ids": [ "a4" ] } ], "login_node_pool_id": "login" } } } }
GPU com Filestore e Managed Lustre
Esta configuração avançada inclui a instância padrão do Filestore, além de um sistema de ficheiros Lustre de elevado desempenho. Escolha esta opção se as suas tarefas de preparação requererem acesso de elevado débito a grandes conjuntos de dados.
Para ver uma lista de parâmetros, consulte a referência de parâmetros.
{ "display_name": "DISPLAY_NAME", "network": { "network": "projects/PROJECT_ID/global/networks/NETWORK", "subnetwork": "projects/PROJECT_ID/regions/asia-sREGION/subnetworks/SUBNETWORK" }, "node_pools": [ { "id": "login", "machine_spec": { "machine_type": "n2-standard-8" }, "scaling_spec": { "min_node_count": MIN_NODE_COUNT, "max_node_count": MAX_NODE_COUNT }, "enable_public_ips": true, "zone": "ZONE", "boot_disk": { "boot_disk_type": "pd-standard", "boot_disk_size_gb": 200 }, "lustres": [ "projects/PROJECT_ID/locations/ZONE/instances/LUSTRE" ] }, { "id": "a4", "machine_spec": { "machine_type": "a4-highgpu-8g", "accelerator_type": "NVIDIA_B200", "accelerator_count": 8, "reservation_affinity": { "reservation_affinity_type": RESERVATION_AFFINITY_TYPE, "key": "compute.googleapis.com/reservation-name", "values": [ "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME" ] } }, "provisioning_model": "RESERVATION", "scaling_spec": { "min_node_count": MIN_NODE_COUNT, "max_node_count": MAX_NODE_COUNT }, "enable_public_ips": true, "zone": "ZONE", "boot_disk": { "boot_disk_type": "hyperdisk-balanced", "boot_disk_size_gb": 200 }, "lustres": [ "projects/PROJECT_ID/locations/ZONE/instances/LUSTRE" ] } ], "orchestrator_spec": { "slurm_spec": { "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE", "partitions": [ { "id": "a4", "node_pool_ids": [ "a4" ] } ], "login_node_pool_id": "login" } } }
GPU com script de arranque
Este exemplo demonstra como adicionar um script personalizado a um conjunto de nós. Este script é executado em todos os nós nesse conjunto no arranque. Para configurar esta opção, adicione os campos relevantes à definição do conjunto de nós, além das definições gerais. Para ver uma lista de parâmetros e respetivas descrições, consulte a referência de parâmetros.
{ "display_name": "DISPLAY_NAME", "network": { "network": "projects/PROJECT_ID/global/networks/NETWORK" , "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK" }, "node_pools": [ { "id": "login", "machine_spec": { "machine_type": "n2-standard-8" }, "scaling_spec": { "min_node_count": MIN_NODE_COUNT, "max_node_count": MAX_NODE_COUNT }, "enable_public_ips": true, "zone": "ZONE", "boot_disk": { "boot_disk_type": "pd-standard", "boot_disk_size_gb": 200 }, "startup_script" : "#Example script\nsudo mkdir -p /data\necho 'Script Finished'\n", }, { "id": "a4", "machine_spec": { "machine_type": "a4-highgpu-8g", "accelerator_type": "NVIDIA_B200", "provisioning_model": "RESERVATION_NAME", "accelerator_count": 8, "reservation_affinity": { "reservationAffinityType": "RESERVATION_AFFINITY_TYPE", "key": "compute.googleapis.com/reservation-name", "values": [ "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME" ] } }, "scaling_spec": { "min_node_count": MIN_NODE_COUNT, "max_node_count": MAX_NODE_COUNT }, "enable_public_ips": true, "zone": "ZONE", "boot_disk": { "boot_disk_type": "hyperdisk-balanced", "boot_disk_size_gb": 200 }, "startup_script" : "#Example script\nsudo mkdir -p /data\necho 'Script Finished'\n", } ], "orchestrator_spec": { "slurm_spec": { "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE", "partitions": [ { "id": "a4", "node_pool_ids": [ "a4" ] } ], "login_node_pool_id": "login" } } } }
Cluster apenas com CPU
Para aprovisionar um ambiente de cluster de preparação, primeiro tem de definir a respetiva configuração completa num ficheiro JSON. Este ficheiro funciona como o projeto do seu cluster, especificando tudo, desde o nome e as definições de rede ao hardware para os respetivos nós de início de sessão e de trabalho.
Para ver uma lista de parâmetros, consulte a referência de parâmetros.
{ "display_name": "DISPLAY_NAME", "network": { "network": "projects/PROJECT_ID/global/networks/NETWORK", "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK" }, "node_pools": [ { "id": "cpu", "machine_spec": { "machine_type": "n2-standard-8" }, "scaling_spec": { "min_node_count": MIN_NODE_COUNT, "max_node_count": MAX_NODE_COUNT }, "zone": "ZONE", "enable_public_ips": true, "boot_disk": { "boot_disk_type": "pd-standard", "boot_disk_size_gb": 120 } }, { "id": "login", "machine_spec": { "machine_type": "n2-standard-8", } "scaling_spec": { "min_node_count": MIN_NODE_COUNT, "max_node_count": MAX_NODE_COUNT }, "zone": "ZONE", "enable_public_ips": true, "boot_disk": { "boot_disk_type": "pd-standard", "boot_disk_size_gb": 120 } }, ], "orchestrator_spec": { "slurm_spec": { "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE", "partitions": [ { "id": "cpu", "node_pool_ids": [ "cpu" ] } ], "login_node_pool_id": "login" } } }
CPU com configuração avançada do Slurm
Este exemplo demonstra como personalizar o orquestrador Slurm com parâmetros avançados. Use este modelo se precisar de um controlo detalhado sobre o comportamento do agendamento de tarefas, como definir ponderações de prioridade multifatoriais, configurar a preempção de tarefas e executar scripts de prólogo e epílogo para a configuração e a limpeza automatizadas de tarefas.
Para ver uma lista de parâmetros, consulte a referência de parâmetros.
{ "display_name": "DISPLAY_NAME", "network": { "network": "projects/PROJECT_ID/global/networks/NETWORK", "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK" }, "node_pools": [ { "id": "cpu", "machine_spec": { "machine_type": "n2-standard-8" }, "scaling_spec": { "min_node_count": MIN_NODE_COUNT, "max_node_count": MAX_NODE_COUNT }, "zone": "ZONE", "enable_public_ips": true, "boot_disk": { "boot_disk_type": "pd-standard", "boot_disk_size_gb": 120 } }, { "id": "login", "machine_spec": { "machine_type": "n2-standard-8" }, "scaling_spec": { "min_node_count": MIN_NODE_COUNT, "max_node_count": MAX_NODE_COUNT }, "zone": "ZONE", "enable_public_ips": true, "boot_disk": { "boot_disk_type": "pd-standard", "boot_disk_size_gb": 120 } } ], "orchestrator_spec": { "slurm_spec": { "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE", "accounting": { "accounting_storage_enforce": "ACCOUNTING_STORAGE_ENFORCE" }, "scheduling": { "priority_type": "PRIORITY_TYPE", "priority_weight_age": PRIORITY_WEIGHT_AGE, "priority_weight_assoc": PRIORITY_WEIGHT_ASSOC, "priority_weight_fairshare": PRIORITY_WEIGHT_FAIRSHARE, "priority_weight_job_size": PRIORITY_WEIGHT_JOB_SIZE, "priority_weight_partition": PRIORITY_WEIGHT_PARTITION, "priority_weight_qos": PRIORITY_WEIGHT_QOS, "priority_weight_tres": "PRIORITY_WEIGHT_TRES", "preempt_type": "PREEMPT_TYPE", "preempt_mode": "PREEMPT_MODE", "preempt_exempt_time": "PREEMPT_EXEMPT_TIME" }, "prolog_bash_scripts": [ "#!/bin/bash\necho 'First prolog script running'", "#!/bin/bash\necho 'Second prolog script running'" ], "epilog_bash_scripts": [ "#!/bin/bash\necho 'Epilog script running'" ] "partitions": [ { "id": "cpu", "node_pool_ids": [ "cpu" ] } ], "login_node_pool_id": "login" } } }
Depois de definir o cluster num ficheiro JSON, use os seguintes comandos da API REST para implementar e gerir o cluster. Os exemplos usam um alias gcurl, que é um atalho autenticado conveniente para interagir com os pontos finais da API. Estes comandos abrangem o ciclo de vida completo, desde a implementação inicial do cluster à atualização de um cluster que obtém o respetivo estado, a listagem de todos os clusters e, por último, a eliminação do cluster.
Autenticação
alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
Crie um ficheiro JSON
Crie um ficheiro JSON (por exemplo, @cpu-cluster.json) para especificar a configuração do cluster de preparação de modelos.
Implemente o cluster
Depois de criar o ficheiro de configuração JSON, pode implementar o cluster através da API REST.
Defina variáveis de ambiente
Antes de executar o comando, defina as seguintes variáveis de ambiente. Isto torna o comando da API mais simples e fácil de gerir.
- PROJECT_ID: O ID do projeto onde o cluster vai ser criado. Google Cloud
- REGION: A Google Cloud região do cluster e os respetivos recursos.
- ZONE: a Google Cloud zona onde os recursos do cluster vão ser aprovisionados.
- CLUSTER_ID: um identificador exclusivo para o seu cluster de preparação, que também é usado como prefixo para a nomenclatura de recursos relacionados.
Execute o comando de criação
Agora, execute o seguinte comando gcurl. Usa o ficheiro JSON (neste exemplo, cpu-cluster.json) como o corpo do pedido e as variáveis de ambiente que acabou de definir para construir o ponto final da API e os parâmetros de consulta.
gcurl -X POST -d @cpu-cluster.json https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters?model_development_cluster_id=CLUSTER_ID
Assim que a implementação começar, é gerado um ID da operação. Certifique-se de que copia este ID. Precisa dele para validar o cluster no passo seguinte.
gcurl -X POST -d @cpu-cluster.json https://us-central1-aiplatform.googleapis.com/v1beta1/projects/managedtraining-project/locations/us-central1/modelDevelopmentClusters?model_development_cluster_id=training { "name": "projects/1059558423163/locations/us-central1/operations/2995239222190800896", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateModelDevelopmentClusterOperationMetadata", "genericMetadata": { "createTime": "2025-10-24T14:16:59.233332Z", "updateTime": "2025-10-24T14:16:59.233332Z" }, "progressMessage": "Create Model Development Cluster request received, provisioning..." }
Valide a implementação do cluster
Acompanhe o progresso da implementação através do ID da operação fornecido quando
implementou o cluster. Por exemplo, 2995239222190800896 é o ID da operação no exemplo citado anteriormente.
gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Em resumo
O envio da configuração do cluster com o comando gcurl POST inicia o aprovisionamento do cluster, que é uma operação assíncrona de longa duração. A API devolve imediatamente uma resposta que contém um Operation ID.
É fundamental guardar este ID, uma vez que o vai usar nos passos seguintes para
monitorizar o progresso da implementação, verificar se o cluster foi criado
com êxito e gerir o respetivo ciclo de vida.
Referência de parâmetros
A lista seguinte descreve todos os parâmetros usados nos exemplos de configuração. Os parâmetros estão organizados em grupos lógicos com base no recurso que configuram.
Definições gerais e de rede
- DISPLAY_NAME: um nome exclusivo para o seu cluster de preparação. A string só pode conter carateres alfanuméricos em minúsculas, tem de começar por uma letra e está limitada a 10 carateres.
- PROJECT_ID: o ID do seu Google Cloud projeto.
- REGION: A região Google Cloud onde o cluster e os respetivos recursos vão estar localizados.
- NETWORK: A rede de nuvem privada virtual a usar para os recursos do cluster.
- ZONE: a Google Cloud zona para o cluster e os respetivos recursos.
- SUBNETWORK: a sub-rede a usar para os recursos do cluster.
Configuração do node pool
Os seguintes parâmetros são usados para definir os conjuntos de nós para os nós de início de sessão e de trabalho.
Definições comuns de node pools
-
ID: um identificador exclusivo do node pool no cluster
(por exemplo, "
login", "a4", "cpu"). -
MACHINE_TYPE: o tipo de máquina do nó trabalhador. Os valores suportados são:
a3-megagpu-8g,a3-ultragpu-8gea4-highgpu-8g. -
MIN_NODE_COUNT: o valor
MIN_NODE_COUNTtem de ser igual ao valorMAX_NODE_COUNT. -
MAX_NODE_COUNT: para o conjunto de nós de início de sessão, o
MAX_NODE_COUNTtem de ser igual aoMIN_NODE_COUNT. -
ENABLE_PUBLIC_IPS: Um valor booleano (
trueoufalse) para determinar se o nó de início de sessão tem um endereço IP público. -
BOOT_DISK_TYPE: O tipo de disco de arranque do nó de início de sessão (por exemplo,
pd-standard,pd-ssd). - BOOT_DISK_SIZE_GB: o tamanho do disco de arranque em GB para o nó de início de sessão.
Definições específicas do trabalhador
-
ACCELERATOR_TYPE: o acelerador de GPU correspondente a associar aos nós trabalhadores.
Os valores suportados são:
NVIDIA_H100_MEGA_80GBNVIDIA_H200_141GBNVIDIA_B200
- ACCELERATOR_COUNT: o número de aceleradores a associar a cada nó de trabalho.
-
PROVISIONING_MODEL: O modelo de aprovisionamento para o nó de trabalho
(por exemplo,
ON_DEMAND,SPOT,RESERVATION,FLEX_START). -
RESERVATION_AFFINITY_TYPE: a afinidade de reserva para o conjunto de nós (por exemplo,
SPECIFIC_RESERVATION). - RESERVATION_NAME: o nome da reserva a usar para o node pool.
Configuração do orquestrador e do armazenamento
Estes campos são definidos no bloco orchestrator_spec.slurm_spec do ficheiro JSON.
Definições principais do Slurm e de armazenamento
-
FILESTORE (corresponde a
home_directory_storage): o nome completo do recurso da instância do Filestore a ser montada como o diretório/home. -
LUSTRE (corresponde a
lustresnum objetonode_pools): uma lista de instâncias do Lustre geridas pré-existentes para montar nos nós do cluster para acesso a ficheiros de alto desempenho. -
LOGIN_NODE_POOL_ID (corresponde a
login_node_pool_id): o ID do conjunto de nós que deve ser usado para nós de início de sessão. -
partitions: uma lista de objetos de partição, em que cada objeto requer umide uma lista denode_pool_ids.
Definições avançadas do Slurm
-
prolog_bash_scripts: uma lista de strings, em que cada string contém o conteúdo completo de um script Bash a ser executado antes do início de uma tarefa. -
epilog_bash_scripts: uma lista de strings, em que cada string contém o conteúdo completo de um script Bash a ser executado após a conclusão de uma tarefa. - ACCOUNTING_STORAGE_ENFORCE: Aplica limites de contabilidade à utilização do armazenamento.
-
PRIORITY_TYPE: O algoritmo de prioridade de agendamento a usar (por exemplo,
priority/multifactor). priority_weight_*: um conjunto de valores inteiros que atribuem peso a diferentes fatores no cálculo da prioridade de agendamento (por exemplo,priority_weight_age,priority_weight_fairshare).- PREEMPT_TYPE: o plug-in de antecipação a usar (por exemplo, preempt/partition_prio).
-
PREEMPT_MODE: o modo do plug-in de antecipação (por exemplo,
REQUEUE). - PREEMPT_EXEMPT_TIME: o tempo após o início de uma tarefa durante o qual não é possível interrompê-la.
O que se segue?
Use o cluster de preparação persistente ativo para executar as suas cargas de trabalho de aprendizagem automática.
- Execute uma tarefa no seu cluster: envie um
CustomJobpara executar uma tarefa de preparação no seu cluster persistente. - Orquestre a sua preparação com os pipelines do Vertex AI: para fluxos de trabalho repetíveis e de nível de produção, automatize o processo de envio de tarefas através dos pipelines do Vertex AI.
- Ver e gerir o cluster: liste os clusters existentes, verifique o respetivo estado e veja os detalhes da configuração através da CLI Google Cloud ou da Google Cloud consola.
- Elimine o cluster para deixar de incorrer em custos: Os clusters de preparação são persistentes e incorrem em custos enquanto estiverem ativos.