Criar um cluster do Slurm autogerenciado para cargas de trabalho de IA

Neste documento, explicamos como configurar e implantar um cluster do Slurm autogerenciado que usa os tipos de máquina A4X Max, A4X, A4, A3 Ultra, A3 Mega ou A3 High. Para saber mais sobre esses tipos de máquina otimizados para aceleradores, consulte Sobre aceleradores de GPU.

As etapas neste documento mostram como criar um cluster do Slurm usando o Cluster Toolkit. O Cluster Toolkit é uma ferramenta de código aberto do Google que simplifica a configuração e a implantação de um cluster usando blueprints. Você tem controle total sobre o cluster, mas também é responsável por gerenciá-lo. Se você quiser evitar a sobrecarga de gerenciar um cluster e se concentrar na execução da carga de trabalho, crie um cluster totalmente gerenciado usando o Cluster Director.

Limitações

Dependendo do tipo de máquina que as instâncias do Compute Engine no cluster usam, as seguintes limitações se aplicam:

A4X Max

A4X

A4

  • Você não recebe descontos por uso prolongado e descontos por compromisso de uso flexível para instâncias que usam um tipo de máquina A4.
  • Só é possível usar um tipo de máquina A4 em determinadas regiões e zonas.
  • Não é possível usar o Persistent Disk (regional ou zonal). Só é possível usar o Google Cloud Hyperdisk.
  • O tipo de máquina A4 só está disponível na plataforma de CPU Emerald Rapids.
  • Não é possível alterar o tipo de máquina de uma instância para ou do tipo de máquina A4. É preciso criar uma nova instância com esse tipo de máquina.
  • Os tipos de máquina A4 não dão suporte a locatários individuais.
  • Não é possível executar sistemas operacionais Windows em um tipo de máquina A4.
  • Para instâncias A4, quando você usa ethtool -S para monitorar a rede de GPU, os contadores de porta física que terminam em _phy não são atualizados. Esse é o comportamento esperado para instâncias que usam a arquitetura de função virtual (VF, na sigla em inglês) do MRDMA. Para mais informações, consulte Funções de MRDMA e ferramentas de monitoramento de rede.
  • Não é possível anexar discos do Hyperdisk ML criados antes de 4 de fevereiro de 2026 a tipos de máquina A4.

A3 Ultra

  • Você não recebe descontos por uso prolongado e descontos por compromisso de uso flexível no caso de instâncias que usam um tipo de máquina A3 Ultra.
  • Só é possível usar um tipo de máquina A3 Ultra em determinadas regiões e zonas.
  • Não é possível usar o Persistent Disk (regional ou zonal). Só é possível usar o Google Cloud Hyperdisk.
  • O tipo de máquina A3 Ultra só está disponível na plataforma de CPU Emerald Rapids.
  • Não é possível mudar o tipo de máquina A3 Ultra. Para mudar para ou desse tipo de máquina, é necessário criar uma nova instância.
  • Não é possível executar sistemas operacionais Windows em um tipo de máquina A3 Ultra.
  • Os tipos de máquina A3 Ultra não dão suporte a locatários individuais.
  • Para instâncias A3 Ultra, quando você usa ethtool -S para monitorar a rede de GPU, os contadores de portas físicas que terminam em _phy não são atualizados. Esse é o comportamento esperado para instâncias que usam a arquitetura de função virtual (VF, na sigla em inglês) do MRDMA. Para mais informações, consulte Funções de MRDMA e ferramentas de monitoramento de rede.

A3 Mega

  • Você não recebe descontos por uso prolongado e descontos por compromisso de uso flexível no caso de instâncias que usam um tipo de máquina A3 Mega.
  • Só é possível usar um tipo de máquina A3 Mega em determinadas regiões e zonas.
  • Não é possível usar o Persistent Disk regional em uma instância que usa um tipo de máquina A3 Mega.
  • O tipo de máquina A3 Mega só está disponível na plataforma de CPU Sapphire Rapids.
  • Não é possível mudar o tipo de máquina A3 Mega. Para mudar para ou desse tipo de máquina, é necessário criar uma nova instância.
  • Não é possível executar sistemas operacionais Windows em um tipo de máquina A3 Mega.

A3 High

Antes de começar

