Computação de alto desempenho (HPC) no Azure
Introdução ao HPC
A computação de alto desempenho (HPC), também chamada de "big compute", usa um grande número de computadores baseados em CPU ou GPU para resolver tarefas matemáticas complexas.
Vários setores utilizam o HPC para resolver alguns dos problemas mais difíceis que enfrentam. Estes incluem cargas de trabalho como:
- Genómica
- Simulações do setor petrolífero
- Finance
- Design de semicondutores
- Engenharia
- Modelos de previsão meteorológica
De que forma é o HPC diferente na cloud?
Uma das principais diferenças entre um sistema HPC local e um na nuvem é a capacidade de os recursos serem dinamicamente adicionados e removidos conforme necessário. O dimensionamento dinâmico remove a capacidade de computação como estrangulamento e permite que os clientes dimensionem a infraestrutura para corresponder aos requisitos das tarefas.
Os artigos seguintes fornecem mais detalhes sobre esta capacidade de dimensionamento dinâmico.
- Big Compute Architecture Style (Estilo de Arquitetura de Macrocomputação)
- Autoscaling best practices (Melhores práticas de dimensionamento automático)
Lista de verificação de implementação
Quando quiser implementar a sua própria solução de HPC no Azure, certifique-se de que revê os seguintes tópicos:
- Escolha a arquitetura adequada com base nos seus requisitos
- Saiba quais são as opções de computação certas para a sua carga de trabalho
- Identifique a solução de armazenamento certa que satisfaz as suas necessidades
- Decida como quer gerir todos os seus recursos
- Otimize a sua aplicação para a cloud
- Proteja a sua infraestrutura
Infraestrutura
Existem muitos componentes da infraestrutura que são necessários para construir um sistema de HPC. A computação, o armazenamento e a rede fornecem os componentes subjacentes, independentemente da forma como você escolhe gerenciar suas cargas de trabalho de HPC.
Exemplo de arquiteturas de HPC
Há muitas maneiras diferentes de projetar e implementar sua arquitetura HPC no Azure. As aplicações de HPC podem dimensionar para milhares de núcleos de computação, expandir os clusters no local ou executar como solução 100% nativa na cloud.
Os seguintes cenários descrevem algumas das formas comuns de criar soluções de HPC.
Computação
O Azure oferece uma variedade de tamanhos otimizados para cargas de trabalho intensivas de GPU de CPU & .
Máquinas virtuais baseadas em CPU
Máquinas virtuais com utilização de GPU
As VMs de série N utilizam GPUs NVIDIA concebidas para aplicações com utilização intensiva de computação ou gráficos, incluindo aprendizagem por inteligência artificial (IA) e visualização.
Armazenamento
As cargas de trabalho de grande escala do Batch e de HPC têm requisitos de acesso e armazenamento de dados que excedem as capacidades dos sistemas de ficheiros de cloud tradicionais. Há muitas soluções que gerenciam as necessidades de velocidade e capacidade dos aplicativos HPC no Azure:
- O Avere vFXT, que permite um armazenamento de dados mais rápido e acessível para computação de alto desempenho na periferia
- Azure NetApp Files
- Máquinas Virtuais Otimizadas para Armazenamento
- Armazenamento de blobs, tabelas e filas
- Armazenamento de ficheiros SMB do Azure
Para obter mais informações comparando o Lustre, o GlusterFS e o BeeGFS no Azure, consulte o e-book Sistemas de Arquivos Paralelos no Azure e o blog do Lustre no Azure.
Rede
As VMs H16r, H16mr, A8 e A9 podem ligar-se a uma rede RDMA de back-end de débito elevado. Essa rede pode melhorar o desempenho de aplicativos paralelos fortemente acoplados executados sob a interface Microsoft Message Passing, mais conhecida como MPI ou Intel MPI.
Gestão
Faça você mesmo
A criação de um sistema HPC a partir do zero no Azure oferece uma quantidade significativa de flexibilidade, mas muitas vezes é muito intensiva em termos de manutenção.
- Configure seu próprio ambiente de cluster em máquinas virtuais do Azure ou Conjuntos de Dimensionamento de Máquina Virtual.
- Utilize modelos do Azure Resource Manager para implementar os principais gestores de cargas de trabalho, infraestrutura e aplicações.
- Escolha os tamanhos de VM HPC e GPU que incluem hardware especializado e ligações de rede para cargas de trabalho MPI ou GPU.
- Adicione armazenamento de alto desempenho para cargas de trabalho intensivas de E/S.
Rajada híbrida e de cloud
Se você tiver um sistema HPC local existente que gostaria de conectar ao Azure, há vários recursos para ajudá-lo a começar.
Em primeiro lugar, veja o artigo Options for connecting an on-premises network to Azure (Opções para ligar uma rede no local ao Azure) na documentação. A partir daí, você pode encontrar informações adicionais sobre essas opções de conectividade:
Quando a conectividade de rede tiver sido estabelecida com segurança, pode começar a utilizar recursos de computação na cloud a pedido com as capacidades de rajada do seu gestor de cargas de trabalho existente.
Soluções do Marketplace
Há muitos gerenciadores de carga de trabalho oferecidos no Azure Marketplace.
- HPC baseado no RogueWave CentOS
- SUSE Linux Enterprise Server para HPC
- TIBCO DataSynapse GridServer
- VM de Ciência de Dados do Azure para Windows e Linux
- D3View
- UberCloud
Azure Batch
O Azure Batch é um serviço de plataforma para executar aplicativos paralelos e HPC em grande escala de forma eficiente na nuvem. O Azure Batch agenda trabalho de computação intensiva para ser executado num conjunto gerido de máquinas virtuais e pode dimensionar automaticamente recursos de computação para satisfazer as necessidades das suas tarefas.
Os fornecedores ou programadores de SaaS podem utilizar os SDKs e as ferramentas do Batch para integrar aplicações de HPC ou cargas de trabalho de contentor no Azure, preparar dados para o Azure e criar pipelines de execução de tarefas.
No Azure Batch, todos os serviços estão sendo executados na nuvem, a imagem abaixo mostra como a arquitetura se parece com o Azure Batch, tendo as configurações de escalabilidade e agendamento de trabalho em execução na nuvem enquanto os resultados e relatórios podem ser enviados para seu ambiente local.
Azure CycleCloud
O Azure CycleCloud é a forma mais simples de gerir cargas de trabalho de HPC com qualquer agendador (como o Slurm, Grid Engine, HPC Pack, HTCondor, LSF, PBS Pro ou Symphony) no Azure
O CycleCloud permite-lhe:
- Implementar clusters completos e outros recursos, incluindo o agendador, VMs de computação, armazenamento, rede e cache
- Orquestrar fluxos de trabalho de tarefas, dados e cloud
- Dar aos administradores controlo total sobre que utilizadores podem executar tarefas, bem como onde e por que custo podem fazê-lo
- Personalizar e otimizar clusters através de funcionalidades avançadas de política e governação, incluindo controlos de custos, integração do Active Directory, monitorização e relatórios
- Utilizar o seu agendador de tarefas e aplicações atuais sem modificações
- Tirar partido do dimensionamento automático incorporado e de arquiteturas de referência testadas exaustivamente para um vasto leque de cargas de trabalho de HPC e indústrias
Modelo híbrido/cloud bursting
Neste diagrama de exemplo híbrido, podemos ver claramente como esses serviços são distribuídos entre a nuvem e o ambiente local. Ter a oportunidade de executar trabalhos em ambas as cargas de trabalho.
Modelo nativo da nuvem
O diagrama de exemplo de modelo nativo da nuvem abaixo mostra como a carga de trabalho na nuvem lidará com tudo enquanto ainda conserva a conexão com o ambiente local.
Gráfico comparativo
Caraterística | Azure Batch | Azure CycleCloud |
---|---|---|
Scheduler | APIs e ferramentas em lote e scripts de linha de comando no portal do Azure (Cloud Native). | Use agendadores HPC padrão, como Slurm, PBS Pro, LSF, Grid Engine e HTCondor, ou estenda os plug-ins de dimensionamento automático do CycleCloud para trabalhar com seu próprio agendador. |
Recursos de computação | Software as a Service Nodes – Plataforma como Serviço | Software de plataforma como serviço – Plataforma como serviço |
Ferramentas de monitorização | Azure Monitor | Azure Monitor, Grafana |
Personalização | Pools de imagens personalizadas, imagens de terceiros, acesso à API em lote. | Use a abrangente API RESTful para personalizar e estender a funcionalidade, implantar seu próprio agendador e oferecer suporte aos gerenciadores de carga de trabalho existentes |
Integração | Synapse Pipelines, Azure Data Factory, Azure CLI | CLI integrada para Windows e Linux |
Tipo de utilizador | Programadores | Administradores e utilizadores de HPC clássica |
Tipo de Trabalho | Lote, Fluxos de trabalho | Firmemente acoplado (Message Passing Interface/MPI). |
Suporte do Windows | Sim | Varia, dependendo da escolha do agendador |
Gestores de cargas de trabalho
Seguem-se exemplos de gestores de cargas de trabalho e clusters que podem ser executados na infraestrutura do Azure. Crie clusters autónomos em VMs do Azure ou expanda para VMs do Azure a partir de um cluster no local.
- Alces Flight Compute
- TIBCO DataSynapse GridServer
- Bright Cluster Manager
- IBM Spectrum Symphony e Symphony LSF
- Altair PBS Funciona
- Rescale
- Motor Altair Grid
- Microsoft HPC Pack
Contentores
Também pode utilizar contentores para gerir algumas cargas de trabalho de HPC. Serviços como o Azure Kubernetes Service (AKS) facilitam a implementação de um cluster do Kubernetes gerido no Azure.
Gestão de custos
Tem à sua disposição várias formas de gerir os custos associados ao HPC no Azure. Certifique-se de que reviu as opções de compra do Azure para encontrar o método mais adequado para a sua organização.
Segurança
Para obter uma descrição geral das melhores práticas de segurança no Azure, reveja a Documentação de Segurança do Azure.
Além das configurações de rede disponíveis na seção Cloud Bursting , você pode implementar uma configuração hub/spoke para isolar seus recursos de computação:
Aplicações de HPC
Execute aplicações de HPC comerciais ou personalizadas no Azure. Vários exemplos nesta secção foram submetidos a testes de referência para dimensionar de forma eficiente com VMs ou núcleos de computação adicionais. Visite o Azure Marketplace para obter soluções prontas a implementar.
Nota
Entre em contacto com o fornecedor de qualquer aplicação comercial para saber quais são as restrições de licenciamento (ou outras restrições) de execução na cloud. Nem todos os fornecedores oferecem licenciamento pay as you go. Poderá precisar de um servidor de licenciamento na cloud para a sua solução ou ligar-se a um servidor de licenças no local.
Aplicações de engenharia
Gráficos e composição
- Autodesk Maya, 3DS Max e Arnold no Azure Batch
IA e aprendizagem profunda
Fornecedores de MPI
Visualização remota
Execute máquinas virtuais alimentadas por GPU no Azure na mesma região da saída HPC para obter a menor latência, acesso e visualização remota por meio da Área de Trabalho Virtual do Azure, Citrix ou VMware Horizon.
- Tamanhos de máquinas virtuais com otimização da GPU
- Configurar a aceleração de GPU para a Área de Trabalho Virtual do Azure
Referências do Desempenho
Histórias de clientes
Há muitos clientes que tiveram grande sucesso usando o Azure para suas cargas de trabalho de HPC. Abaixo, pode ver alguns dos casos práticos destes clientes:
- AXA Global P&C |
- Axioma
- d3View
- EFS
- Hymans Robertson
- MetLife
- Microsoft Research
- Milliman
- Mitsubishi UFJ Securities International
- NeuroInitiative
- Schlumberger
- Towers Watson
Outras informações importantes
- Certifique-se de que a sua quota de vCPU foi aumentada antes de tentar executar cargas de trabalho em grande escala.
Próximos passos
Para obter os anúncios mais recentes, consulte os seguintes recursos:
Exemplos do Microsoft Batch
Estes tutoriais fornecerão detalhes sobre a execução de aplicativos no Microsoft Batch:
- Get started developing with Batch (Começar a desenvolver com o Batch)
- Use Azure Batch code samples (Utilizar exemplos de código do Azure Batch)
- Use low-priority VMs with Batch (Utilizar VMs de baixa prioridade com o Batch)
- Run containerized HPC workloads with Batch Shipyard (Executar cargas de trabalho de HPC em contentores com o Batch Shipyard)
- Run on-demand Spark jobs on Batch (Executar tarefas do Spark a pedido no Batch)
- Use compute-intensive VMs in Batch pools (Utilizar VMs de computação intensiva em conjuntos do Batch)