Descrever a integração do Slurm com o Azure CycleCloud

Concluído

Depois de concluir esta unidade, você deve ser capaz de descrever como o Slurm se integra ao Azure CycleCloud e descrever as principais áreas de integração entre o Slurm e o Azure CycleCloud.

O que é o Azure CycleCloud?

O Azure CycleCloud é uma ferramenta para implantar clusters HPC no Azure e gerenciar suas cargas de trabalho. Oferece uma vasta gama de capacidades de HPC, incluindo:

  • Implantação baseada em modelos de clusters HPC. O Azure CycleCloud fornece modelos personalizáveis incorporados para implementação dos agendadores de cluster mais comuns, incluindo Slurm, OpenPBS, LSF, Grid Engine e HTCondor. Muitos outros modelos predefinidos, que você pode importar para sua instância do Azure CycleCloud, estão disponíveis no repositório GitHub do CycleCloud.
  • Dimensionamento manual e automatizado de nós de cluster. O Azure CycleCloud permite o dimensionamento horizontal manual e automatizado de clusters gerenciados de acordo com o comprimento das filas de trabalho e políticas de governança. Ele também oferece uma API REST para desenvolver adaptadores de dimensionamento automático para agendadores personalizados.
  • Configuração de nó através de scripts cloud-init. O Azure CycleCloud dá suporte ao gerenciamento de configuração com base em scripts personalizados que são executados em nós de cluster gerenciados antes de qualquer outra tarefa de configuração específica do CycleCloud.
  • Gestão do armazenamento de cluster interno e externo. O Azure CycleCloud permite configurar o armazenamento de cluster provisionando, montando e formatando discos gerenciados do Azure e Armazenamento Conectado à Rede, como servidores NFS ou clusters BeeGFS.
  • Monitoramento, registro e alerta. O Azure CycleCloud oferece monitoramento de cluster interno e integra-se ao Azure Monitor. Também é possível armazenar dados de log de clusters do CycleCloud para o Log Analytics e criar painéis de métricas personalizados. Você também pode criar alertas personalizados e notificações por e-mail acionadas por dados de telemetria. Todas as atividades do Azure CycleCloud são registradas.
  • Autenticação e autorização. O Azure CycleCloud dá suporte à autenticação local interna. Como alternativa, você pode integrá-lo com os Serviços de Domínio Ative Directory (AD DS) ou outros provedores de identidade baseados no protocolo LDAP. Por padrão, os usuários definidos localmente têm acesso ao sistema operacional nos nós de cluster gerenciados, mas é possível administrar os usuários do cluster separadamente. Para o gerenciamento de recursos em uma assinatura do Azure, você pode usar uma entidade de serviço ou identidade gerenciada do Microsoft Entra.
  • Relatórios e controles de custos quase em tempo real. O Azure CycleCloud rastreia o uso do cluster e estima o custo correspondente. Esse recurso permite configurar alertas de orçamento acionados quando o custo do cluster excede o valor monetário especificado. O Azure CycleCloud também se integra ao Microsoft Cost Management.

Azure CycleCloud e Azure Batch

O Azure CycleCloud e o Azure Batch são serviços do Azure projetados para gerenciar e executar cargas de trabalho de computação paralelas e de alto desempenho em grande escala na nuvem. Esses serviços diferem em seus públicos-alvo, conjuntos de recursos e casos de uso.

O Azure CycleCloud está focado na criação, gestão e otimização de clusters HPC e HTC no Azure. O CycleCloud destina-se a cargas de trabalho HPC e HTC específicas do domínio, tais como dinâmica de fluidos computacional, genómica e simulações de engenharia. O CycleCloud suporta vários agendadores de cluster como Slurm, Grid Engine, LSF e HTCondor. Ele também se integra aos serviços do Azure, como o Armazenamento de Blobs do Azure, os Discos Gerenciados do Azure e os Arquivos NetApp do Azure para soluções de armazenamento.

O Azure Batch é um serviço gerenciado projetado para executar cargas de trabalho paralelas e de processamento em lote em grande escala no Azure. O Azure Batch é adequado para vários tipos de tarefas de processamento em lote, como processamento de dados, renderização e treinamento de modelo de aprendizado de máquina. O Azure Batch cuida do gerenciamento de recursos, do agendamento de tarefas e do dimensionamento de nós de computação com base nos requisitos de carga de trabalho.