Antes de criar um cluster do Slurm, se ainda não tiver feito isso, conclua as seguintes etapas:

  1. Escolha uma opção de consumo: sua escolha determina como você recebe e usa os recursos de GPU. Para saber mais, consulte Escolher uma opção de consumo.
  2. Obter capacidade: o processo para obter capacidade varia de acordo com cada opção de consumo. Para saber mais sobre o processo de obtenção de capacidade para a opção de consumo escolhida, consulte Visão geral da capacidade.
  3. Verifique se você tem cota suficiente do Filestore ou do Google Cloud Managed Lustre: é necessário ter cota suficiente do Filestore ou do Managed Lustre na região e na zona de destino antes de implantar. A cota mínima necessária depende do serviço de armazenamento e dos tipos de máquina no cluster:
    • Managed Lustre:
      • A4X Max: requer um mínimo de 18.000 GiB de cota de capacidade de armazenamento e 9 GBps de cota de capacidade de processamento.
      • A4X, A4, A3 Ultra, A3 Mega e A3 High: requer um mínimo de 36.000 GiB de cota de capacidade de armazenamento e 18 GBps de cota de capacidade de processamento.
    • Filestore:
      • A4X Max, A4X, A4, A3 Ultra e A3 Mega: requer um mínimo de 10 TiB (10.240 GiB) de cota de capacidade HIGH_SCALE_SSD (zonal).
      • A3 High: requer um mínimo de 2,5 TiB (2.560 GiB) de cota de capacidade BASIC_SSD (padrão).

    Para verificar a cota ou solicitar um aumento, consulte o seguinte:

  4. Instale o Cluster Toolkit: para provisionar clusters do Slurm, use a versão v1.62.0 ou mais recente do Cluster Toolkit.

    Para instalar o Cluster Toolkit, consulte Configurar o Cluster Toolkit.

Funções exigidas

Para receber as permissões necessárias para implantar um cluster do Slurm, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Configurar um bucket de armazenamento

Os blueprints de cluster usam módulos do Terraform para provisionar a infraestrutura em nuvem. Uma prática recomendada ao trabalhar com o Terraform é armazenar o estado remotamente em um arquivo com suporte a versões. Em Google Cloud, é possível criar um bucket do Cloud Storage com o controle de versões ativado.

Para criar esse bucket e ativar o controle de versões na CLI, execute os seguintes comandos:

gcloud storage buckets create gs://BUCKET_NAME \
    --project=PROJECT_ID \
    --default-storage-class=STANDARD --location=BUCKET_REGION \
    --uniform-bucket-level-access
gcloud storage buckets update gs://BUCKET_NAME --versioning

Substitua:

Instalar o Cluster Toolkit

Para usar o Slurm com o Google Cloud, instale o Cluster Toolkit. Para Linux e macOS, recomendamos que você instale o pacote pré-criado.

Depois de instalar o Cluster Toolkit, acesse o diretório que contém o binário gcluster:

  • Se você instalou o pacote pré-criado, mude para o diretório gcluster-bundle:

    cd gcluster-bundle
  • Se você criou o binário a partir da origem, mude para o cluster-toolkit:

    cd cluster-toolkit

    Essa implantação de cluster requer o Cluster Toolkit v1.62.0 ou posterior. Verifique a versão instalada:

    ./gcluster --version

Criar um arquivo de implantação

Crie um arquivo de implantação que possa ser usado para especificar o bucket do Cloud Storage, definir nomes para sua rede e sub-rede e definir variáveis de implantação, como ID do projeto, região e zona.

Para criar um arquivo de implantação, siga as etapas do tipo de máquina e da opção de consumo necessários.

A4X Max

Para criar o arquivo de implantação, use um editor de texto para criar um arquivo YAML chamado a4xmax-bm-slurm-deployment.yaml e adicione o conteúdo a seguir.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4x_max_cluster_size: NUMBER_OF_INSTANCES
  a4x_max_reservation_name: RESERVATION_NAME

Substitua:

  • BUCKET_NAME: o nome do bucket do Cloud Storage, que você criou na seção anterior.
  • DEPLOYMENT_NAME: um nome para a implantação. Se você estiver criando vários clusters, selecione um nome exclusivo para cada um.
  • PROJECT_ID: o ID do projeto.
  • REGION: a região que tem as máquinas reservadas.
  • ZONE: a zona em que você quer provisionar o cluster. Se você estiver usando uma opção de consumo baseada em reserva, as informações de região e zona foram fornecidas pela equipe de conta quando a capacidade foi entregue.
  • NUMBER_OF_INSTANCES: o número de instâncias bare metal do A4X Max no cluster. É possível especificar qualquer número de instâncias. No entanto, as instâncias A4X Max são interconectadas fisicamente por um sistema NVLink de vários nós em grupos de 18 instâncias (72 GPUs) para formar um domínio NVLink.

    Para um desempenho de rede ideal, recomendamos que você especifique um valor que seja múltiplo de 18 instâncias (por exemplo, 18, 36 ou 54). Quando você cria um cluster A4X Max, o blueprint do A4X Max cria e aplica automaticamente uma política de posicionamento compacto com uma topologia de GPU de 1x72 para cada grupo de 18 instâncias.

  • RESERVATION_NAME: o nome da sua reserva.

