Criar um cluster do Slurm autogerenciado com uma VM A4

Esta página descreve como criar e implantar rapidamente um cluster do Slurm otimizado para IA usando tipos de máquina otimizados para aceleradores A4 com a CLI gcloud e o Cluster Toolkit.

Os tipos de máquina otimizados para aceleradores A4 vêm com GPUs NVIDIA B200 anexadas e são projetados especificamente para computação intensiva de IA, ajudando o cluster do Slurm a processar o treinamento de modelo e a inferência em grande escala de maneira eficiente. Para mais informações sobre os tipos de máquina otimizados para aceleradores A4 no Google Cloud, consulte Tipos de máquinas com GPU.

Como alternativa, você pode usar o Cluster Director para criar um cluster do Slurm baseado em A4. O Cluster Director é um serviço gerenciado que simplifica e automatiza a implantação de clusters, reduzindo a sobrecarga operacional. Para mais informações, consulte Criar um cluster do Slurm totalmente gerenciado com duas VMs A4.


Para seguir as instruções detalhadas desta tarefa diretamente no Google Cloud console, clique em Orientações:

Orientações


Visão geral sobre o tutorial

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

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

Antes de começar

  1. Reserve um bloco de capacidade para uma a4-highgpu-8g máquina.
  2. Verifique se você tem cota suficiente do Filestore para provisionar o cluster do Slurm. Você precisa de pelo menos 10.240 GiB de capacidade zonal, também conhecida como capacidade de SSD de alta escala.

    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 o projeto do Google Cloud .

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

    Ativar as APIs

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 personalizados papéis ou outros predefinidos papéis.

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 (padrão) por região:10.240 GiB.
    • Disco permanente padrão:50 GB pd-standard para o nó de login do Slurm.
    • Discos permanentes de desempenho (SSD):pd-ssd de 50 GB para o controlador Slurm.
    • Instância de VM: 1 a4-highgpu-8g.

Iniciar o Cloud Shell

Neste tutorial, você 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 interface de linha de comando principal para Google Cloud. Inicie o Cloud Shell:

  1. Acesse o Google Cloud console do.

    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.

Definir variáveis de capacidade de reserva de máquina

No Cloud Shell, defina as seguintes variáveis de ambiente de capacidade de reserva. Essas variáveis de ambiente definem valores de marcador de posição para configurar o projeto para acessar a máquina a4-highgpu-8g reservada.

export A4_RESERVATION_PROJECT_ID=A4_RESERVATION_PROJECT_ID
export A4_RESERVATION_NAME=A4_RESERVATION_NAME
export A4_DEPLOYMENT_NAME=A4_DEPLOYMENT_NAME
export A4_REGION=A4_REGION
export A4_ZONE=A4_ZONE
export A4_DEPLOYMENT_FILE_NAME=A4_DEPLOYMENT_FILE_NAME

Substitua:

  • A4_RESERVATION_PROJECT_ID: o Google Cloud ID do projeto que recebeu o bloco de reserva do tipo de máquina A4.
  • A4_RESERVATION_NAME: o nome da reserva de GPU usada no projeto. Por exemplo, a4high-exr.
  • A4_DEPLOYMENT_NAME: um nome exclusivo para a implantação do cluster do Slurm. Por exemplo, my-slurm-cluster-deployment.
  • A4_REGION: a região que está executando o bloco de reserva de máquina A4 reservado. Por exemplo, us-central1.
  • A4_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.
  • A4_DEPLOYMENT_FILE_NAME: um nome exclusivo para o arquivo YAML do modelo do Slurm. Se você executar este tutorial mais de uma vez, escolha um nome de implantação exclusivo a cada vez.

Mudar para o projeto aprovado em A4

Execute o comando a seguir para garantir que você esteja no Google Cloud projeto que tem o bloco de reserva aprovado para o tipo de máquina A4.

gcloud config set project ${A4_RESERVATION_PROJECT_ID}

Criar um bucket do Cloud Storage