O Azure CycleCloud foi projetado especificamente para cargas de trabalho HPC e HTC com suporte para vários agendadores de cluster, enquanto o Azure Batch é de uso mais geral, suportando vários tipos de tarefas de processamento paralelo e em lote.

Compreender as partições HPC e HTC

Uma partição do Azure CycleCloud é um agrupamento lógico de nós de computação com uma configuração, finalidade ou tipo de carga de trabalho específico. Os termos "partição HPC" e "partição HTC" referem-se a partições configuradas para lidar com cargas de trabalho de computação de alto desempenho e computação de alto rendimento.

As partições HPC utilizam um grande número de máquinas virtuais baseadas em CPU ou GPU para executar tarefas complexas. HTC é uma arquitetura que usa muitos recursos de computação durante longos períodos de tempo para realizar um grande número de tarefas de acoplamento flexível. Você usa partições HPC quando precisa executar cálculos grandes e complexos, como os envolvidos em simulações científicas e de engenharia.

As partições HTC utilizam um grande número de nós de máquinas virtuais baseadas em CPU ou GPU para resolver tarefas matemáticas complexas que requerem um acoplamento apertado e uma comunicação rápida. Os trabalhos HTC são normalmente independentes, sequenciais e podem ser agendados em diferentes recursos de computação em vários locais. Os trabalhos de HPC são normalmente paralelos, interdependentes e precisam ser executados em um único local com interconexões de baixa latência. HTC é apropriado para processar grandes volumes de tarefas menores e é bom para processamento em lote de tarefas intensivas de dados que podem ser divididas em pequenos elementos. O processamento em lote em HTC permite o processamento de grandes quantidades de dados ou tarefas computacionais, dividindo-os em grupos menores e gerenciáveis conhecidos como "lotes". Os clusters processam esses lotes em paralelo, alocando cada lote a um nó diferente no cluster de computação.

Em ambientes baseados na nuvem, como o Azure CycleCloud, o HTC e o HPC podem ser executados na mesma arquitetura de cluster.

Implementando o Azure CycleCloud

O CycleCloud é implementado como um aplicativo Web baseado em Linux, que você pode instalar em qualquer local a partir do qual você pode acessar seu ambiente do Azure. A maneira mais simples de configurá-lo é implantando uma VM do Azure usando a imagem correspondente do Azure Marketplace, com a opção de automatizar a implantação usando um modelo do Azure Resource Manager (ARM). Como alternativa, você pode usar pacotes yum ou apt, ou uma imagem de contêiner disponível no Registro de contêiner da Microsoft.

Durante a configuração inicial, você tem a opção de fornecer uma chave SSH para proteger o acesso ao sistema operacional que hospeda o aplicativo CycleCloud e aos nós de cluster subsequentemente implantados. Para permitir que o aplicativo CycleCloud interaja com o ARM, você precisará escolher uma identidade do Microsoft Entra que fornecerá contexto de segurança para essa interação e atribuir a ele permissões suficientes na assinatura do Azure de destino usando o RBAC (controle de acesso baseado em função) do Azure. Essa identidade pode assumir a forma de uma entidade de serviço ou, se hospedar o aplicativo Azure CycleCloud em uma VM do Azure, uma identidade gerenciada.

Uma instância do Azure CycleCloud também requer uma conta de armazenamento do Azure e um contêiner de blob que o acompanha. Esse contêiner, conhecido como "locker", fornece a área de preparo para a implantação de projetos em nós de cluster.

Uma vez instalado, o aplicativo Azure CycleCloud fornece uma interface gráfica do usuário que permite ao usuário gerenciar e monitorar sistemas HPC e uma interface de linha de comando (CLI) que facilita a automação e a integração do CycleCloud em fluxos de trabalho existentes. Você também pode usar a CLI para importar modelos, automatizar o provisionamento de cluster e executar tarefas de gerenciamento mais avançadas.

Noções básicas sobre o dimensionamento automático de clusters do CycleCloud

O Azure CycleCloud facilita a implantação de agendadores no Azure, que, por sua vez, distribuem e gerenciam trabalhos em execução em clusters compostos por recursos do Azure. O Azure CycleCloud não funciona como um agendador. Em vez disso, ele funciona como um intermediário entre os agendadores e a plataforma subjacente. O Azure CycleCloud também simplifica o desenvolvimento da funcionalidade de dimensionamento automático para os agendadores correspondentes, fornecendo uma interface de programação baseada em API REST e uma biblioteca de cliente baseada em Python.