A4X

Para criar o arquivo de implantação, use um editor de texto para criar um arquivo YAML chamado a4xhigh-slurm-deployment.yaml e adicione o conteúdo a seguir.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4x_cluster_size: NUMBER_OF_INSTANCES
  a4x_reservation_name: RESERVATION_NAME

Substitua:

  • BUCKET_NAME: o nome do bucket do Cloud Storage, que você criou na seção anterior.
  • DEPLOYMENT_NAME: um nome para a implantação. Se você estiver criando vários clusters, selecione um nome exclusivo para cada um.
  • PROJECT_ID: o ID do projeto.
  • REGION: a região que tem as máquinas reservadas.
  • ZONE: a zona em que você quer provisionar o cluster. Se você estiver usando uma opção de consumo baseada em reserva, as informações de região e zona foram fornecidas pela equipe de conta quando a capacidade foi entregue.
  • NUMBER_OF_INSTANCES: o número de instâncias A4X no cluster. É possível especificar qualquer número de instâncias. No entanto, as instâncias A4X são interconectadas fisicamente por um sistema NVLink de vários nós em grupos de 18 instâncias (72 GPUs) para formar um domínio NVLink.

    Para um desempenho de rede ideal, recomendamos que você especifique um valor que seja múltiplo de 18 instâncias (por exemplo, 18, 36 ou 54). Quando você cria um cluster A4X, o blueprint do A4X cria e aplica automaticamente uma política de posicionamento compacto com uma topologia de GPU de 1x72 para cada grupo de 18 instâncias. Para mais informações sobre a topologia A4X, consulte Princípios básicos da A4X.

  • RESERVATION_NAME: o nome da sua reserva.

A4

Os parâmetros que você precisa adicionar ao arquivo de implantação dependem da opção de consumo que você está usando para a implantação. Selecione a guia que corresponde ao modelo de provisionamento da sua opção de consumo.

Vinculada à reserva

Para criar o arquivo de implantação, use um editor de texto para criar um arquivo YAML chamado a4high-slurm-deployment.yaml e adicione o conteúdo a seguir.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4h_cluster_size: NUMBER_OF_INSTANCES
  a4h_reservation_name: RESERVATION_NAME

Substitua:

  • BUCKET_NAME: o nome do bucket do Cloud Storage, que você criou na seção anterior.
  • DEPLOYMENT_NAME: um nome para a implantação. Se você estiver criando vários clusters, selecione um nome exclusivo para cada um.
  • PROJECT_ID: o ID do projeto.
  • REGION: a região que tem as máquinas reservadas.
  • ZONE: a zona em que você quer provisionar o cluster. Se você estiver usando uma opção de consumo baseada em reserva, as informações de região e zona foram fornecidas pela equipe de conta quando a capacidade foi entregue.
  • NUMBER_OF_INSTANCES: o número de instâncias do Compute Engine que você quer para o cluster.
  • RESERVATION_NAME: o nome da sua reserva.

Início flexível

Para criar o arquivo de implantação, use um editor de texto para criar um arquivo YAML chamado a4high-slurm-deployment.yaml e adicione o conteúdo a seguir.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4h_cluster_size: NUMBER_OF_INSTANCES
  a4h_dws_flex_enabled: true

Substitua:

  • BUCKET_NAME: o nome do bucket do Cloud Storage, que você criou na seção anterior.
  • DEPLOYMENT_NAME: um nome para a implantação. Se você estiver criando vários clusters, selecione um nome exclusivo para cada um.
  • PROJECT_ID: o ID do projeto.
  • REGION: a região em que você quer provisionar o cluster.
  • ZONE: a zona em que você quer provisionar o cluster.
  • NUMBER_OF_INSTANCES: o número de instâncias do Compute Engine que você quer para o cluster.

Essa implantação provisiona nós de computação estáticos, o que significa que o cluster tem um número definido de nós em todos os momentos. Se você quiser ativar o escalonamento automático do cluster, use o arquivo examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml e edite os valores de node_count_static e node_count_dynamic_max para que correspondam ao seguinte:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a4h_cluster_size)

Spot

Para criar o arquivo de implantação, use um editor de texto para criar um arquivo YAML chamado a4high-slurm-deployment.yaml e adicione o conteúdo a seguir.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4h_cluster_size: NUMBER_OF_INSTANCES
  a4h_enable_spot_vm: true

