Exercício – adicionar uma matriz de nós personalizada a um cluster de HPC

Concluído

Cuidado

Esse conteúdo faz referência ao CentOS, uma distribuição Linux com status de EOL (fim do serviço). Considere seu uso e planeje adequadamente. Para obter mais informações, veja as Diretrizes sobre fim da vida útil do CentOS.

Um nodearray é uma coleção de nós configurados de maneira idêntica de um cluster do Azure CycleCloud. A finalidade deles é acomodar a escala horizontal dos recursos de computação do cluster conforme o número de trabalhos em fila muda. Cada nodearray tem um nome, um conjunto de atributos que se aplicam a cada um dos nós e atributos opcionais dele que descrevem como o nodearray deve ser dimensionado.

O agendador de trabalhos Slurm particiona os nós do grupo em conjuntos lógicos e potencialmente sobrepostos. Seu objetivo é otimizar o processamento de trabalhos, levando em conta suas restrições específicas, como limites de recursos ou de tempo. O agendador aloca trabalhos para nós dentro de uma partição até que os recursos deles sejam esgotados ou todos os trabalhos sejam processados.

Você deseja modificar seu cluster gerenciado pelo Azure CycleCloud recentemente implantado para considerar as necessidades de recursos específicas a cada trabalho. Para alcançar essa meta, você decide aplicar mais alterações ao modelo subjacente e validar a sua abordagem.

Neste exercício, você executará as seguintes tarefas:

  • Tarefa 1: adicionar uma definição de nodearray ao modelo do Azure CycleCloud
  • Tarefa 2: adicionar parâmetros de interface gráfica ao modelo do Azure CycleCloud
  • Tarefa 3: exportar as propriedades do cluster do Azure CycleCloud
  • Tarefa 4: editar o arquivo de propriedades para incluir os novos parâmetros
  • Tarefa 5: importar o modelo modificado e o arquivo de parâmetros para o cluster existente

Observação

Certifique-se de que você concluiu com êxito o exercício anterior antes de iniciar este exercício.

Tarefa 1: adicionar uma definição de nodearray ao modelo do Azure CycleCloud

Você iniciará adicionando uma definição de nodearray no modelo Slurm personalizado no exercício anterior. O modelo de exemplo inclui duas partições rotuladas hpc e htc. Você criará outra partição e o nodearray correspondente, destinado a trabalhos que se beneficiam das funcionalidades de CUDA (arquitetura de dispositivo unificado de computação).

  1. Navegue até o Portal do Azure. Quando solicitado, autentique com uma conta Microsoft ou uma conta do Microsoft Entra que tenha a função de Colaborador ou Proprietário na assinatura do Azure que você está usando neste módulo.

  2. No portal do Azure, abra o Cloud Shell selecionando o ícone correspondente na barra de ferramentas ao lado da caixa de texto de pesquisa e verifique se você está executando uma sessão do Bash.

  3. Execute o seguinte comando no Cloud Shell para definir o diretório de trabalho como o que hospeda o repositório GitHub que você buscou no exercício anterior:

    cd ~/cyclecloud-slurm/templates
    
  4. Execute o seguinte comando para abrir o modelo baixado no editor nano:

    nano slurm.txt
    
  5. Na interface do editor nano, role até a seção [parameters About] e adicione o seguinte conteúdo diretamente antes dela:

    
    [[nodearray cuda]]
    MachineType = $CUDAMachineType
    ImageName = $CUDAImageName
    MaxCoreCount = $MaxCUDAExecuteCoreCount
    
    AdditionalClusterInitSpecs = $CUDAClusterInitSpecs
    
        [[[configuration]]]
        slurm.autoscale = true
        slurm.hpc = true
    
        [[[cluster-init cyclecloud/slurm:execute]]]
    
        [[[network-interface eth0]]]
        AssociatePublicIpAddress = $ExecuteNodesPublic
    
    

    Observação

    Se estiver usando um computador Windows, poderá colar o conteúdo da área de transferência usando a combinação de teclas Shift + Insert.

    Observação

    Suas alterações definem um nodearray extra.

Tarefa 2: adicionar parâmetros de interface gráfica ao modelo do Azure CycleCloud

Para poder modificar os valores dos parâmetros de modelo com a interface gráfica do Azure CycleCloud, você aplicará mais alterações ao modelo.

  1. Na interface do editor nano, role até a seção [[parameters Auto-Scaling]] e adicione o seguinte conteúdo diretamente antes dela:

    
        [[[parameter CUDAMachineType]]]
        Label = CUDA VM Type
        Description = The VM type for CUDA execute nodes
        ParameterType = Cloud.MachineType
        DefaultValue = Standard_NC24
    
    
  2. Role até a seção [[[parameter HPCMaxScalesetSize]]] e adicione o seguinte conteúdo diretamente antes dela:

    
        [[[parameter MaxCUDAExecuteCoreCount]]]
        Label = Max CUDA Cores
        Description = The total number of CUDA execute cores to start
        DefaultValue = 100
        Config.Plugin = pico.form.NumberTextBox
        Config.MinValue = 0
        Config.IntegerOnly = true
    
    
  3. Role até a seção [[[parameter SchedulerClusterInitSpecs]]] e adicione o seguinte conteúdo diretamente antes dela:

    
        [[[parameter CUDAImageName]]]
        Label = CUDA OS
        ParameterType = Cloud.Image
        Config.OS = linux
        DefaultValue = cycle.image.centos7
        Config.Filter := Package in {"cycle.image.centos7", "cycle.image.ubuntu18"}
    
    
  4. Role até a seção [[parameters Advanced Networking]] e adicione o seguinte conteúdo diretamente antes dela:

    
        [[[parameter CUDAClusterInitSpecs]]]
        Label = CUDA Cluster-Init
        DefaultValue = =undefined
        Description = Cluster init specs to apply to CUDA execute nodes
        ParameterType = Cloud.ClusterInitSpecs
    
    
  5. Selecione a combinação de teclas Ctrl + O, selecione a tecla Enter e, em seguida, selecione a combinação de teclas Ctrl + X para salvar as alterações feitas e fechar o arquivo.

