Gerenciar cluster

Se você tiver interesse em clusters de treinamento da Gemini Enterprise Agent Platform, entre em contato com seu representante de vendas para ter acesso.

Depois que um cluster é implantado, é possível mudar ou remover usando os seguintes endpoints de API Agent Platform:

  • Update: modifica uma configuração de cluster atual.
  • Delete: remove permanentemente um cluster e os recursos dele.

A atualização de um cluster está disponível apenas pela API Agent Platform. É possível excluir um cluster na API Agent Platform ou no console do Google Cloud .

Para instruções sobre como listar todos os clusters ou ver clusters individuais, consulte Ver clusters.

Autenticação

alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'

Atualize um cluster

UPDATE_PAYLOAD especifica o caminho local para um arquivo JSON que define o ModelDevelopmentCluster completo para o qual você quer atualizar.

Por exemplo, para atualizar a contagem de nós de um pool de um cluster somente de CPU, use o seguinte payload JSON:

{
  "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": UPDATED_MIN_NODE_COUNT,
        "max_node_count": UPDATED_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": 1,
        "max_node_count": 1
      },
      "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"
    }
  }
}

gcurl -X PATCH -d @UPDATE_PAYLOAD https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID
Parâmetros de consulta
  • updateMask (string, opcional): uma FieldMask que especifica quais campos do recurso de cluster de desenvolvimento de modelo serão atualizados. Somente os campos listados em updateMask são alterados.

    Os seguintes campos no recurso ModelDevelopmentCluster podem ser especificados no updateMask:

    • labels
    • node_pools
    • orchestrator_spec.slurm_spec.partitions
    • orchestrator_spec.slurm_spec.default_partition_id
    • orchestrator_spec.slurm_spec.login_node_pool_id
    • orchestrator_spec.slurm_spec.prolog_bash_scripts
    • orchestrator_spec.slurm_spec.epilog_bash_scripts
    • orchestrator_spec.slurm_spec.config
    • orchestrator_spec.slurm_spec.scheduling e orchestrator_spec.slurm_spec.accounting: campos legados que config substitui. Um cluster usa um ou outro. Consulte Atualizar as configurações de configuração do Slurm.
    • orchestrator_spec.slurm_spec.node_sets
  • updateMode (enum, opcional): especifica o modo de atualização. Os valores possíveis são:

    • UPDATE_MODE_UNSPECIFIED: o valor padrão, tratado como USER_AND_SERVICE.
    • USER_ONLY: aplique apenas as mudanças de campo especificadas pelo usuário na solicitação. O serviço não vai atualizar campos gerenciados pelo serviço, como scripts de inicialização, prólogo ou epílogo. Cada pool de nós também permanece na imagem em execução, a menos que você defina node_image. Portanto, uma atualização de USER_ONLY que omite node_image não recria os nós.
    • USER_AND_SERVICE: aplique as mudanças de campo especificadas pelo usuário e deixe o serviço atualizar os campos gerenciados pelo serviço.
    Recomendamos usar USER_AND_SERVICE para garantir que seu cluster esteja atualizado.

O comando abaixo atualiza a configuração do pool de nós e as partições do Slurm.

gcurl -X PATCH -d @update-payload.json \
'https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID?updateMask=orchestrator_spec.slurm_spec.partitions,node_pools&updateMode=USER_AND_SERVICE'
Observação importante sobre campos repetidos

Para campos repetidos, como node_pools, prolog_bash_scripts e epilog_bash_scripts, a API só oferece suporte a uma operação de substituição completa. O usuário precisa fornecer a lista completa e esperada de itens no payload da solicitação para substituir completamente a lista atual.

Mudar a partição padrão

Para mudar a partição padrão sem reenviar partitions, defina default_partition_id e especifique apenas orchestrator_spec.slurm_spec.default_partition_id no updateMask. Uma atualização que remove ou renomeia a partição especificada por default_partition_id é rejeitada.

Atualizar as configurações do Slurm

É possível mudar a configuração do Slurm em um cluster em execução. A aplicação dessas configurações não reinicia nem esgota nenhum nó: o serviço regenera slurm.conf e recarrega o controlador do Slurm, para que os jobs enfileirados e em execução não sejam afetados.

Sempre há o risco de os nós serem reinicializados após a conclusão dos jobs devido a mudanças na dependência subjacente. No entanto, esse risco é minimizado com o modo de atualização USER_ONLY.

As novas configurações podem levar um tempo para aparecer no scontrol show config após a conclusão da operação.