Substitua:

  • BUCKET_NAME: o nome do bucket do Cloud Storage, que você criou na seção anterior.
  • DEPLOYMENT_NAME: um nome para a implantação. Se você estiver criando vários clusters, selecione um nome exclusivo para cada um.
  • PROJECT_ID: o ID do projeto.
  • REGION: a região em que você quer provisionar o cluster.
  • ZONE: a zona em que você quer provisionar o cluster.
  • NUMBER_OF_INSTANCES: o número de instâncias do Compute Engine que você quer para o cluster.

A3 Ultra

Os parâmetros que você precisa adicionar ao arquivo de implantação dependem da opção de consumo que você está usando para a implantação. Selecione a guia que corresponde ao modelo de provisionamento da sua opção de consumo.

Vinculada à reserva

Para criar o arquivo de implantação, use um editor de texto para criar um arquivo YAML chamado a3ultra-slurm-deployment.yaml e adicione o conteúdo a seguir.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a3u_cluster_size: NUMBER_OF_INSTANCES
  a3u_reservation_name: RESERVATION_NAME

Substitua:

  • BUCKET_NAME: o nome do bucket do Cloud Storage, que você criou na seção anterior.
  • DEPLOYMENT_NAME: um nome para a implantação. Se você estiver criando vários clusters, selecione um nome exclusivo para cada um.
  • PROJECT_ID: o ID do projeto.
  • REGION: a região que tem as máquinas reservadas.
  • ZONE: a zona em que você quer provisionar o cluster. Se você estiver usando uma opção de consumo baseada em reserva, as informações de região e zona foram fornecidas pela equipe de conta quando a capacidade foi entregue.
  • NUMBER_OF_INSTANCES: o número de instâncias do Compute Engine que você quer para o cluster.
  • RESERVATION_NAME: o nome da sua reserva.

Início flexível

Para criar o arquivo de implantação, use um editor de texto para criar um arquivo YAML chamado a3ultra-slurm-deployment.yaml e adicione o conteúdo a seguir.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a3u_cluster_size: NUMBER_OF_INSTANCES
  a3u_dws_flex_enabled: true

Substitua:

  • BUCKET_NAME: o nome do bucket do Cloud Storage, que você criou na seção anterior.
  • DEPLOYMENT_NAME: um nome para a implantação. Se você estiver criando vários clusters, selecione um nome exclusivo para cada um.
  • PROJECT_ID: o ID do projeto.
  • REGION: a região em que você quer provisionar o cluster.
  • ZONE: a zona em que você quer provisionar o cluster.
  • NUMBER_OF_INSTANCES: o número de instâncias do Compute Engine que você quer para o cluster.

Essa implantação provisiona nós de computação estáticos, o que significa que o cluster tem um número definido de nós em todos os momentos. Se você quiser ativar o escalonamento automático do cluster, use o arquivo examples/machine-learning/a3-ultragpu-8g/a3ultra-slurm-blueprint.yaml e edite os valores de node_count_static e node_count_dynamic_max para que correspondam ao seguinte:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a3u_cluster_size)

Spot

Para criar o arquivo de implantação, use um editor de texto para criar um arquivo YAML chamado a3ultra-slurm-deployment.yaml e adicione o conteúdo a seguir.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a3u_cluster_size: NUMBER_OF_INSTANCES
  a3u_enable_spot_vm: true

Substitua:

  • BUCKET_NAME: o nome do bucket do Cloud Storage, que você criou na seção anterior.
  • DEPLOYMENT_NAME: um nome para a implantação. Se você estiver criando vários clusters, selecione um nome exclusivo para cada um.
  • PROJECT_ID: o ID do projeto.
  • REGION: a região em que você quer provisionar o cluster.
  • ZONE: a zona em que você quer provisionar o cluster.
  • NUMBER_OF_INSTANCES: o número de instâncias do Compute Engine que você quer para o cluster.

A3 Mega

Os parâmetros que você precisa adicionar ao arquivo de implantação dependem da opção de consumo que você está usando para a implantação. Selecione a guia que corresponde ao modelo de provisionamento da sua opção de consumo.

Vinculada à reserva

Para criar o arquivo de implantação, crie um arquivo YAML chamado a3mega-slurm-deployment.yaml e adicione o conteúdo a seguir.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3mega_cluster_size: NUMBER_OF_INSTANCES
  a3mega_reservation_name: RESERVATION_NAME
  a3mega_partition_name: PARTITION_NAME

