Crie um cluster Slurm de HPC com RDMA ativado com instâncias H4D

Esta página descreve como criar um cluster do Slurm de computação de alto desempenho (HPC) que usa acesso direto à memória remoto (RDMA) com tipos de máquinas H4D. 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. As instâncias H4D oferecem uma escalabilidade da carga de trabalho melhorada através de redes de 200 Gbps com RDMA. Para mais informações sobre os tipos de máquinas otimizadas para computação H4D no Google Cloud, consulte asérie de máquinas H4D.

Vista geral do tutorial

Este tutorial descreve os passos para configurar um cluster Slurm otimizado para HPC com tipos de máquinas H4D com RDMA. Especificamente, configura um cluster com máquinas virtuais do Compute Engine, cria um contentor do Cloud Storage para armazenar os módulos do Terraform necessários e configura uma instância do Filestore para aprovisionar o cluster do Slurm. Para concluir os passos neste tutorial, siga este processo:

  1. Configure o seu Google Cloud projeto com as autorizações necessárias e as variáveis de ambiente.
  2. Configure um contentor do Cloud Storage.
  3. Configure o Cluster Toolkit.
  4. Mude para o diretório Cluster Toolkit.
  5. Crie um ficheiro YAML de implementação do Slurm.
  6. Aprovisione um cluster Slurm através de um projeto.
  7. Estabeleça ligação ao cluster Slurm.

Antes de começar

  1. Peça um bloco de capacidade reservada para duas instâncias H4D com 192 vCPUs cada.
  2. Verifique se tem quota do Filestore suficiente para aprovisionar o cluster Slurm. Precisa de um mínimo de 5120 GiB de capacidade zonal,especificamente com um nível de serviço do Filestore de SSD básico.

    Para verificar a sua quota do Filestore, consulte as Quotas e limites do sistema na Google Cloud consola e filtre a tabela para mostrar apenas recursos do Filestore.

  3. Certifique-se de que a faturação está ativada para o seu Google Cloud projeto.

  4. Ative as APIs Compute Engine, Filestore, Cloud Storage, Service Usage e Cloud Resource Manager:

    Ative as APIs

Custos

O custo de executar este tutorial varia consoante cada secção que concluir, como configurar o tutorial ou executar tarefas. Pode calcular o custo através da calculadora de preços.

  • Para estimar o custo de configuração deste tutorial, use as seguintes especificações:

    • Capacidade do Filestore (SSD básico) por região: 5120 GiB.
    • Disco persistente padrão: 50 GB pd-standard para o nó de início de sessão do Slurm.
    • Discos persistentes de desempenho (SSD): 50 GB pd-ssd para o controlador do Slurm.
    • Instância de VM: duas instâncias H4D criadas com o tipo de máquina h4d-highmem-192, h4d-standard-192 ou h4d-highmem-192-lssd.
    • Volumes Hyperdisk Balanced: 50 GiB para cada instância H4D.

Inicie o Cloud Shell

Neste tutorial, vai usar o Cloud Shell, que é um ambiente de shell para gerir recursos alojados no Google Cloud.

O Cloud Shell vem pré-instalado com a CLI gcloud. A CLI gcloud fornece a interface de linhas de comando principal para o Google Cloud. Para iniciar o Cloud Shell:

  1. Aceda à Google Cloud consola.

    Google Cloud consola

  2. No canto superior direito da consola, clique no botão Ativar Cloud Shell: Ícone do Cloud Shell

É iniciada uma sessão do Cloud Shell e é apresentado um pedido de linha de comandos. Use esta shell para executar comandos do gcloud e do Cluster Toolkit.

Defina variáveis de ambiente

No Cloud Shell, defina as seguintes variáveis de ambiente para usar no restante do tutorial. Estas variáveis de ambiente definem valores de marcadores de posição para as seguintes tarefas:

  • Configura o seu projeto com os valores relevantes para aceder às suas instâncias H4D reservadas.

  • Configura um contentor do Cloud Storage para armazenar módulos do Cluster Toolkit.

Variáveis de capacidade de reserva

