Crie um cluster Slurm de HPC com RDMA ativado com instâncias H4D
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:
- Configure o seu Google Cloud projeto com as autorizações necessárias e as variáveis de ambiente.
- Configure um contentor do Cloud Storage.
- Configure o Cluster Toolkit.
- Mude para o diretório Cluster Toolkit.
- Crie um ficheiro YAML de implementação do Slurm.
- Aprovisione um cluster Slurm através de um projeto.
- Estabeleça ligação ao cluster Slurm.
Antes de começar
- Peça um bloco de capacidade reservada para duas instâncias H4D com 192 vCPUs cada.
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.
- Para instruções detalhadas sobre como verificar as quotas do Filestore, consulte Ver quota específica da API.
- Se não tiver quota suficiente, peça um aumento da quota.
Certifique-se de que a faturação está ativada para o seu Google Cloud projeto.
Ative as APIs Compute Engine, Filestore, Cloud Storage, Service Usage e Cloud Resource Manager:
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
ouh4d-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:
Aceda à Google Cloud consola.
No canto superior direito da consola, clique no botão Ativar 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
No Cloud Shell, clone o repositório do GitHub:
git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
Aceda ao diretório de trabalho principal:
cd cluster-toolkit/
Crie o ficheiro binário do Cluster Toolkit
No Cloud Shell, crie o ficheiro binário do Cluster Toolkit a partir da origem executando o seguinte comando:
make
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
No diretório Cluster Toolkit, crie o ficheiro YAML de implementação do Slurm.
nano ${H4D_DEPLOYMENT_FILE_NAME}.yaml
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
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.
Aceda à página Compute Engine > Instâncias de VM na Google Cloud consola.
Localize o nó de início de sessão, que pode ter um nome como
example-deployment-login-123
.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
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.
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?
- Tarefas avançadas do Slurm:
- Saiba como voltar a implementar o cluster Slurm
- Saiba como testar o desempenho da rede no cluster Slurm
- Saiba como gerir eventos de anfitriões:
- Veja a topologia das VMs
- Monitorize VMs no seu cluster Slurm
- Denuncie um anfitrião com falhas