Substitua:

  • BUCKET_NAME: o nome do bucket do Cloud Storage, que você criou na seção anterior.
  • DEPLOYMENT_NAME: um nome para a implantação. Se você estiver criando vários clusters, selecione um nome exclusivo para cada um.
  • PROJECT_ID: o ID do projeto.
  • SYSTEM_NETWORK_NAME: o nome da rede VPC a ser usada para a rede do sistema.
  • SYSTEM_SUBNET_NAME: o nome da sub-rede a ser usada para a rede do sistema.
  • CLUSTER_NAME: um nome para o cluster do Slurm.
  • REGION: a região que tem as máquinas reservadas.
  • ZONE: a zona em que você quer provisionar o cluster. Se você estiver usando uma opção de consumo baseada em reserva, as informações de região e zona foram fornecidas pela equipe de conta quando a capacidade foi entregue.
  • NUMBER_OF_INSTANCES: o número de instâncias do Compute Engine que você quer para o cluster.
  • RESERVATION_NAME: o nome da sua reserva.
  • PARTITION_NAME: um nome para a partição do Slurm.

Início flexível

Para criar o arquivo de implantação, crie um arquivo YAML chamado a3mega-slurm-deployment.yaml e adicione o conteúdo a seguir.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3mega_cluster_size: NUMBER_OF_INSTANCES
  a3mega_dws_flex_enabled: true

Substitua:

  • BUCKET_NAME: o nome do bucket do Cloud Storage, que você criou na seção anterior.
  • DEPLOYMENT_NAME: um nome para a implantação. Se você estiver criando vários clusters, selecione um nome exclusivo para cada um.
  • PROJECT_ID: o ID do projeto.
  • SYSTEM_NETWORK_NAME: o nome da rede VPC a ser usada para a rede do sistema.
  • SYSTEM_SUBNET_NAME: o nome da sub-rede a ser usada para a rede do sistema.
  • CLUSTER_NAME: um nome para o cluster do Slurm.
  • REGION: a região em que você quer provisionar o cluster.
  • ZONE: a zona em que você quer provisionar o cluster.
  • NUMBER_OF_INSTANCES: o número de instâncias do Compute Engine que você quer para o cluster.

Essa implantação provisiona nós de computação estáticos, o que significa que o cluster tem um número definido de nós em todos os momentos. Se você quiser ativar o escalonamento automático do cluster, use o arquivo examples/machine-learning/a3-megagpu-8g/a3mega-slurm-blueprint.yaml e edite os valores de node_count_static e node_count_dynamic_max para que correspondam ao seguinte:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a3mega_cluster_size)

Spot

Para criar o arquivo de implantação, crie um arquivo YAML chamado a3mega-slurm-deployment.yaml e adicione o conteúdo a seguir.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3mega_cluster_size: NUMBER_OF_INSTANCES
  a3mega_enable_spot_vm: true

Substitua:

  • BUCKET_NAME: o nome do bucket do Cloud Storage, que você criou na seção anterior.
  • DEPLOYMENT_NAME: um nome para a implantação. Se você estiver criando vários clusters, selecione um nome exclusivo para cada um.
  • PROJECT_ID: o ID do projeto.
  • SYSTEM_NETWORK_NAME: o nome da rede VPC a ser usada para a rede do sistema.
  • SYSTEM_SUBNET_NAME: o nome da sub-rede a ser usada para a rede do sistema.
  • CLUSTER_NAME: um nome para o cluster do Slurm.
  • REGION: a região em que você quer provisionar o cluster.
  • ZONE: a zona em que você quer provisionar o cluster.
  • NUMBER_OF_INSTANCES: o número de instâncias do Compute Engine que você quer para o cluster.

A3 High

Os parâmetros que você precisa adicionar ao arquivo de implantação dependem da opção de consumo que você está usando para a implantação. Selecione a guia que corresponde ao modelo de provisionamento da sua opção de consumo.

Vinculada à reserva

Para criar o arquivo de implantação, crie um arquivo YAML chamado a3high-slurm-deployment.yaml e adicione o conteúdo a seguir.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  tcpx_kernel_login: TCPX_KERNEL_LOGIN
  tcpx_kernel_password: TCPX_KERNEL_PASSWORD
  keyserver_ubuntu_key: KEYSERVER_UBUNTU_KEY

  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3_static_cluster_size: NUMBER_OF_INSTANCES
  a3_reservation_name: RESERVATION_NAME
  a3_partition_name: PARTITION_NAME