As configurações no escopo do cluster são nomeadas por orchestrator_spec.slurm_spec.config, as configurações do pool de nós por orchestrator_spec.slurm_spec.node_sets e as configurações de partição por orchestrator_spec.slurm_spec.partitions, que carrega o config de cada partição junto com a associação. Cada mapa é substituído por completo, da mesma forma que os campos repetidos descritos anteriormente. Envie o conjunto completo de parâmetros que você quer. Um parâmetro que você deixar de fora será removido. Para limpar um mapa, nomeie o caminho dele no updateMask e envie-o vazio.

O comando abaixo ativa a preempção de prioridade de partição para um cluster atual.

gcurl -X PATCH -d @update-payload.json \
'https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID?updateMask=orchestrator_spec.slurm_spec.config&updateMode=USER_ONLY'

Em que update-payload.json contém, em parte:

{
  ...,
  "orchestrator_spec": {
    "slurm_spec": {
      ...,
      "config": {
        "PriorityType": "priority/multifactor",
        "PriorityWeightAge": "1000",
        "PreemptType": "preempt/partition_prio",
        "PreemptMode": "REQUEUE",
        "PreemptExemptTime": "1:01",
        "SchedulerParameters": "bf_continue,bf_window=1440"
      }
    }
  }
}

Defina parâmetros para todo o cluster em config, em vez de scheduling e accounting, que ele substitui. Um cluster usa um ou outro. Uma solicitação que define ambos é rejeitada.

Se você chamar PATCH sem um updateMask, o serviço vai diferenciar todo o payload do cluster atual. Portanto, um payload que omite essas configurações limpa o que o cluster já tem. Transmita um updateMask para definir o escopo da atualização para os campos que você quer mudar. Um campo que você nomeia, mas deixa de fora do payload, é limpo.

Para mover um cluster atual de scheduling e accounting para config, envie todas as configurações em config usando o nome slurm.conf, por exemplo, AccountingStorageEnforce ou PriorityWeightQOS, deixe scheduling e accounting fora do payload e nomeie os três no updateMask para que os campos mais antigos sejam limpos. Depois disso, um updateMask de orchestrator_spec.slurm_spec.config é suficiente.

Seleção de imagem do nó

Como node_pools é substituído por completo, um pool de nós no payload de atualização que omite node_image é resolvido para a imagem padrão atual do tipo de máquina. Esse padrão avança com o tempo. Portanto, omitir node_image move o pool de nós para a imagem mais recente disponível, o que geralmente é o que você quer: ele corrige bugs, segurança e drivers.

Para manter um pool de nós em uma imagem específica em todas as atualizações, defina node_image como essa imagem. Se você ler o valor atual de Get para enviá-lo de volta, observe que um cluster que nunca foi atualizado informa um node_image vazio.

Comportamento pós-atualização e status do cluster

Uma solicitação bem-sucedida retorna uma operação de longa duração (LRO, na sigla em inglês). Monitore o status dessa operação usando o seguinte comando:

gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Depois que a operação de atualização é concluída, a maioria das modificações entra em vigor imediatamente (ou dentro do tempo de sincronização do Slurm de 15 segundos) e não exige mais ações. Somente as alterações na infraestrutura de computação do cluster, incluindo modificações nas fontes de armazenamento e nos scripts de inicialização, exigem que os recursos sejam recriados.

Excluir um cluster

  gcurl -X DELETE https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID
  

Esse comando retorna uma operação de longa duração em caso de sucesso, que pode ser monitorada usando o comando operations describe.

gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

A seguir

Gerenciar seu cluster de treinamento da Gemini Enterprise Agent Platform permite otimizar o uso, integrar a plataforma a fluxos de trabalho automatizados e preparar os modelos treinados para implantação.

  • Orquestre seu treinamento com os pipelines da Gemini Enterprise Agent Platform: automatize todo o ciclo de vida dos jobs de treinamento, desde a preparação de dados até o registro de modelos, usando pipelines que segmentam seu cluster gerenciado.
  • Monitorar e depurar seus jobs de treinamento: acompanhe o progresso e o uso de recursos e identifique problemas com os jobs de treinamento distribuído em execução no cluster.
  • Implante seu modelo para inferência: depois que os modelos forem treinados e registrados, implante-os em um endpoint da Gemini Enterprise Agent Platform para atender a solicitações de inferência on-line em grande escala.
  • Otimize os custos: analise regularmente a utilização do cluster e exclua-o quando não estiver em uso para minimizar o faturamento do hardware reservado.