O Azure CycleCloud permite correlacionar o comportamento de dimensionamento automático de clusters gerenciados com o comprimento das filas de trabalho de cluster. Você pode personalizar ainda mais esse comportamento definindo parâmetros de modelo que controlam, por exemplo, a quantidade de tempo após o qual os nós ociosos são encerrados ou a frequência das verificações de parada automática.

Todos os modelos internos expõem as configurações de dimensionamento automático diretamente na interface gráfica do Azure CycleCloud. Em cada caso, as configurações incluem a opção de especificar os limites inferior e superior do intervalo de dimensionamento automático, expressos no número de núcleos de CPU. O limite superior ajuda-o a minimizar a possibilidade de cobranças imprevistas. Você pode reduzir ainda mais esse risco definindo alertas de orçamento.

Com o limite inferior definido como 0, a criação de um cluster resultará no provisionamento apenas do nó principal do agendador. No entanto, quando o agendador deteta trabalhos em fila, ele inicia o provisionamento dos nós de computação necessários para executar a carga de trabalho correspondente, até o limite definido. Para dar suporte a trabalhos paralelos ou com acoplamento flexível, em que tarefas individuais são executadas independentemente umas das outras, as tarefas começarão a ser executadas assim que o primeiro nó estiver disponível. Para trabalhos fortemente acoplados, como aqueles que usam a funcionalidade MPI (Message Passing Interface), o tempo de espera será maior, dependendo da extensão das dependências internas. Depois que a fila de tarefas estiver vazia pela quantidade de tempo que excede o tempo ocioso permitido, os nós de computação começarão a parar automaticamente e seu cluster consistirá novamente apenas no nó principal do agendador.

Integração do Slurm com o CycleCloud

Você pode integrar o Slurm ao Azure CycleCloud configurando um cluster baseado em Slurm no CycleCloud, onde o CycleCloud gerencia a infraestrutura subjacente e o Slurm cuida do agendamento de tarefas e do gerenciamento de recursos.

O Slurm integra-se ao Azure CycleCloud da seguinte maneira:

  • Configuração do Cluster. Ao criar um novo cluster no Azure CycleCloud, você pode escolher Slurm como o agendador de cluster. Isso significa que o CycleCloud configurará os recursos do cluster (por exemplo, VMs, armazenamento, rede) e implantará o agendador Slurm no nó principal (ou nó controlador) do cluster.
  • Implantação de cluster. O Azure CycleCloud implanta o cluster Slurm no Azure, criando as VMs necessárias para o nó mestre e os nós de computação. O nó mestre executa o daemon do controlador Slurm (slurmctld) e os nós de computação executam o daemon Slurm (slurmd) responsável pela execução de trabalhos. O CycleCloud configura os recursos de rede e armazenamento e configura o cluster Slurm de acordo com as configurações especificadas.
  • Dimensionamento automático. O Azure CycleCloud pode dimensionar dinamicamente clusters Slurm adicionando ou removendo nós de computação com base nos requisitos de carga de trabalho e nas políticas de dimensionamento automático definidas. Isso ajuda a otimizar o uso de recursos e controlar os custos. Quando novos trabalhos são enviados e os recursos são insuficientes, o CycleCloud pode provisionar automaticamente nós de computação adicionais e adicioná-los ao cluster Slurm. Da mesma forma, quando a carga de trabalho diminui, o CycleCloud pode remover automaticamente nós de computação ociosos para economizar custos.
  • Monitorização e Gestão. O Azure CycleCloud fornece recursos de monitoramento e gerenciamento para o cluster Slurm, como o acompanhamento do desempenho do cluster, o uso de recursos e o status do trabalho. Você também pode gerenciar o ciclo de vida do cluster, iniciar/parar o cluster e aplicar atualizações conforme necessário.
  • Submissão de Trabalho. Você pode enviar trabalhos para o cluster Slurm usando comandos padrão do Slurm como sbatch, srun e salloc. Esses trabalhos são agendados e executados nas VMs do Azure que compõem os nós de computação do cluster Slurm.