Substitua:

  • BUCKET_NAME: o nome do bucket do Cloud Storage, que você criou na seção anterior.
  • DEPLOYMENT_NAME: um nome para a implantação. Se você estiver criando vários clusters, selecione um nome exclusivo para cada um.
  • PROJECT_ID: o ID do projeto.
  • TCPX_KERNEL_LOGIN, TCPX_KERNEL_PASSWORD e KEYSERVER_UBUNTU_KEY: as credenciais técnicas para imagens otimizadas de A3 High. Esses valores são fornecidos pela equipe de conta do Google Cloud. Para mais informações, consulte Receber credenciais para o GPUDirect-TCPX.
  • SYSTEM_NETWORK_NAME: o nome da rede VPC a ser usada para a rede do sistema.
  • SYSTEM_SUBNET_NAME: o nome da sub-rede a ser usada para a rede do sistema.
  • CLUSTER_NAME: um nome para o cluster do Slurm.
  • REGION: a região que tem as máquinas reservadas.
  • ZONE: a zona em que você quer provisionar o cluster. Se você estiver usando uma opção de consumo baseada em reserva, as informações de região e zona foram fornecidas pela equipe de conta quando a capacidade foi entregue.
  • NUMBER_OF_INSTANCES: o número de instâncias do Compute Engine que você quer para o cluster.
  • RESERVATION_NAME: o nome da sua reserva.
  • PARTITION_NAME: um nome para a partição do Slurm.

Início flexível

Para criar o arquivo de implantação, crie um arquivo YAML chamado a3high-slurm-deployment.yaml e adicione o conteúdo a seguir.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  tcpx_kernel_login: TCPX_KERNEL_LOGIN
  tcpx_kernel_password: TCPX_KERNEL_PASSWORD
  keyserver_ubuntu_key: KEYSERVER_UBUNTU_KEY

  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3_static_cluster_size: NUMBER_OF_INSTANCES
  a3_dws_flex_enabled: true

Substitua:

  • BUCKET_NAME: o nome do bucket do Cloud Storage, que você criou na seção anterior.
  • DEPLOYMENT_NAME: um nome para a implantação. Se você estiver criando vários clusters, selecione um nome exclusivo para cada um.
  • PROJECT_ID: o ID do projeto.
  • TCPX_KERNEL_LOGIN, TCPX_KERNEL_PASSWORD e KEYSERVER_UBUNTU_KEY: as credenciais técnicas para imagens otimizadas de A3 High. Esses valores são fornecidos pela equipe de conta do Google Cloud. Para mais informações, consulte Receber credenciais para o GPUDirect-TCPX.
  • SYSTEM_NETWORK_NAME: o nome da rede VPC a ser usada para a rede do sistema.
  • SYSTEM_SUBNET_NAME: o nome da sub-rede a ser usada para a rede do sistema.
  • CLUSTER_NAME: um nome para o cluster do Slurm.
  • REGION: a região em que você quer provisionar o cluster.
  • ZONE: a zona em que você quer provisionar o cluster.
  • NUMBER_OF_INSTANCES: o número de instâncias do Compute Engine que você quer para o cluster.

Essa implantação provisiona nós de computação estáticos, o que significa que o cluster tem um número definido de nós em todos os momentos. Se você quiser ativar o escalonamento automático do cluster, use o arquivo examples/machine-learning/a3-highgpu-8g/a3high-slurm-blueprint.yaml e edite os valores de node_count_static e node_count_dynamic_max para que correspondam ao seguinte:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a3_static_cluster_size)

Spot

Para criar o arquivo de implantação, crie um arquivo YAML chamado a3high-slurm-deployment.yaml e adicione o conteúdo a seguir.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  tcpx_kernel_login: TCPX_KERNEL_LOGIN
  tcpx_kernel_password: TCPX_KERNEL_PASSWORD
  keyserver_ubuntu_key: KEYSERVER_UBUNTU_KEY

  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3_static_cluster_size: NUMBER_OF_INSTANCES
  a3_enable_spot_vm: true

Substitua:

  • BUCKET_NAME: o nome do bucket do Cloud Storage, que você criou na seção anterior.
  • DEPLOYMENT_NAME: um nome para a implantação. Se você estiver criando vários clusters, selecione um nome exclusivo para cada um.
  • PROJECT_ID: o ID do projeto.
  • TCPX_KERNEL_LOGIN, TCPX_KERNEL_PASSWORD e KEYSERVER_UBUNTU_KEY: as credenciais técnicas para imagens otimizadas de A3 High. Esses valores são fornecidos pela equipe de conta do Google Cloud. Para mais informações, consulte Receber credenciais para o GPUDirect-TCPX.
  • SYSTEM_NETWORK_NAME: o nome da rede VPC a ser usada para a rede do sistema.
  • SYSTEM_SUBNET_NAME: o nome da sub-rede a ser usada para a rede do sistema.
  • CLUSTER_NAME: um nome para o cluster do Slurm.
  • REGION: a região em que você quer provisionar o cluster.
  • ZONE: a zona em que você quer provisionar o cluster.
  • NUMBER_OF_INSTANCES: o número de instâncias do Compute Engine que você quer para o cluster.

