Elastic Fabric Adapter
O Elastic Fabric Adapter (EFA) é um dispositivo de rede que é possível anexar à instância do Amazon EC2 para acelerar as aplicações de machine learning e de Computação de Alta Performance (HPC). O EFA permite que você atinja a performance da aplicação de um cluster HPC on-premises, com a escalabilidade, a flexibilidade e a elasticidade fornecidas pela Nuvem AWS.
Os EFAs fornecem latência mais baixa e mais consistente e maior throughput que o transporte de TCP tradicionalmente usado em sistemas HPC baseados em nuvem. Ele aprimora a performance da comunicação entre instâncias, que é essencial para o dimensionamento de aplicações de machine learning e de HPC. Ele é otimizado para funcionar na infraestrutura de rede da AWS existente e pode ser dimensionado dependendo dos requisitos da aplicação.
Os EFAs se integram ao Libfabric 1.7.0 e versões posteriores, sendo compatíveis com Open MPI 5 e versões posteriores e Intel MPI 2019 Update 5 e versões posteriores para aplicações de HPC, além de Nvidia Collective Communications Library (NCCL) para aplicativos de machine learning.
nota
Os recursos de desvio de sistema operacional do EFAs não são compatíveis em instâncias do Windows. Se você anexar um EFA a uma instância do Windows, a instância funcionará como um Elastic Network Adapter, sem os recursos de EFA adicionais.
Tópicos
- Conceitos básicos de EFA
- Interfaces e bibliotecas compatíveis
- Tipos de instâncias compatíveis
- Sistemas operacionais compatíveis
- Limitações de EFA
- Preços do EFA
- Começar a usar instâncias P5 e EFA
- Conceitos básicos do EFA e MPI
- Conceitos básicos do EFA e NCCL
- Trabalhar com EFA
- Monitorar um EFA
- Verificar o instalador EFA usando uma soma de verificação
Conceitos básicos de EFA
Um EFA é um Elastic Network Adapter (ENA) com recursos adicionais. Ele fornece todas as funcionalidades de um ENA, com uma funcionalidade adicional de desvio de sistema operacional. O desvio de sistema operacional é um modelo de acesso que permite que as aplicações de machine learning e de HPC se comuniquem diretamente com o hardware da interface de rede para fornecer funcionalidade de transporte confiável e de baixa latência.
Tradicionalmente, as aplicações HPC usam a Message Passing Interface (MPI) para fazer interface com o transporte de rede do sistema. Na Nuvem AWS, isso significa que as aplicações fazem interface com a MPI, que usa a pilha TCP/IP do sistema operacional e o driver de dispositivo ENA para habilitar a comunicação de rede entre as instâncias.
Com um EFA, aplicações HPC usam a MPI ou a NCCL para fazer interface com a API Libfabric. A API Libfabric ignora o kernel do sistema operacional e se comunica diretamente com o dispositivo EFA para colocar pacotes na rede. Isso reduz a sobrecarga e permite que a aplicação HPC seja executado com mais eficiência.
nota
O libfabric é um componente central do framework OpenFabrics Interfaces (OFI), que define e exporta a API do espaço do usuário do OFI. Para obter mais informações, consulte o site Libfabric OpenFabrics
Diferenças entre EFAs e RIs
Elastic Network Adapters (ENAs) fornecem recursos tradicionais de rede IP que são necessários para permitir as redes da VPC. Os EFAs fornecem todos os mesmos recursos de rede IP tradicionais que os ENAs e também oferecem suporte a recursos de desvio do sistema operacional. O desvio de sistema operacional permite que as aplicações de machine learning e de HPC ignorem o kernel do sistema operacional e se comuniquem diretamente com o dispositivo EFA.
Interfaces e bibliotecas compatíveis
Os EFAs oferecem suporte às seguintes interfaces e bibliotecas:
-
Open MPI 5 e posterior
-
Open MPI 4.0 ou mais recente é o preferencial para o Graviton
-
Intel MPI 2019 Update 5 e posterior
-
NVIDIA Collective Communications Library (NCCL) 2.4.2 e posterior
Tipos de instâncias compatíveis
Os tipos de instância a seguir são compatíveis com EFAs:
-
Uso geral:
m5dn.24xlarge
|m5dn.metal
|m5n.24xlarge
|m5n.metal
|m5zn.12xlarge
|m5zn.metal
|m6a.48xlarge
|m6a.metal
|m6i.32xlarge
|m6i.metal
|m6id.32xlarge
|m6id.metal
|m6idn.32xlarge
|m6idn.metal
|m6in.32xlarge
|m6in.metal
|m7a.48xlarge
|m7a.metal-48xl
|m7g.16xlarge
|m7g.metal
|m7gd.16xlarge
|m7gd.metal
|m7i.48xlarge
|m7i.metal-48xl
-
Otimizada para computação:
c5n.9xlarge
|c5n.18xlarge
|c5n.metal
|c6a.48xlarge
|c6a.metal
|c6gn.16xlarge
|c6i.32xlarge
|c6i.metal
|c6id.32xlarge
|c6id.metal
|c6in.32xlarge
|c6in.metal
|c7a.48xlarge
|c7a.metal-48xl
|c7g.16xlarge
|c7g.metal
|c7gd.16xlarge
|c7gd.metal
|c7gn.16xlarge
|c7gn.metal
|c7i.48xlarge
|c7i.metal-48xl
-
Otimizada para memória:
r5dn.24xlarge
|r5dn.metal
|r5n.24xlarge
|r5n.metal
|r6a.48xlarge
|r6a.metal
|r6i.32xlarge
|r6i.metal
|r6idn.32xlarge
|r6idn.metal
|r6in.32xlarge
|r6in.metal
|r6id.32xlarge
|r6id.metal
|r7a.48xlarge
|r7a.metal-48xl
|r7g.16xlarge
|r7g.metal
|r7gd.16xlarge
|r7gd.metal
|r7i.48xlarge
|r7i.metal-48xl
|r7iz.32xlarge
|r7iz.metal-32xl
|r8g.24xlarge
|r8g.48xlarge
|r8g.metal-24xl
|r8g.metal-48xl
|u7i-12tb.224xlarge
|u7in-16tb.224xlarge
|u7in-24tb.224xlarge
|u7in-32tb.224xlarge
|x2idn.32xlarge
|x2idn.metal
|x2iedn.32xlarge
|x2iedn.metal
|x2iezn.12xlarge
|x2iezn.metal
-
Otimizadas para armazenamento:
i3en.12xlarge
|i3en.24xlarge
|i3en.metal
|i4g.16xlarge
|i4i.32xlarge
|i4i.metal
|im4gn.16xlarge
-
Com computação acelerada:
dl1.24xlarge
|dl2q.24xlarge
|g4dn.8xlarge
|g4dn.12xlarge
|g4dn.16xlarge
|g4dn.metal
|g5.8xlarge
|g5.12xlarge
|g5.16xlarge
|g5.24xlarge
|g5.48xlarge
|g6.8xlarge
|g6.12xlarge
|g6.16xlarge
|g6.24xlarge
|g6.48xlarge
|gr6.8xlarge
|inf1.24xlarge
|p3dn.24xlarge
|p4d.24xlarge
|p4de.24xlarge
|p5.48xlarge
|trn1.32xlarge
|trn1n.32xlarge
|vt1.24xlarge
-
Computação de alta performance:
hpc6a.48xlarge
|hpc6id.32xlarge
|hpc7a.12xlarge
|hpc7a.24xlarge
|hpc7a.48xlarge
|hpc7a.96xlarge
|hpc7g.4xlarge
|hpc7g.8xlarge
|hpc7g.16xlarge
Para ver os tipos de instância disponíveis com suporte a EFAs em uma região específica
Os tipos de instância disponíveis variam de acordo com a região. Para ver os tipos de instâncias disponíveis com suporte a EFAs em uma região, use o comando describe-instance-types com o parâmetro --region
. Inclua o parâmetro --filters
para definir o escopo dos resultados para os tipos de instância com suporte a EFA e o parâmetro --query
para definir o escopo da saída para o valor de InstanceType
.
aws ec2 describe-instance-types --region
us-east-1
--filters Name=network-info.efa-supported,Values=true --query "InstanceTypes[*].[InstanceType]" --output text | sort
Sistemas operacionais compatíveis
O suporte ao sistema operacional varia dependendo do tipo de processador. A tabela a seguir mostra os sistemas operacionais compatíveis.
Sistema operacional | Tipos de instância Intel/AMD (x86_64 ) |
Tipos de instância AWS Graviton (arm64 ) |
---|---|---|
Amazon Linux 2023 | ✓ | ✓ |
Amazon Linux 2 | ✓ | ✓ |
CentOS 7 | ✓ | |
RHEL 7, 8 e 9 | ✓ | ✓ |
Debian 10 e 11 | ✓ | ✓ |
Rocky Linux 8 e 9 | ✓ | ✓ |
Ubuntu 20.04, 22.04 e 24.04 | ✓ | ✓ |
SUSE Linux Enterprise 15 SP2 e posterior | ✓ | ✓ |
OpenSUSE Leap 15.5 e posterior | ✓ |
nota
O Ubuntu 20.04 é compatível com suporte direto ponto a ponto quando usado com instâncias dl1.24xlarge
.
Limitações de EFA
Os EFAs têm as seguintes limitações:
-
Todos os tipos de instância P4d e P5 são compatíveis com Remote Direct Memory Access (RDMA) de GPUDirect NVIDIA.
-
Atualmente, o tráfego EFA entre instâncias P4d/P4de/DL1 e outros tipos de instância não é compatível.
-
Os tipos de instância compatíveis com várias placas de rede podem ser configurados com um EFA por placa de rede. Todos os outros tipos de instância compatíveis oferecem suporte a apenas um EFA por instância.
-
Instâncias dedicadas
c7g.16xlarge
,m7g.16xlarge
, er7g.16xlarge
, e hosts dedicados não são compatíveis quando um EFA está anexado. -
O tráfego de OS-bypass do EFA não pode cruzar zonas de disponibilidade, VPCs ou contas da AWS. Em outras palavras, o tráfego de OS-bypass do EFA não pode fluir de uma zona de disponibilidade, de uma VPC (com ou sem uma conexão de emparelhamento da VPC) ou de uma conta da AWS para outra. Isso não se aplica ao tráfego IP normal do EFA.
-
O tráfego de OS-bypass do ENA não pode ser enviado nas sub-redes de uma zona local.
-
EFA O tráfego de desvio do sistema operacional não é roteável. O tráfego IP normal do EFA permanece roteável.
-
O EFA deve ser um membro de um grupo de segurança que permita todo o tráfego de entrada e saída de e para o próprio grupo de segurança.
-
O EFA não é compatível com as instâncias do Windows.
-
EFA não é compatível com o AWS Outposts
Preços do EFA
O EFA está disponível como um recurso de rede opcional do Amazon EC2 que pode ser habilitado em qualquer instância compatível sem nenhum custo adicional.