Criar um cluster de HPC Slurm habilitado para RDMA com instâncias H4D

Nesta página, descrevemos como criar um cluster Slurm de computação de alto desempenho (HPC) que usa acesso direto à memória remota (RDMA) com tipos de máquina H4D. 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 por meio de rede de 200 Gbps habilitada para RDMA. Para mais informações sobre tipos de máquinas H4D otimizados para computação no Google Cloud, consulte Série de máquinas H4D.

Visão geral sobre o tutorial

Este tutorial descreve as etapas para configurar um cluster Slurm otimizado para HPC usando tipos de máquina H4D com RDMA. Especificamente, você configura um cluster com máquinas virtuais do Compute Engine, cria um bucket do Cloud Storage para armazenar os módulos necessários do Terraform e configura uma instância do Filestore para provisionar seu cluster do Slurm. Para concluir as etapas deste tutorial, siga este processo:

  1. Configure o projeto Google Cloud com as permissões e as variáveis de ambiente necessárias.
  2. Configure um bucket do Cloud Storage
  3. Configurar o Cluster Toolkit.
  4. Mude para o diretório do Cluster Toolkit.
  5. Crie um arquivo YAML de implantação do Slurm.
  6. Provisione um cluster do Slurm usando um blueprint.
  7. Conecte-se ao cluster do Slurm.

Antes de começar

  1. Solicite um bloco de capacidade reservada para duas instâncias H4D com 192 vCPUs cada.
  2. Verifique se você tem cota suficiente do Filestore para provisionar o cluster do Slurm. Você precisa de pelo menos 5.120 GiB de capacidade zonal,especificamente com um nível de serviço do Filestore de SSD básico.

    Para conferir sua cota do Filestore, acesse Cotas e limites do sistema no console Google Cloud e filtre a tabela para mostrar apenas os recursos do Filestore.

  3. Verifique se o faturamento está ativado para seu projeto do Google Cloud .

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

    Ativar as APIs

Custos

O custo de execução deste tutorial varia de acordo com cada seção concluída, como a configuração do tutorial ou a execução de jobs. Você pode calcular o custo usando a 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:5.120 GiB.
    • Disco permanente padrão:50 GB pd-standard para o nó de login do Slurm.
    • Discos permanentes de desempenho (SSD):50 GB pd-ssd para o controlador 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 do Hyperdisk Balanced: 50 GiB para cada instância H4D.

Iniciar o Cloud Shell

Neste tutorial, você vai usar o Cloud Shell, um ambiente de shell para gerenciar recursos hospedados no Google Cloud.

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

  1. Acesse o console do Google Cloud .

    Google Cloud console

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

Uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. Use esse shell para executar comandos do gcloud e do Cluster Toolkit.

Defina as variáveis de ambiente

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

  • Configura o projeto com os valores relevantes para acessar as instâncias H4D reservadas.

  • Configura um bucket 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:

  • H4D_RESERVATION_PROJECT_ID: o ID do projeto Google Cloud que recebeu o bloco de reserva do tipo de máquina H4D.
  • H4D_RESERVATION_NAME: o nome do bloco de reserva de VM encontrado no projeto. Por exemplo, h4d-highmem-exr.
  • H4D_DEPLOYMENT_NAME: um nome exclusivo para a implantação do cluster Slurm. Por exemplo, h4d-hpc-slurm-cluster-deployment.
  • H4D_REGION: a região que está executando o bloco de reserva de máquina H4D reservado. Por exemplo, us-central1.
  • H4D_ZONE: a zona que contém as máquinas reservadas. Essa string precisa conter a região e a zona. Por exemplo, us-central1-a.
  • H4D_DEPLOYMENT_FILE_NAME: um nome exclusivo para o arquivo YAML do modelo do Slurm. Se você concluir este tutorial mais de uma vez, escolha um nome de implantação exclusivo a cada vez.

Variáveis de capacidade de armazenamento

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

O Cluster Toolkit usa blueprints para definir e implantar clusters de VMs. Um blueprint define um ou mais módulos do Terraform para provisionar a infraestrutura do Cloud. Esse bucket é usado para armazenar esses modelos.