Provisionar um cluster do Slurm

O Cluster Toolkit provisiona o cluster com base no arquivo de implantação criado na etapa anterior e no blueprint de cluster padrão. Para saber mais sobre imagens personalizadas ou como implantar o Slurm com uma imagem do SO personalizada, consulte Imagens personalizadas do Slurm.

Para provisionar o cluster, selecione uma das seguintes opções para executar o comando gcluster deploy para seu tipo de máquina no diretório do Cluster Toolkit. Essa etapa leva aproximadamente de 20 a 30 minutos.

A4X Max

O blueprint do A4X Max integra o Managed Lustre para armazenamento de diretório inicial de alto desempenho (/home). O blueprint configura automaticamente o acesso a serviços particulares (PSA) para fazer peering da sua rede VPC com o Managed Lustre. O blueprint também configura a rede Lustre (LNet) na interface de rede principal eth0. Para mais informações, consulte a visão geral do Lustre gerenciado.

./gcluster deploy -d a4xmax-bm-slurm-deployment.yaml examples/machine-learning/a4x-maxgpu-4g-metal/a4xmax-bm-slurm-blueprint.yaml --auto-approve

A4X

O blueprint do A4X integra o Managed Lustre para armazenamento de diretório inicial de alto desempenho (/home). O blueprint configura automaticamente o acesso a serviços particulares (PSA) para fazer peering da sua rede VPC com o Managed Lustre.

Por padrão, o blueprint do cluster implanta instâncias de computação que usam Advanced Compute Images pré-criadas. Essas imagens vêm pré-configuradas com drivers e softwares especializados para executar suas cargas de trabalho, incluindo drivers NVIDIA, CUDA, malhas de rede e agentes Slurm, o que elimina a necessidade de criar imagens manualmente durante a implantação. Para saber mais sobre os pacotes de software pré-criados e as ferramentas de configuração que você está implantando, consulte Visão geral das imagens de computação avançada.

./gcluster deploy -d a4xhigh-slurm-deployment.yaml examples/machine-learning/a4x-highgpu-4g/a4xhigh-slurm-blueprint.yaml --auto-approve

A4

O blueprint A4 integra o Managed Lustre para armazenamento de diretório inicial de alto desempenho (/home). O blueprint configura automaticamente o acesso a serviços particulares (PSA) para fazer peering da sua rede VPC com o Managed Lustre.

Por padrão, o blueprint do cluster implanta instâncias de computação que usam Advanced Compute Images pré-criadas. Essas imagens vêm pré-configuradas com drivers e softwares especializados para executar suas cargas de trabalho, incluindo drivers NVIDIA, CUDA, malhas de rede e agentes Slurm, o que elimina a necessidade de criar imagens manualmente durante a implantação. Para saber mais sobre os pacotes de software pré-criados e as ferramentas de configuração que você está implantando, consulte Visão geral das imagens de computação avançada.

./gcluster deploy -d a4high-slurm-deployment.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --auto-approve

A3 Ultra

O blueprint do A3 Ultra integra o Managed Lustre para armazenamento de diretório inicial de alto desempenho (/home). O blueprint configura automaticamente o acesso a serviços particulares (PSA) para fazer peering da sua rede VPC com o Managed Lustre.

Por padrão, o blueprint do cluster implanta instâncias de computação que usam Advanced Compute Images pré-criadas. Essas imagens vêm pré-configuradas com drivers e softwares especializados para executar suas cargas de trabalho, incluindo drivers NVIDIA, CUDA, malhas de rede e agentes Slurm, o que elimina a necessidade de criar imagens manualmente durante a implantação. Para saber mais sobre os pacotes de software pré-criados e as ferramentas de configuração que você está implantando, consulte Visão geral das imagens de computação avançada.

./gcluster deploy -d a3ultra-slurm-deployment.yaml examples/machine-learning/a3-ultragpu-8g/a3ultra-slurm-blueprint.yaml --auto-approve

A3 Mega

O blueprint do A3 Mega integra o Managed Lustre para armazenamento de diretório inicial de alto desempenho (/home). O blueprint configura automaticamente o acesso a serviços particulares (PSA) para fazer peering da sua rede VPC com o Managed Lustre.

./gcluster deploy -d a3mega-slurm-deployment.yaml examples/machine-learning/a3-megagpu-8g/a3mega-slurm-blueprint.yaml --auto-approve

