Crie um cluster Slurm H4D com capacidades de gestão melhoradas

Esta página descreve como criar um cluster de computação de alto desempenho (HPC) Slurm que usa o acesso direto à memória (RDMA) remoto com VMs H4D com capacidades de gestão de clusters melhoradas. Usa a CLI gcloud e o Cluster Toolkit para configurar o cluster.

A série de máquinas H4D foi concebida especificamente para satisfazer as necessidades de cargas de trabalho de HPC exigentes. O H4D oferece instâncias com escalabilidade da carga de trabalho melhorada através da rede RDMA na nuvem com débito de 200 Gbps. Para mais informações sobre os tipos de máquinas otimizadas para computação H4D no Google Cloud, consulte o artigo Série de máquinas H4D.

Antes de começar

Antes de criar um cluster Slurm, se ainda não o tiver feito, conclua os seguintes passos:

  1. Escolha uma opção de consumo: a opção que escolher determina como quer obter e usar os recursos de vCPU.
  2. Obter capacidade: obtenha capacidade para a opção de consumo selecionada.
  3. Para saber mais, consulte o artigo Escolha uma opção de consumo e obtenha capacidade.

  4. Certifique-se de que tem quota suficiente do Filestore: precisa de um mínimo de 10 240 GiB de capacidade zonal (também conhecida como SSD de alta escala).
  5. Instale o Cluster Toolkit: para aprovisionar clusters do Slurm, tem de usar a versão Cluster Toolkit v1.62.0 ou posterior.

    Para instalar o Cluster Toolkit, consulte o artigo Configure 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.

Configure um contentor de armazenamento

Os esquemas de clusters usam módulos do Terraform para aprovisionar a infraestrutura na nuvem. Uma prática recomendada quando trabalha com o Terraform é armazenar o estado remotamente num ficheiro com controlo de versões ativado. No Google Cloud, pode criar um contentor do Cloud Storage com o controlo de versões ativado.

Para criar este contentor e ativar o controlo de versões a partir da 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 o seguinte:

Abra o diretório do Cluster Toolkit

Certifique-se de que está no diretório Cluster Toolkit executando o seguinte comando:

cd cluster-toolkit

Esta implementação de cluster requer o Cluster Toolkit v1.70.0 ou posterior. Para verificar a sua versão, pode executar o seguinte comando:

./gcluster --version

Crie um ficheiro de implementação

Crie um ficheiro de implementação para especificar o contentor do Cloud Storage, defina nomes para a sua rede e sub-rede, e defina variáveis de implementação, como o ID do projeto, a região e a zona.

Para criar um ficheiro de implementação, siga os passos para o tipo de máquina H4D:

Os parâmetros que tem de adicionar ao ficheiro de implementação dependem da opção de consumo que está a usar para a implementação. Selecione o separador que corresponde à opção de consumo que quer usar.

Associado a reserva

Para criar o ficheiro de implementação, use um editor de texto para criar um ficheiro YAML com o nome 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 o seguinte:

Flex-start

Para criar o ficheiro de implementação, use um editor de texto para criar um ficheiro YAML com o nome 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 o seguinte:

  • BUCKET_NAME: o nome do seu contentor do Cloud Storage, que criou na secção anterior.
  • DEPLOYMENT_NAME: um nome para a sua implementação. Se criar vários clusters, certifique-se de que seleciona um nome único para cada um.
  • PROJECT_ID: o ID do projeto.
  • REGION: a região onde quer aprovisionar o cluster.
  • ZONE: a zona onde quer aprovisionar o cluster.
  • NUMBER_OF_VMS: o número de VMs que quer para o cluster.

Esta implementação aprovisiona 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 quiser ativar o ajuste de escala automático do cluster, use o ficheiro examples/h4d/hpc-slurm-h4d.yaml e edite os valores de node_count_static e node_count_dynamic_max para corresponderem ao seguinte:

      node_count_static: 0
      node_count_dynamic_max: $(vars.h4d_cluster_size)

Espaço

Para criar o ficheiro de implementação, use um editor de texto para criar um ficheiro YAML com o nome 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 o seguinte:

  • BUCKET_NAME: o nome do seu contentor do Cloud Storage, que criou na secção anterior.
  • DEPLOYMENT_NAME: um nome para a sua implementação. Se criar vários clusters, certifique-se de que seleciona um nome único para cada um.
  • PROJECT_ID: o ID do projeto.
  • REGION: a região onde quer aprovisionar o cluster.
  • ZONE: a zona onde quer aprovisionar o cluster.
  • NUMBER_OF_VMS: o número de VMs que quer para o cluster.

Aprovisione um cluster Slurm H4D

O Cluster Toolkit aprovisiona o cluster com base no ficheiro de implementação que criou no passo anterior e no projeto do cluster predefinido. Para mais informações sobre o software instalado pelo projeto, consulte saiba mais sobre as imagens personalizadas do Slurm.

Usando o Cloud Shell, a partir do diretório onde instalou o Cluster Toolkit e criou o ficheiro de implementação, pode aprovisionar o cluster com o seguinte comando, que usa o ficheiro de esquema do H4D Slurm. Este passo demora aproximadamente 20 a 30 minutos.

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

Estabeleça ligação ao cluster Slurm

Para aceder ao cluster, tem de iniciar sessão no nó de início de sessão do Slurm. Para iniciar sessão, pode usar a Google Cloud consola ou a CLI do Google Cloud.

Consola

  1. Aceda à página Compute Engine > Instâncias de VM.

    Aceda à página de instâncias de VM

  2. Localize o nó de início de sessão. Deve ter um nome com o padrão DEPLOYMENT_NAME +login-001.

  3. Na coluna Ligar do nó de início de sessão, clique em SSH.

gcloud

Para estabelecer ligação ao nó de início de sessão, conclua os seguintes passos:

  1. Identifique o nó de início de sessão através do comando gcloud compute instances list.

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

    Se o resultado apresentar vários clusters do Slurm, pode identificar o seu nó de início de sessão pelo DEPLOYMENT_NAME que especificou.

  2. Use o comando gcloud compute ssh para estabelecer ligação ao nó de início de sessão.

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

    Substitua o seguinte:

    • ZONE: a zona onde as VMs do cluster estão localizadas.
    • LOGIN_NODE: o nome do nó de início de sessão, que identificou no passo anterior.

Volte a implementar o cluster Slurm

Se precisar de aumentar o número de nós de computação ou adicionar novas partições ao cluster, pode ter de atualizar as configurações do cluster Slurm reimplantando-o.

Para voltar a implementar o cluster com uma imagem existente, faça o seguinte:

  1. Estabeleça ligação ao cluster

  2. Execute o seguinte comando:

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

    Este comando destina-se apenas a novas implementações em que já existe uma imagem. Só implementa novamente o cluster e a respetiva infraestrutura.

Destrua o cluster Slurm

Para remover o cluster Slurm e as instâncias no mesmo, conclua os seguintes passos:

  1. Desligue-se do cluster, se ainda não o tiver feito.

  2. Antes de executar o comando destroy, navegue para a raiz do diretório Cluster Toolkit. Por predefinição, DEPLOYMENT_FOLDER está localizado na raiz do diretório Cluster Toolkit.

  3. Para destruir o cluster, execute o seguinte comando:

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

    Substitua o seguinte:

    • DEPLOYMENT_FOLDER: o nome da pasta de implementação. Normalmente, é igual a DEPLOYMENT_NAME.

Quando a remoção do cluster estiver concluída, deve ver uma mensagem semelhante à seguinte:

  Destroy complete! Resources: xx destroyed.

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

O que se segue?