Elastic Fabric Adapter - Amazon Elastic Compute Cloud

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.

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.

O contraste de uma pilha de software HPC tradicional com uma que usa EFA.

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, e r7g.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.