Descrever a integração do SLURM ao Azure CycleCloud
No final desta unidade, você poderá 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 é Azure CycleCloud?
O Azure CycleCloud é uma ferramenta para implantar clusters HPC no Azure e gerenciar suas cargas de trabalho. Ele oferece uma ampla variedade de recursos de HPC, incluindo:
- Implantação baseada em modelo de clusters HPC: o Azure CycleCloud fornece modelos internos e personalizáveis implantando os 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 do CycleCloud do GitHub.
- 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 das 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ó por meio de scripts de cloud-init: o Azure CycleCloud dá suporte ao gerenciamento de configuração com base em scripts personalizados executados em nós de cluster gerenciado antes de qualquer outra tarefa de configuração específica do CycleCloud.
- Gerenciamento do armazenamento de cluster interno e externo: o Azure CycleCloud permite que você configure o armazenamento de cluster provisionando, montando e formatando discos gerenciados do Azure e armazenamento anexado à rede, como servidores NFS ou clusters BeeGFS.
- Monitoramento, registro em log e alertas: o Azure CycleCloud oferece monitoramento interno de cluster 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 email disparadas 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á-la ao AD DS (Active Directory Domain Services) ou a 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 usuários de cluster em separado. Para gerenciamento de recursos em uma assinatura do Azure, você pode usar uma entidade de serviço do Microsoft Entra ou uma identidade gerenciada.
- Relatórios e controles de custo quase em tempo real: o Azure CycleCloud controla o uso do cluster e estima o custo correspondente. Esse recurso permite configurar alertas de orçamento disparados quando o custo do cluster excede o valor monetário especificado. O Azure CycleCloud também se integra ao Gerenciamento de Custos da Microsoft.
Azure CycleCloud e Lote do Azure
O Azure CycleCloud e o Lote do Azure 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 têm públicos-alvo, conjuntos de recursos e casos de uso diferentes.
O Azure CycleCloud se concentra em criar, gerenciar e otimizar clusters HPC e HTC no Azure. O CycleCloud se concentra em cargas de trabalho HPC e HTC específicas do domínio, como dinâmica de fluido computacional, genômica e simulações de engenharia. O CycleCloud dá suporte a vários agendadores de cluster, como SLURM, Grid Engine, LSF e HTCondor. Ele também se integra aos serviços do Azure, como Armazenamento de Blobs do Azure, Azure Managed Disks e Azure NetApp Files para soluções de armazenamento.
O Lote do Azure é um serviço gerenciado projetado para executar cargas de trabalho de processamento em lote e paralelas em grande escala no Azure. O Lote do Azure é adequado para vários tipos de tarefas de processamento em lote, como processamento de dados, renderização e treinamento de modelo de machine learning. Ele 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 Lote do Azure é mais para uso geral, com suporte a vários tipos de tarefas de processamento em lote e paralelas.
Noções básicas sobre 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, uma finalidade ou um 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 High-Performance e High-Throughput.
As partições HPC usam um grande número de máquinas virtuais baseadas em CPU ou GPU para executar tarefas complexas. HTC é uma arquitetura que usa vários recursos de computação por longos períodos de tempo para realizar um grande número de tarefas pouco acopladas. Você pode usar 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 usam um grande número de nós de máquina virtual baseada em CPU ou GPU para resolver tarefas matemáticas complexas que exigem acoplamento rígido e comunicação rápida. Normalmente, os trabalhos de HTC são independentes, sequenciais e podem ser agendados em diferentes recursos de computação em vários locais. Os trabalhos de HPC normalmente são paralelos, interdependentes e precisam ser executados em um só local com interconexões de baixa latência. O HTC é apropriado para processar grandes volumes de tarefas menores e é bom para o processamento em lotes de tarefas com uso intensivo de dados que podem ser divididas em elementos pequenos. O processamento em lote no HTC permite processar grandes quantidades de dados ou tarefas computacionais dividindo-as em grupos menores e gerenciáveis chamados lotes. Os clusters processam esses lotes em paralelo alocando cada lote para um nó diferente no cluster de computação.
Em ambientes baseados em nuvem, como o Azure CycleCloud, é possível executar HTC e HPC na mesma arquitetura de cluster.
Implementar o Azure CycleCloud
O CycleCloud é implementado como um aplicativo Web baseado em Linux, que você pode instalar em qualquer localização da qual possa acessar seu ambiente do Azure. A maneira mais simples de defini-lo é implantando uma VM do Azure usando a imagem Azure Marketplace correspondente, com a opção de automatizar a implantação usando um modelo do ARM (Azure Resource Manager). 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ê terá 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 implantados posteriormente. Para permitir que o aplicativo CycleCloud interaja com o ARM, escolha uma identidade do Microsoft Entra ID que fornecerá contexto de segurança para essa interação e atribua a ela permissões suficientes na assinatura do Azure de destino usando o controle de acesso baseado em função (RBAC) do Azure. Essa identidade pode assumir a forma de uma entidade de serviço ou, se você estiver hospedando 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 a acompanhe. Esse contêiner, conhecido como um armário, fornece a área de preparo para implantar projetos em nós de cluster.
Uma vez instalado, o aplicativo Azure CycleCloud fornece uma interface gráfica do usuário que permite que um usuário gerencie e monitore sistemas HPC e uma CLI (interface de linha de comando) que facilita a automação e a integração do CycleCloud aos fluxos de trabalho. 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 cluster 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 de recursos do Azure. O Azure CycleCloud não funciona como um agendador. Em vez disso, ele funciona como um intermediário entre 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 REST de programação baseada em API e uma biblioteca de cliente baseada em Python.
O Azure CycleCloud permite que você correlacione o comportamento de dimensionamento automático de clusters gerenciados com o comprimento das filas de trabalho do cluster. Você pode personalizar ainda mais esse comportamento definindo parâmetros de modelo que controlam, por exemplo, o tempo após o qual os nós ociosos são encerrados ou a frequência de 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 para especificar os limites inferior e superior do intervalo de dimensionamento automático, expresso no número de núcleos de CPU. O limite superior ajuda a minimizar a possibilidade de encargos inesperados. Você pode reduzir ainda mais esse risco configurando alertas de orçamento.
Com o limite inferior definido como 0, a criação de um cluster resulta no provisionamento somente do nó de cabeçalho do agendador. No entanto, quando o agendador detecta 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 livremente acoplados ou paralelos, em que as tarefas individuais são executadas de modo independente umas das outras, os trabalhos começam a ser executados assim que o primeiro nó fica disponível. Para trabalhos rigidamente acoplados, como aqueles que usam a funcionalidade MPI (Interface de Passagem de Mensagem), o tempo de espera é maior, dependendo da extensão das dependências entre os nós. Depois que a fila de trabalhos estiver vazia pelo tempo excedendo o tempo ocioso permitido, os nós de computação começarão a ser interrompidos de modo automático e o cluster novamente consistirá apenas no nó de cabeçalho 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, em que o CycleCloud gerencia a infraestrutura subjacente e o SLURM cuida do agendamento de trabalhos e do gerenciamento de recursos.
O SLURM se integra 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 configura os recursos de cluster (por exemplo, VMs, armazenamento, rede) e implantar o agendador do 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ó principal executa o daemon do controlador do SLURM (
slurmctld) e os nós de computação executam o daemon do SLURM (slurmd) responsável pela execução de trabalhos. O CycleCloud configura os recursos de rede e armazenamento e define o cluster do 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 do SLURM. Da mesma forma, quando a carga de trabalho diminui, o CycleCloud pode remover automaticamente os nós de computação ociosos para economizar custos.
- Monitoramento e gerenciamento: o Azure CycleCloud fornece recursos de monitoramento e gerenciamento para o cluster Slurm, como acompanhamento do desempenho do cluster, uso de recursos e status do trabalho. Você também pode gerenciar o ciclo de vida do cluster, iniciar/parar o cluster e aplicar atualizações conforme o necessário.
-
Envio de Trabalho: você pode enviar trabalhos para o cluster Slurm usando comandos padrão do Slurm, como
sbatch,srunesalloc. Depois, esses trabalhos são agendados e executados nas VMs do Azure que compõem os nós de computação do cluster do SLURM.