Criar um cluster do Slurm H4D com recursos de gerenciamento aprimorados

Nesta página, descrevemos como criar um cluster do Slurm de computação de alta performance (HPC, na sigla em inglês) que usa acesso direto à memória remota (RDMA, na sigla em inglês) com VMs H4D e recursos aprimorados de gerenciamento de cluster. Use a CLI gcloud e o Cluster Toolkit para configurar o cluster.

A série de máquinas H4D foi projetada especificamente para atender às necessidades de cargas de trabalho de HPC exigentes. O H4D oferece instâncias com escalonabilidade aprimorada da carga de trabalho usando a rede Cloud RDMA com capacidade de processamento de 200 Gbps. Para mais informações sobre tipos de máquinas H4D otimizados para computação no Google Cloud, consulte Série de máquinas H4D.

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: a opção escolhida determina como você quer obter e usar recursos de vCPU.
  2. Obter capacidade: obtenha capacidade para a opção de consumo selecionada.
  3. Para saber mais, consulte Escolher uma opção de consumo e adquirir capacidade.

  4. Verifique se você tem cota suficiente do Filestore: é necessário um mínimo de 10.240 GiB de capacidade zonal (também conhecida como SSD de alta escala).
  5. Instale o Cluster Toolkit: para provisionar clusters Slurm, use a versão v1.62.0 ou mais recente do Cluster Toolkit.

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

In the Google Cloud console, activate Cloud Shell.

Activate Cloud Shell

At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

Configurar um bucket de armazenamento

Os modelos de cluster usam módulos do Terraform para provisionar a infraestrutura do Google Cloud. 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:

Abra o diretório do Cluster Toolkit

Verifique se você está no diretório do Cluster Toolkit executando o seguinte comando:

cd cluster-toolkit

Essa implantação de cluster requer o Cluster Toolkit v1.70.0 ou uma versão mais recente. Para verificar sua versão, execute o seguinte comando:

./gcluster --version

Criar um arquivo de implantação

Crie um arquivo de implantação para especificar o bucket do Cloud Storage, defina nomes para sua rede e sub-rede e defina 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 H4D:

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

Vinculada à reserva

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


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME

vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  h4d_cluster_size: NUMBER_OF_VMS
  h4d_reservation_name: RESERVATION_NAME

Substitua:

  • BUCKET_NAME: o nome do bucket do Cloud Storage criado na seção anterior.
  • DEPLOYMENT_NAME: um nome para a implantação. Se você estiver criando vários clusters, escolha um nome exclusivo para cada um deles.
  • 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 da sua conta quando a capacidade foi entregue.
  • NUMBER_OF_VMS: o número de VMs 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 h4d-slurm-deployment.yaml e adicione o seguinte conteúdo.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME

vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  h4d_cluster_size: NUMBER_OF_VMS
  h4d_dws_flex_enabled: true

Substitua:

  • BUCKET_NAME: o nome do bucket do Cloud Storage criado na seção anterior.
  • DEPLOYMENT_NAME: um nome para a implantação. Se você estiver criando vários clusters, escolha um nome exclusivo para cada um deles.
  • 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_VMS: o número de VMs 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 fixo de nós em todos os momentos. Se você quiser ativar o escalonamento automático do cluster, use o arquivo examples/h4d/hpc-slurm-h4d.yaml e edite os valores de node_count_static e node_count_dynamic_max para corresponder ao seguinte:

      node_count_static: 0
      node_count_dynamic_max: $(vars.h4d_cluster_size)

Spot

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


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME

vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  h4d_cluster_size: NUMBER_OF_VMS
  h4d_enable_spot_vm: true

Substitua:

  • BUCKET_NAME: o nome do bucket do Cloud Storage criado na seção anterior.
  • DEPLOYMENT_NAME: um nome para a implantação. Se você estiver criando vários clusters, escolha um nome exclusivo para cada um deles.
  • 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_VMS: o número de VMs que você quer para o cluster.

Provisionar um cluster do Slurm H4D

O Cluster Toolkit provisiona o cluster com base no arquivo de implantação que você criou na etapa anterior e no blueprint padrão do cluster. Para mais informações sobre o software instalado pelo blueprint, consulte Saiba mais sobre imagens personalizadas do Slurm.

Usando o Cloud Shell, no diretório em que você instalou o Cluster Toolkit e criou o arquivo de implantação, provisione o cluster com o seguinte comando, que usa o arquivo de blueprint do H4D Slurm. Essa etapa leva aproximadamente de 20 a 30 minutos.

./gcluster deploy -d h4d-slurm-deployment.yaml examples/hpc-slurm-h4d/hpc-slurm-h4d.yaml --auto-approve

Conectar-se ao cluster do Slurm

Para acessar o cluster, faça login no nó de login do Slurm. Para fazer login, use o console Google Cloud ou a Google Cloud CLI.

Console

  1. Acesse a página Compute Engine > Instâncias de VM.

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

  2. Localize o nó de login. Ele precisa ter um nome com o padrão DEPLOYMENT_NAME +login-001.

  3. Na coluna Conectar do nó de login, clique em SSH.

gcloud

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

  1. Identifique o nó de login usando o comando gcloud compute instances list.

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

    Se a saída listar vários clusters do Slurm, identifique o nó de login pelo DEPLOYMENT_NAME especificado.

  2. Use o comando gcloud compute ssh para se conectar ao nó de login.

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

    Substitua:

    • ZONE: a zona em que as VMs do cluster estão localizadas.
    • LOGIN_NODE: o nome do nó de login, que você identificou na etapa anterior.

Reimplantar 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 fazendo uma nova implantação.

Para reimplantar o cluster usando uma imagem atual, faça o seguinte:

  1. Conecte-se ao cluster

  2. Execute este comando:

    ./gcluster deploy -d h4d-slurm-deployment.yaml examples/h4d/h4d-slurm-deployment.yaml --only cluster-env,cluster --auto-approve -w
    

    Esse comando é apenas para novas implantações em que uma imagem já existe. Ele só implanta novamente o cluster e a infraestrutura dele.

Destruir o cluster do Slurm

Para remover o cluster do Slurm e as instâncias dele, siga estas etapas:

  1. Desconecte-se do cluster, caso ainda não tenha feito isso.

  2. Antes de executar o comando de destruição, navegue até a raiz do diretório do Cluster Toolkit. Por padrão, DEPLOYMENT_FOLDER está localizado na raiz do diretório do Cluster Toolkit.

  3. Para destruir o cluster, execute:

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

    Substitua:

    • DEPLOYMENT_FOLDER: o nome da pasta de implantação. Geralmente, é o mesmo que DEPLOYMENT_NAME.

Quando a remoção do cluster for concluída, você vai receber uma mensagem semelhante a esta:

  Destroy complete! Resources: xx destroyed.

Para saber como destruir a infraestrutura de maneira limpa e conferir instruções avançadas de implantação manual, consulte a pasta de implantação localizada na raiz do diretório do Cluster Toolkit: DEPLOYMENT_FOLDER/instructions.txt

A seguir