Usar VMs de início flexível com o cluster Slurm

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.

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 um flex_start_max_duration personalizado 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_duration e é 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.