O que realmente é necessário para executar código em um supercomputador de €200 milhões
(towardsdatascience.com)- O MareNostrum V da Universidade Politécnica da Catalunha, em Barcelona, é um dos 15 maiores supercomputadores do mundo, uma infraestrutura pública de pesquisa de €200 milhões que realiza computação distribuída em 8.000 nós
- Não é um único computador de alto desempenho, mas um sistema distribuído em que milhares de computadores independentes estão conectados por uma topologia fat-tree InfiniBand NDR200, permitindo que qualquer nó se comunique com a mesma latência mínima
- O envio de jobs é feito por meio do gerenciador de carga de trabalho SLURM, colocando tarefas na fila do agendador com scripts em lote que especificam solicitação de recursos, limite de tempo e orçamento do projeto
- Como opera em um ambiente air-gapped sem acesso à internet externa, é preciso preparar com antecedência as bibliotecas e os datasets necessários, e às vezes a extração dos resultados vira mais gargalo do que a computação em si
- É um recurso público oferecido gratuitamente a pesquisadores; instituições espanholas podem acessá-lo via RES, e em toda a Europa o acesso é possível pelos editais periódicos da EuroHPC Joint Undertaking
Arquitetura: a rede é o computador
- O maior equívoco em HPC é achar que se está alugando um único computador superpoderoso, quando na prática a estrutura consiste em submeter trabalho de forma distribuída para milhares de computadores independentes
- Para evitar, na computação distribuída, o problema de GPUs ficarem ociosas esperando transferência de dados, o MareNostrum V monta a malha InfiniBand NDR200 em uma topologia fat-tree
- Em redes comuns, surgem gargalos de banda quando vários computadores compartilham o mesmo switch
- A topologia fat-tree aumenta a largura de banda dos links conforme se sobe na hierarquia da rede, garantindo largura de banda non-blocking
- Qualquer um dos 8.000 nós pode se comunicar com a mesma latência mínima
Configuração das partições de computação
- Partição de uso geral (GPP): projetada para cargas de CPU altamente paralelas, com 6.408 nós equipados cada um com 112 núcleos Intel Sapphire Rapids, alcançando desempenho de pico combinado de 45.9 PFlops
- Partição acelerada (ACC): projetada para usos específicos como treinamento de IA e dinâmica molecular, com 1.120 nós equipados cada um com 4 GPUs NVIDIA H100 SXM, com desempenho de pico de 260 PFlops
- Considerando um preço de varejo de cerca de US$ 25.000 por H100, só o custo das GPUs ultrapassa US$ 110 milhões
- Nós de login (Login Nodes): ponto inicial de entrada via SSH, destinados apenas a tarefas leves como mover arquivos, compilar código e enviar scripts de job; não são para computação
Infraestrutura quântica
- O MareNostrum 5 integra física e logicamente o primeiro computador quântico da Espanha
- Inclui um sistema quântico baseado em portas digitais e o recozedor quântico supercondutor MareNostrum-Ona
- As unidades de processamento quântico (QPU) não substituem o supercomputador clássico; elas funcionam como aceleradores especializados
- Ao descarregar em hardware quântico problemas de otimização ou simulações de química quântica difíceis até para GPUs H100, o sistema se torna uma potência de computação híbrida clássico-quântica em larga escala
Air gap, cotas e a realidade operacional de HPC
- Air gap: é possível acessar por SSH de fora, mas os nós de computação não têm acesso à internet externa
- Não é possível usar
pip install,wgetnem conectar a repositórios externos do HuggingFace - Tudo o que o script precisar deve ser baixado e compilado com antecedência e preparado no diretório de armazenamento
- Os administradores fornecem a maior parte das bibliotecas e softwares por meio do sistema
module
- Não é possível usar
- Movimentação de dados: entrada e saída de dados são feitas pelo nó de login com
scpoursync- Como o cálculo em si pode ser muito rápido, o processo de extrair os resultados concluídos para a máquina local às vezes se torna o gargalo
- Limites e cotas: cada projeto recebe um determinado orçamento de tempo de CPU, e há limites rígidos para a quantidade de jobs simultâneos ou em espera por usuário
- É obrigatório definir um limite de wall-time rígido para todos os jobs
- Se o tempo solicitado for excedido mesmo que por 1 segundo, o agendador encerra o processo imediatamente
- Logging: depois do envio do job, não há saída ao vivo no terminal; todo
stdoutestderré redirecionado automaticamente para arquivos de log, comosim_12345.outesim_12345.err- Após a conclusão ou falha do job, o resultado e a depuração são verificados analisando esses arquivos de texto
- O status dos jobs enviados pode ser monitorado com
squeueoutail -f
Gerenciador de carga de trabalho SLURM
- Depois da aprovação da alocação de pesquisa e do login por SSH, o que aparece é um prompt de terminal Linux completamente comum
- Como milhares de pesquisadores usam o sistema ao mesmo tempo, executar scripts pesados diretamente no terminal pode derrubar o nó de login e render um e-mail de advertência dos administradores do sistema
- SLURM (Simple Linux Utility for Resource Management): software open source de escalonamento de jobs; ao especificar em um script Bash o hardware necessário, o ambiente de software e o código a executar, ele coloca o job na fila, executa quando o hardware fica disponível e depois libera os nós
- Principais diretivas
#SBATCH:--nodes: número de máquinas físicas necessárias--ntasks: número total de processos MPI (tasks) a serem criados; o SLURM cuida da distribuição entre os nós--time: limite rígido de tempo de relógio; se excedido, o job é encerrado imediatamente--account: ID do projeto do qual será descontado o tempo de CPU--qos: Quality of Service ou fila específica, por exemplo uma fila de debug que oferece acesso rápido, mas com limite curto de execução
Exemplo prático: orquestração de sweep com OpenFOAM
- Para prever downforce aerodinâmico com um modelo substituto de ML, era necessário executar 50 simulações de CFD (dinâmica dos fluidos computacional) de alta fidelidade para 50 malhas 3D diferentes
- Exemplo de script de job SLURM para um único caso CFD em OpenFOAM na partição de uso geral:
- Recursos especificados com opções como
--nodes=1,--ntasks=6,--time=00:30:00 - Carregamento do ambiente com
module load OpenFOAM/11-foss-2023a - Execução sequencial de
surfaceFeatureExtract,blockMesh,decomposePar,snappyHexMesh,potentialFoam,simpleFoamereconstructParcomsrun --mpi=pmix
- Recursos especificados com opções como
- Em vez de enviar manualmente os 50 casos, foram usadas dependências (dependency) do SLURM para encadear cada job após o anterior
- Com
sbatch --dependency=afterany:$PREV_JOB_ID, os 50 jobs foram colocados na fila em poucos segundos - Até a manhã seguinte, as 50 avaliações aerodinâmicas já tinham sido processadas e registradas em log, prontas para conversão em tensores para o treinamento de ML
- Com
Limites da paralelização: a Lei de Amdahl
- O motivo para solicitar apenas 6 tasks em uma simulação CFD, apesar de cada nó ter 112 núcleos, é a Lei de Amdahl
- Todo programa tem uma fração serial que não pode ser paralelizada, e o ganho teórico de velocidade é rigidamente limitado por essa fração
- Fórmula: S = 1 / ((1−p) + p/N), em que S é o ganho total de velocidade, p é a fração paralelizável e N é o número de núcleos do processador
- Mesmo que apenas 5% do código seja serial, o ganho teórico máximo continua sendo de 20x, ainda que se usem todos os núcleos do MareNostrum V
- Ao dividir tasks entre núcleos demais, aumenta o overhead de comunicação pela rede InfiniBand
- Se o envio de condições de contorno entre núcleos consome mais tempo do que o cálculo real, adicionar hardware pode até piorar a velocidade
- Em simulações de sistemas pequenos (N=100), o runtime aumenta depois de 16 threads; só em escalas grandes (N=10k+) o hardware fica totalmente produtivo
- Escrever código para supercomputadores é um exercício de gerenciar a relação entre computação e comunicação
Como obter acesso
- Apesar do custo do hardware, o acesso ao MareNostrum V é gratuito para pesquisadores, e o tempo de computação é tratado como um recurso científico financiado com recursos públicos
- Pesquisadores vinculados a instituições espanholas podem se candidatar pela Rede Espanhola de Supercomputação (RES)
- Pesquisadores de toda a Europa podem se candidatar pelos editais periódicos de acesso da EuroHPC Joint Undertaking
- A modalidade Development Access foi criada para projetos de portabilidade de código ou benchmarking de modelos de ML, o que a torna mais acessível para cientistas de dados
Ainda não há comentários.