Tarefa 3: exportar as propriedades do cluster do Azure CycleCloud

Antes de aplicar as alterações de configuração feitas no modelo do Azure CycleCloud ao cluster de destino, primeiro você precisará exportar as propriedades do cluster.

  1. Execute o seguinte comando no Cloud Shell para listar os clusters existentes:

    cyclecloud show_cluster
    

    Observação

    Verifique se a saída inclui a entrada contoso-custom-slurm-lab-cluster.

  2. Execute o seguinte comando para exportar para o arquivo params.json a lista de parâmetros do cluster contoso-custom-slurm-lab-cluster e os respectivos valores:

    cyclecloud export_parameters contoso-custom-slurm-lab-cluster > ~/params.json
    
  3. Execute o seguinte comando para examinar a lista exportada com os parâmetros e os valores correspondentes:

    cat ~/params.json
    

Tarefa 4: editar o arquivo de propriedades para incluir os novos parâmetros

Mesmo que as edições aplicadas ao modelo do Azure CycleCloud tenham incluído valores padrão para todos os parâmetros introduzidos recentemente, talvez seja necessário modificá-los para considerar os seus requisitos específicos. Nesta tarefa, você definirá os valores dos parâmetros CUDAMachineType e MaxCUDAExecuteCoreCount.

  1. Execute o seguinte comando no Cloud Shell para abrir o arquivo de parâmetros baixado no editor nano:

    nano ~/params.json
    
  2. No editor nano, role até o final do arquivo e adicione o seguinte conteúdo, iniciando com uma nova linha antes das chaves de fechamento (}):

       "CUDAMachineType" : "Standard_NC6",
       "MaxCUDAExecuteCoreCount" : 60
    
  3. Adicione uma vírgula ao final da linha que precede a linha que você adicionou na etapa anterior:

       "CUDAMachineType" : "Standard_NC6"
    
  4. Selecione a combinação de teclas Ctrl + O, selecione a tecla Enter e, em seguida, selecione a combinação de teclas Ctrl + X para salvar as alterações feitas e fechar o arquivo.

Tarefa 5: importar o modelo modificado e o arquivo de parâmetros para o cluster existente

Para concluir este exercício, você importará o modelo modificado e o arquivo de parâmetros correspondente para o cluster existente, substituindo a configuração atual dele.

  1. Execute o seguinte comando no Cloud Shell para importar o modelo modificado e seu arquivo de parâmetros para o cluster existente:

    cyclecloud import_cluster contoso-custom-slurm-lab-cluster --file ~/cyclecloud-slurm/templates/slurm.txt -p ~/params.json -c Slurm --force
    

    Observação

    Você deve especificar o nome do cluster de destino e o sinalizador --force para sobrescrever a configuração do cluster existente.

  2. No computador, abra outra janela do navegador e navegue até a URL https://<endereço_IP>. Se solicitado, confirme que você deseja continuar.

  3. Se você for solicitado a autenticar, entre fornecendo credenciais da mesma conta de usuário do aplicativo Azure CycleCloud usada para configurar a CLI do Azure CycleCloud.

  4. Na interface gráfica do Azure CycleCloud, navegue até a página Clusters. Na lista de clusters, selecione a entrada contoso-custom-slurm-lab-cluster e, em seguida, selecione Editar.

  5. Na janela pop-up Editar contoso-custom-slurm-lab-cluster, na página Sobre, selecione Próximo.

  6. Na página Configurações necessárias, verifique a presença da entrada Tipo de VM CUDA definida para o valor Standard_NC6 e as opções de dimensionamento automático correspondentes:

A captura de tela da página Configurações Necessárias da janela pop-up Editar contoso-custom-slurm-lab-cluster.

Parabéns! Você concluiu com sucesso o segundo exercício deste módulo. Neste exercício, você personalizou ainda mais o seu cluster do Azure CycleCloud usando um modelo modificado, incluindo a definição de um novo nodearray com a partição correspondente. Para atingir essa meta, depois de editar o modelo, você exportou e editou o arquivo de parâmetros de cluster e o importou, juntamente com o modelo modificado, para o cluster.

Observação

Não exclua os recursos implantados e configurados neste exercício se estiver planejando executar o próximo exercício. Esses recursos são necessários para a conclusão do próximo exercício.