Este guia fornece instruções para configurar e usar VMs de início flexível com o Slurm na plataforma de agentes do Gemini Enterprise. Essa integração permite usar modelos de provisionamento de VM flexíveis para cargas de trabalho de treinamento.
Configuração e criação de clusters
Antes de definir a configuração do cluster, conclua a etapa de pré-requisito única a seguir para garantir que as contas de serviço necessárias estejam autorizadas a gerenciar recursos de início flexível.
Verificar as permissões do agente de serviço de APIs do Google
- Contexto: o Slurm na plataforma de agentes do Gemini Enterprise usa grupos gerenciados de instâncias para provisionar dinamicamente instâncias de VM de início flexível e gerenciar o ciclo de vida delas. O agente de serviço das APIs do Google cria e gerencia os recursos subjacentes do Compute Engine para o grupo gerenciado de instâncias. Conforme detalhado na documentação de grupos gerenciados de instâncias e do IAM, essa conta de serviço exige permissões para criar, excluir e listar instâncias de VM, além de permissão para anexar uma identidade de conta de serviço a elas.
- Ação: verifique se o agente de serviço de APIs do Google
(
PROJECT_NUMBER@cloudservices.s3ns-system.iam.gserviceaccount.com) já tem o papel de Editor (roles/editor).- Se a resposta for "sim": provavelmente não será necessário realizar mais ações. O papel de editor geralmente inclui todas as permissões necessárias.
- Se a resposta for "não": se o papel de editor padrão não for concedido, você terá que conceder explicitamente os seguintes papéis para garantir que o MIG funcione:
- Administrador da instância do Compute (v1) (
roles/compute.instanceAdmin.v1): necessário para criar, listar e excluir instâncias de VM. - Usuário da conta de serviço (
roles/iam.serviceAccountUser): necessário para anexar uma conta de serviço às novas VMs.
- Administrador da instância do Compute (v1) (
Como criar um cluster do Slurm com o modelo de provisionamento de início flexível
Para criar um cluster do Slurm que usa o modelo de provisionamento de início flexível, especifique o provisioning_model na configuração do pool de nós da especificação do cluster ao enviar a solicitação de criação do cluster usando a API.
Exemplo de snippet de configuração:salve a configuração JSON a seguir em um arquivo chamado cluster_config.json. Este exemplo usa explicitamente um slurm_spec.
Substitua os marcadores (por exemplo, <project-id>, <region>, <zone>)
pelos valores reais.
{
"display_name": "flexvm",
"name": "projects/<project-id>/locations/<region>/modelDevelopmentClusters/",
"network": {
"network": "projects/<project-id>/global/networks/default",
"subnetwork": "projects/<project-id>/regions/<region>/subnetworks/default"
},
"node_pools": [
{
"id": "login",
"machine_spec": { "machine_type": "n2-standard-8" },
"scaling_spec": { "min_node_count": 1, "max_node_count": 1 },
"enable_public_ips": "true",
"zone": "<zone>",
"boot_disk": { "boot_disk_type": "pd-standard", "boot_disk_size_gb": 120 }
},
{
"id": "a3u",
"machine_spec": {
"machine_type": "a3-ultragpu-8g",
"accelerator_type": "NVIDIA_H200_141GB",
"accelerator_count": 8
},
"provisioning_model": "FLEX_START",
"flex_start_max_duration": "604800s",
"scaling_spec": { "min_node_count": 0, "max_node_count": 2 },
"zone": "<zone>",
"enable_public_ips": "true",
"boot_disk": { "boot_disk_type": "hyperdisk-balanced", "boot_disk_size_gb": 400 }
}
],
"orchestrator_spec": {
"slurm_spec": {
"home_directory_storage": "projects/<project-id>/locations/<zone>/instances/<filestore-id>",
"partitions": [ { "id": "a3u", "node_pool_ids": [ "a3u" ] } ],
"login_node_pool_id": "login"
}
}
}
Siga as etapas em Criar um cluster do Slurm para autenticar e enviar a solicitação.
Duração máxima do início flexível:opcionalmente, defina a duração máxima da execução das instâncias de início flexível. Use o campo flex_start_max_duration na configuração do pool de nós, especificando o valor como uma string em segundos, anexada com um "s" (por exemplo, "172800s" para dois dias). Se omitido, o sistema será definido como sete dias.
Ciclo de vida operacional e resiliência
Entender o ciclo de vida dos nós de início flexível em um ambiente do Slurm na plataforma de agentes do Gemini Enterprise é fundamental para planejar seus jobs.
Restrições de início flexível
Todas as VMs de início flexível têm uma duração máxima de execução fixa, definida pela configuração flex_start_max_duration.
- Limite de duração: por padrão, o
flex_start_max_durationé definido como sete dias. É possível substituir esse limite especificando umflex_start_max_durationpersonalizado entre 30 segundos e um máximo de sete dias (604.800 segundos) na configuração do pool de nós para corresponder melhor aos tempos de execução esperados do job. - Encerramento: quando esse limite é atingido, o Compute Engine encerra a instância.
Comportamento de escalonamento de nós
As seções a seguir descrevem as duas estratégias de escalonamento disponíveis: estática e dinâmica.
Nó estático
Os nós estáticos permitem manter um pool fixo de recursos que estão sempre
disponíveis (por exemplo, min_node_count > 0).
- Provisionamento: os nós são solicitados imediatamente após a criação ou o redimensionamento do cluster para atender à contagem mínima de nós.
- Validade e recuperação: quando um nó de início flexível estático atinge o
flex_start_max_duratione é encerrado pelo Compute Engine, o sistema tenta recriar o nó automaticamente para restaurar a capacidade definida do cluster. Esse ciclo garante que o pool estático permaneça preenchido, independentemente de um job do Slurm estar aguardando nos nós.
Nó dinâmico
Os nós dinâmicos permitem que o cluster escalonar verticalmente apenas quando necessário.
- Provisionamento: quando um job é enfileirado (entrando em um estado
PENDING), o programador do Slurm solicita recursos criando um grupo gerenciado de instâncias e emitindo uma solicitação de redimensionamento. - Validade e recuperação: após a expiração, o sistema provisiona um novo nó de início flexível somente se um job do Slurm estiver pendente nos nós.
Resiliência e reparo automático de clusters
O Slurm na Gemini Enterprise Agent Platform monitora a integridade do nó em estágios importantes do ciclo de vida do job. As verificações de integridade são executadas antes do início de um job (o prólogo) e depois da conclusão (o epílogo) para ajudar a manter a estabilidade do job.
- Tratamento de erros de hardware: se o serviço detectar problemas críticos de hardware (como erros de GPU), ele será projetado para reparar automaticamente a VM com problemas.
- Substituição automática: se o job ainda estiver em um estado PENDENTE (ou tiver sido enfileirado novamente para PENDENTE devido à falha do nó), o sistema provisionará automaticamente uma nova instância de início flexível para substituir a VM com problemas. Isso permite que a carga de trabalho prossiga em hardware íntegro sem intervenção manual.