Ao implantar um blueprint e os módulos dele, o Terraform cria um arquivo de estado que mapeia o blueprint para os recursos na nuvem. Para manter um registro confiável da infraestrutura, é recomendável armazenar os arquivos de estado do Terraform em um local remoto com controle de versões ativado, como um bucket do Cloud Storage com o controle de versões ativado.

Para armazenar o arquivo de estado, crie um bucket do Cloud Storage com o controle de versões ativado executando os comandos a seguir no Cloud Shell:

gcloud storage buckets create gs://${BUCKET_NAME} \
    --project=${A4_RESERVATION_PROJECT_ID} \
    --default-storage-class=STANDARD \
    --location=${BUCKET_LOCATION} \
    --uniform-bucket-level-access

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

Substitua:

  • BUCKET_NAME: o nome do novo bucket do Cloud Storage, que precisa atender aos requisitos de nomenclatura de bucket.
  • A4_RESERVATION_PROJECT_ID: o Google Cloud ID do projeto que recebeu o bloco de reserva do tipo de máquina A4.
  • BUCKET_LOCATION: a Google Cloud região em que você quer criar o bucket do Cloud Storage, como us-central1. O Terraform armazena o arquivo de estado nesse local.

Definir variáveis de capacidade de armazenamento

No Cloud Shell, crie as variáveis de ambiente para o bucket criado na etapa anterior.

export BUCKET_NAME=BUCKET_NAME
export BUCKET_LOCATION=BUCKET_LOCATION

Substitua:

  • BUCKET_NAME: o nome do bucket.
  • BUCKET_LOCATION: a região em que o bucket está localizado.

Configurar o Cluster Toolkit

Para criar um cluster Slurm em um Google Cloud projeto, use o Cluster Toolkit para processar a implantação e o provisionamento do 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.

Instalar o Cluster Toolkit

Para instalar o Cluster Toolkit, faça o download e extraia o pacote binário pré-criado.

  1. Acesse a página de versões do Cluster Toolkit no GitHub.

  2. Baixe o pacote que corresponde à sua plataforma e arquitetura. Por exemplo, se você usa o Cloud Shell, faça o download de gcluster_bundle_linux_amd64.zip.

  3. No terminal, extraia os arquivos do pacote para um novo diretório gcluster-bundle:

    unzip BUNDLE_FILENAME -d gcluster-bundle

    Substitua BUNDLE_FILENAME pelo nome do pacote que você baixou.

  4. Acesse o diretório gcluster-bundle:

    cd gcluster-bundle
  5. Crie o arquivo binário gcluster:

    chmod +x gcluster
  6. Para verificar a instalação, execute o seguinte comando:

    ./gcluster --version

    Depois de instalar 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 ${A4_DEPLOYMENT_FILE_NAME}.yaml
    
  2. Cole o conteúdo a seguir no arquivo YAML.

    ---
    terraform_backend_defaults:
      type: gcs
      configuration:
        bucket: BUCKET_NAME
    
    vars:
      deployment_name: A4_DEPLOYMENT_FILE_NAME
      project_id: A4_RESERVATION_PROJECT_ID
      region: A4_REGION
      zone: A4_ZONE
      a4h_reservation_name: A4_RESERVATION_NAME
      a4h_cluster_size: 1
    
  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 examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml arquivo de blueprint.

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

./gcluster deploy -d ${A4_DEPLOYMENT_FILE_NAME}.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --auto-approve

Conexão ao cluster

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

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

    Acessar instâncias de VM

  2. Localize o nó de login (a4high-login-001 ou similar).

  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.

Destruir o cluster do Slurm

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

Por padrão, os modelos A4 High ativam a proteção contra exclusão na instância do Filestore. Ao destruir o cluster do Slurm, desative a proteção contra exclusão antes de executar o comando de destruição.

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 pelo nome da instância que você quer editar. Por exemplo, my-genomics-instance.

Para encontrar o INSTANCE_NAME, execute 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 à máquina a4-highgpu-8g em execução 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 DEPLOYMENT_FOLDER --auto-approve

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

Quando a destruição 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://${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 de provisionamento do cluster Slurm com o novo arquivo de implantação.

A seguir