export GOOGLE_CLOUD_BUCKET_NAME=GOOGLE_CLOUD_BUCKET_NAME
export GOOGLE_CLOUD_BUCKET_LOCATION=GOOGLE_CLOUD_BUCKET_LOCATION

Substitua:

  • GOOGLE_CLOUD_BUCKET_NAME: o nome que você quer usar para o bucket do Cloud Storage que atende aos requisitos de nomenclatura de bucket.
  • GOOGLE_CLOUD_BUCKET_LOCATION: qualquer Google Cloud região de sua escolha, onde o bucket será hospedado. Por exemplo, us-central1.

Mude para o projeto com o bloco de capacidade H4D reservado.

Execute o comando a seguir para garantir que você esteja no projeto Google Cloud que tem o bloco de reserva aprovado para as instâncias H4D.

gcloud config set project ${H4D_RESERVATION_PROJECT_ID}

Criar um bucket do Cloud Storage

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

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.

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

Configurar o Cluster Toolkit

Para criar um cluster Slurm em um projeto Google Cloud , use o Cluster Toolkit para implantar e provisionar o cluster. O Cluster Toolkit é um software de código aberto oferecido pelo Google Cloud para simplificar o processo de implantação de cargas de trabalho no Google Cloud.

Siga as etapas abaixo para configurar o Cluster Toolkit.

Clonar o repositório do Cluster Toolkit no GitHub

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

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

    cd cluster-toolkit/

Criar o binário do Cluster Toolkit

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

    make
  2. Para verificar o build, execute o seguinte comando:

    Para implantar um cluster Slurm otimizado para HPC que usa instâncias H4D, use a versão v1.47.0 ou mais recente do Cluster Toolkit.

    ./gcluster --version

    Depois de criar o binário, você já pode implantar clusters para executar seus jobs ou cargas de trabalho.

Criar um arquivo de implantação

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

    nano ${H4D_DEPLOYMENT_FILE_NAME}.yaml
    
  2. Cole o conteúdo a seguir no arquivo 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 salvar e sair do arquivo, pressione Ctrl+O > Enter > Ctrl+X.

Provisionar o cluster do Slurm

Para provisionar o cluster Slurm, execute o comando de implantação a seguir. Esse comando provisiona o cluster do Slurm com o blueprint 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

Conexão ao cluster

Após a implantação, conecte-se ao console Google Cloud para conferir o cluster.

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

    Acessar instâncias de VM

  2. Localize o nó de login, que pode ter um nome como example-deployment-login-123.

  3. Clique em SSH para se conectar.

Limpar

Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga as etapas abaixo.

Excluir o cluster do Slurm

Recomendamos que você limpe seus recursos quando eles não forem mais necessários.

Desativar proteção contra exclusão

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

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

Substitua:

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

Para encontrar o INSTANCE_NAME, execute o comando gcloud filestore instances list. Esse comando lista todas as instâncias do Filestore no projeto Google Cloud atual, incluindo os nomes, locais (zonas), níveis, capacidade e status.

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

Destruir o cluster do Slurm

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

  2. Para destruir o cluster, execute:

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

Quando a destruição do cluster for concluída, uma mensagem semelhante a esta será exibida:

Destroy complete! Resources: xx destroyed.

Excluir o bucket de armazenamento

Exclua o bucket do Cloud Storage depois de verificar se o comando anterior foi concluído sem erros:

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

Solução de problemas

  • Erro: o Cloud Shell não pode provisionar o cluster porque não há mais armazenamento disponível.

    Esse erro pode aparecer se você usa o Cloud Shell com frequência e ficou sem espaço de armazenamento.

    Para resolver esse problema, consulte Desativar ou redefinir o Cloud Shell.

  • Erro: o nome do cluster ou do modelo já existe.

    Esse erro pode aparecer se você estiver usando um projeto que já usou os nomes de arquivo exatos usados neste tutorial. Por exemplo, se outra pessoa na sua organização fez todo o tutorial.

    Para resolver esse problema, execute o tutorial novamente e escolha um nome exclusivo para o arquivo de implantação. Em seguida, execute o comando provisionar o cluster Slurm com o novo arquivo de implantação.

A seguir