A3 High

O blueprint A3 High integra o Managed Lustre para armazenamento de diretório inicial de alto desempenho (/home). O blueprint configura automaticamente o acesso a serviços particulares (PSA) para fazer peering da sua rede VPC com o Managed Lustre.

./gcluster deploy -d a3high-slurm-deployment.yaml examples/machine-learning/a3-highgpu-8g/a3high-slurm-blueprint.yaml --auto-approve

Conectar-se ao cluster do Slurm

Para acessar o cluster, faça login no nó de login do Slurm. Se você encontrar erros ao tentar se conectar ao nó, consulte Solução de problemas de erros de SSH.

Para se conectar ao nó de login no cluster, selecione uma das seguintes opções:

Console

  1. No console do Google Cloud , acesse a página Instâncias de VM.

    Acessar a página "Instâncias de VM"

  2. Localize o nó de login, que se chama DEPLOYMENT_NAME-login-001.

  3. Na linha do nó, na coluna Conectar, clique em SSH.

gcloud

Para se conectar ao nó de login no cluster, siga estas etapas:

  1. Para identificar o nó de login, use o seguinte comando gcloud compute instances list:

    gcloud compute instances list \
        --filter="name ~ login" \
        --format "value(name)" \
        --zones=ZONE
    

    Se a saída listar vários clusters do Slurm, será possível identificar o nó de login pelo DEPLOYMENT_NAME que você especificou nas etapas anteriores.

  2. Para se conectar ao nó de login, use o comando gcloud compute ssh com a flag --tunnel-through-iap:

    gcloud compute ssh LOGIN_NODE \
        --tunnel-through-iap \
        --zone=ZONE
    

    Substitua:

    • ZONE: a zona em que o nó está.

    • LOGIN_NODE: o nome do nó de login.

Testar o desempenho da rede no cluster do Slurm

Recomendamos que você valide a funcionalidade dos clusters provisionados. Para isso, use os testes da NCCL, que são testes da NVIDIA Collective Communications Library (NCCL) otimizados para o ambiente do Google.

Reimplante o cluster do Slurm.

Se você precisar aumentar o número de nós de computação ou adicionar novas partições ao cluster, talvez seja necessário atualizar as configurações do cluster do Slurm reimplantando-o. Se você modificou o blueprint para criar imagens personalizadas, acelere o processo de reimplantação usando uma imagem de uma implantação anterior. Para evitar a necessidade de criar novas imagens ao reimplantar um cluster que usa imagens personalizadas, especifique a flag --only.

Para reimplantar a infraestrutura do cluster (cluster-env,cluster) sem executar módulos de criação de imagens, faça o seguinte:

  1. Conectar-se ao cluster

  2. Com base no tipo de máquina que o cluster usa, selecione uma das opções a seguir para reimplantar o cluster e a infraestrutura de TI dele:

    A4X Max

    ./gcluster deploy -d a4xmax-bm-slurm-deployment.yaml examples/machine-learning/a4x-maxgpu-4g-metal/a4xmax-bm-slurm-blueprint.yaml --only cluster-env,cluster --auto-approve -w

    A4X

    ./gcluster deploy -d a4xhigh-slurm-deployment.yaml examples/machine-learning/a4x-highgpu-4g/a4xhigh-slurm-blueprint.yaml --only cluster-env,cluster --auto-approve -w

    A4

    ./gcluster deploy -d a4high-slurm-deployment.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

    A3 Ultra

    ./gcluster deploy -d a3ultra-slurm-deployment.yaml examples/machine-learning/a3-ultragpu-8g/a3ultra-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

    A3 Mega

    ./gcluster deploy -d a3mega-slurm-deployment.yaml examples/machine-learning/a3-megagpu-8g/a3mega-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

    A3 High

    ./gcluster deploy -d a3high-slurm-deployment.yaml examples/machine-learning/a3-highgpu-8g/a3high-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

Destruir o cluster do Slurm

Quando você destrói o cluster, o Cluster Toolkit exclui automaticamente a instância do Managed Lustre e todos os dados armazenados nela.

Para destruir o cluster do Slurm, siga estas etapas:

  1. Se ainda não tiver feito isso, desconecte-se do cluster.

  2. Antes de executar o comando destroy, navegue até a raiz do diretório do Cluster Toolkit.

  3. Para destruir o cluster, execute o comando gcluster destroy:

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

    Substitua DEPLOYMENT_FOLDER pelo nome da pasta de implantação.

Quando o Cluster Toolkit destrói o cluster, a saída é semelhante a esta:

Destroy complete! Resources: DEPLOYMENT_NAME destroyed.

A seguir