export H4D_RESERVATION_PROJECT_ID=H4D_RESERVATION_PROJECT_ID
export H4D_RESERVATION_NAME=H4D_RESERVATION_NAME
export H4D_DEPLOYMENT_NAME=H4D_DEPLOYMENT_NAME
export H4D_REGION=H4D_REGION
export H4D_ZONE=H4D_ZONE
export H4D_DEPLOYMENT_FILE_NAME=H4D_DEPLOYMENT_FILE_NAME

Substitua o seguinte:

  • H4D_RESERVATION_PROJECT_ID - o Google Cloud ID do projeto ao qual foi concedido o bloco de reserva do tipo de máquina H4D.
  • H4D_RESERVATION_NAME: o nome do bloco de reserva de VM, que se encontra no seu projeto. Por exemplo, h4d-highmem-exr.
  • H4D_DEPLOYMENT_NAME – um nome exclusivo para a implementação do cluster Slurm. Por exemplo, h4d-hpc-slurm-cluster-deployment.
  • H4D_REGION - a região que está a executar o bloco de reserva de máquinas H4D reservadas. Por exemplo, us-central1.
  • H4D_ZONE – a zona que contém as máquinas reservadas. Esta string tem de conter a região e a zona. Por exemplo, us-central1-a.
  • H4D_DEPLOYMENT_FILE_NAME: um nome exclusivo para o ficheiro YAML do esquema do Slurm. Se executar este tutorial mais do que uma vez, escolha um nome de implementação exclusivo de cada vez.

Variáveis de capacidade de armazenamento

Crie as variáveis de ambiente para o seu contentor do Cloud Storage.

O Cluster Toolkit usa esquemas para definir e implementar clusters de VMs. Um projeto define um ou mais módulos do Terraform para aprovisionar a infraestrutura da nuvem. Este contentor é usado para armazenar estes planos.

export GOOGLE_CLOUD_BUCKET_NAME=GOOGLE_CLOUD_BUCKET_NAME
export GOOGLE_CLOUD_BUCKET_LOCATION=GOOGLE_CLOUD_BUCKET_LOCATION

Substitua o seguinte:

  • GOOGLE_CLOUD_BUCKET_NAME: o nome que quer usar para o seu contentor do Cloud Storage que cumpre os requisitos de nomenclatura de contentores.
  • GOOGLE_CLOUD_BUCKET_LOCATION - qualquer Google Cloud região à sua escolha, onde o contentor vai ser alojado. Por exemplo, us-central1.

Mude para o projeto com o bloco de capacidade H4D reservado

Execute o seguinte comando para garantir que está no Google Cloud projeto que tem o bloco de reserva aprovado para as instâncias H4D.

gcloud config set project ${H4D_RESERVATION_PROJECT_ID}

Crie um contentor do Cloud Storage

Crie o contentor para armazenar os seus módulos do Terraform. No Cloud Shell, usando as variáveis de ambiente, execute o seguinte comando:

Uma prática recomendada quando trabalha com o Terraform é armazenar o estado remotamente num ficheiro com controlo de versões. No Google Cloud, pode criar um contentor do Cloud Storage com o controlo de versões ativado.

gcloud storage buckets create gs://${GOOGLE_CLOUD_BUCKET_NAME} \
    --project=${H4D_RESERVATION_PROJECT_ID} \
    --default-storage-class=STANDARD \
    --location=${GOOGLE_CLOUD_BUCKET_LOCATION} \
    --uniform-bucket-level-access

gcloud storage buckets update gs://${GOOGLE_CLOUD_BUCKET_NAME} --versioning

Configure o Cluster Toolkit

Para criar um cluster Slurm num Google Cloud projeto, pode usar o Cluster Toolkit para processar a implementação e o aprovisionamento do cluster. O Cluster Toolkit é um software de código aberto oferecido pela Google Cloud para simplificar o processo de implementação de cargas de trabalho noGoogle Cloud.

Siga estes passos para configurar o Cluster Toolkit.

Clone o repositório do GitHub do Cluster Toolkit

  1. No Cloud Shell, clone o repositório do GitHub:

    git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
  2. Aceda ao diretório de trabalho principal:

    cd cluster-toolkit/

Crie o ficheiro binário do Cluster Toolkit

  1. No Cloud Shell, crie o ficheiro binário do Cluster Toolkit a partir da origem executando o seguinte comando:

    make
  2. Para validar a compilação, execute o seguinte comando:

    Para implementar um cluster Slurm otimizado para HPC que use instâncias H4D, tem de usar a versão v1.47.0 ou posterior do Cluster Toolkit.

    ./gcluster --version

    Depois de criar o ficheiro binário, já tem tudo pronto para implementar clusters para executar as suas tarefas ou cargas de trabalho.

Crie um ficheiro de implementação

  1. No diretório Cluster Toolkit, crie o ficheiro YAML de implementação do Slurm.

    nano ${H4D_DEPLOYMENT_FILE_NAME}.yaml
    
  2. Cole o seguinte conteúdo no ficheiro YAML.

    ---
    terraform_backend_defaults:
      type: gcs
      configuration:
        bucket: GOOGLE_CLOUD_BUCKET_NAME
    
    vars:
      deployment_name: H4D_DEPLOYMENT_FILE_NAME
      project_id: H4D_RESERVATION_PROJECT_ID
      region: H4D_REGION
      zone: H4D_ZONE
      
      
    
  3. Para guardar e sair do ficheiro, prima Ctrl+O > Enter > Ctrl+X.

Aprovisione o cluster Slurm

Para aprovisionar o cluster Slurm, execute o seguinte comando de implementação. Este comando aprovisiona o cluster Slurm com o projeto do H4D Cluster Toolkit.

No Cloud Shell, inicie a criação do cluster.

./gcluster deploy -d ${H4D_DEPLOYMENT_FILE_NAME}.yaml examples/hpc-slurm-h4d.yaml --auto-approve

Estabeleça ligação ao cluster

Após a implementação, ligue-se à consola Google Cloud para ver o cluster.

  1. Aceda à página Compute Engine > Instâncias de VM na Google Cloud consola.

    Aceder às instâncias de VM

  2. Localize o nó de início de sessão, que pode ter um nome como example-deployment-login-123.

  3. Clique em SSH para estabelecer ligação.

Limpar

Para evitar incorrer em cobranças na sua Google Cloud conta pelos recursos usados nesta página, siga estes passos.

Elimine o cluster Slurm

Recomendamos que limpe os seus recursos quando já não forem necessários.

Desative a proteção contra eliminação

Para desativar a proteção contra eliminação quando atualiza uma instância, use um comando semelhante ao seguinte:

  gcloud filestore instances update INSTANCE_NAME \
      --no-deletion-protection

Substituição:

  • INSTANCE_NAME: o nome da instância que quer editar. Por exemplo, my-genomics-instance.

Para encontrar o INSTANCE_NAME, pode executar o comando gcloud filestore instances list. Este comando lista todas as instâncias do Filestore no seu Google Cloud projeto atual, incluindo os respetivos nomes, localizações (zonas), níveis, capacidade e estado.

Depois de executar o comando, encontre a instância do Filestore que corresponde ao tipo de máquina H4D usado neste tutorial.

Destrua o cluster Slurm

  1. 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.

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

    ./gcluster destroy ${H4D_DEPLOYMENT_FILE_NAME} --auto-approve
    

Quando a destruição do cluster estiver concluída, é apresentada uma mensagem semelhante à seguinte:

Destroy complete! Resources: xx destroyed.

Elimine o contentor de armazenamento

Elimine o contentor do Cloud Storage depois de se certificar de que o comando anterior terminou sem erros:

gcloud storage buckets delete gs://${GOOGLE_CLOUD_BUCKET_NAME}

Resolução de problemas

  • Erro: o Cloud Shell não consegue aprovisionar o cluster porque não existe armazenamento disponível.

    Pode ver este erro se for um utilizador frequente do Cloud Shell e tiver ficado sem espaço de armazenamento.

    Para resolver este problema, consulte o artigo Desative ou reponha o Cloud Shell.

  • Erro: já existe um cluster ou um nome de projeto.

    Pode ver este erro se estiver a usar um projeto que já usou os nomes de ficheiros exatos usados neste tutorial. Por exemplo, se outra pessoa na sua organização tiver seguido este tutorial na íntegra.

    Para resolver este problema, siga novamente o tutorial e escolha um nome exclusivo para o ficheiro de implementação. Em seguida, volte a executar o comando provision the Slurm cluster com o novo ficheiro de implementação.

O que se segue?