Elastic Fabric Adapter para workloads de IA/ML e HPC no Amazon EC2 - Amazon Elastic Compute Cloud

Elastic Fabric Adapter para workloads de IA/ML e HPC no Amazon EC2

Um Elastic Fabric Adapter (EFA) é um dispositivo de rede que pode ser conectado à sua instância do Amazon EC2 para acelerar aplicativos de Inteligência Artificial (IA), Machine Learning (ML) e Computação de Alta Performance (HPC). O EFA permite atingir a performance da aplicação de um cluster cluster de IA/ML ou HPC on-premises, com a escalabilidade, a flexibilidade e a elasticidade fornecidas pela Nuvem AWS.

O EFA fornece latência mais baixa e mais consistente e maior throughput que o transporte de TCP tradicionalmente usado em sistemas HPC baseados em nuvem. Esse recurso aprimora a performance da comunicação entre instâncias, que é essencial para o dimensionamento de aplicações de IA/ML e HPC. Ele é otimizado para funcionar na infraestrutura de rede da AWS existente e pode ser dimensionado dependendo dos requisitos da aplicação.

O EFA se integra ao Libfabric 1.7.0 e posterior, e é compatível com a Nvidia Collective Communications Library (NCCL) para aplicativos de IA e ML, e com o Open MPI 4 e posterior e o Intel MPI 2019 Update 5 e posterior para aplicações HPC.

Conceitos básicos de EFA

Um dispositivo EFA pode ser conectado a uma instância EC2 de duas formas:

  1. Usando uma interface EFA tradicional, também chamada de EFA com ENA, que cria um dispositivo EFA e um dispositivo ENA.

  2. Usando uma interface exclusiva do EFA, que cria apenas o dispositivo do EFA.

O dispositivo EFA fornece recursos como desvio de sistema operacional integrado e controle de congestionamento mediante o protocolo Scalable Reliable Datagram (SRD). Os atributos do dispositivo EFA permitem uma funcionalidade de transporte confiável e de baixa latência que permite que a interface EFA forneça melhor desempenho de aplicações de HPC e ML no Amazon EC2. Já o dispositivo ENA oferece uma rede IP tradicional.

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

Tradicionalmente, as aplicações de IA/ML usam NCCL e as aplicações de HPC usam a Message Passing Interface (MPI) para estabelecer a interface com o transporte de rede do sistema. Na Nuvem AWS, isso significa que as aplicações fazem interface com NCCL ou 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 uma interface tradicional EFA (EFA com ENA) ou somente EFA, as aplicações de IA/ML usam NCCL e as aplicações de HPC usam MPI, para interagir diretamente 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 as aplicações de IA/ML e HPC sejam executadas 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 as interfaces de rede ENA, EFA e somente EFA

O Amazon EC2 fornece dois tipos de interfaces de rede:

  • As interfaces ENA fornecem todos os atributos tradicionais de rede IP e roteamento necessários para oferecer suporte à rede IP para uma VPC. Para mais informações, consulte Habilitar redes aperfeiçoadas com o ENA em instâncias do EC2.

  • As interfaces EFA (EFA com ENA) fornecem o dispositivo ENA para rede IP e o dispositivo EFA para comunicação de baixa latência e alto throughput.

  • As interfaces exclusivamente EFA são compatíveis apenas com os recursos do dispositivo EFA, sem o dispositivo ENA para redes IP tradicionais.

A tabela a seguir apresenta uma comparação das interfaces de rede ENA, EFA e exclusivamente EFA.

ENA EFA (EFA com ENA) Exclusivamente EFA
Compatível com a funcionalidade de rede IP Sim Sim Não
Podem ser atribuídos endereços IPv4 ou IPv6 Sim Sim Não
Pode ser usado como interface de rede primária, por exemplo Sim Sim Não
Conta para o limite de anexos do ENI, por exemplo Sim Sim Sim
Compatível com o tipo de instância Compatível com todos os tipos de instâncias baseadas em Nitro Tipos de instâncias compatíveis Tipos de instâncias compatíveis
Nomeação de parâmetro nas APIs do EC2 interface efa efa-only
Nomeação de campo no console do EC2 Nenhuma seleção EFA com ENA Exclusivamente EFA

Interfaces e bibliotecas compatíveis

Os EFAs oferecem suporte às seguintes interfaces e bibliotecas:

  • Open MPI 4 e posterior

    nota

    O Open MPI 4.0 ou mais recente é preferível para instâncias baseadas em Graviton

  • Intel MPI 2019 Update 5 e posterior

  • NVIDIA Collective Communications Library (NCCL) 2.4.2 e posterior

  • AWS Neuron SDK versão 2.3 e posterior

Tipos de instâncias compatíveis

Os tipos de instância a seguir são compatíveis com EFAs:

Nitro v5
  • Uso geral: m8g.24xlarge | m8g.48xlarge | m8g.metal-24xl | m8g.metal-48xl

  • Otimizado para computação: c7gn.16xlarge | c7gn.metal | c8g.24xlarge | c8g.48xlarge | c8g.metal-24xl | c8g.metal-48xl

  • Memória otimizada: r8g.24xlarge | r8g.48xlarge | r8g.metal-24xl | r8g.metal-48xl | x8g.24xlarge | x8g.48xlarge | x8g.metal-24xl | x8g.metal-48xl

  • Computação de alta performance: hpc7g.4xlarge | hpc7g.8xlarge | hpc7g.16xlarge

Nitro v4
  • Uso geral: m6a.48xlarge | m6a.metal | m6i.32xlarge | m6i.metal | m6id.32xlarge | m6id.metal | m6idn.32xlarge | m6idn.metal | m6in.32xlarge metal | m7gd.16xlarge | m7gd.metal | m7i.48xlarge

  • Otimizada para computação: c6a.48xlarge | c6a.metal | c6gn.16xlarge | c6i.32xlarge | c6i.metal | c6id.32xlarge | c6id.metal | c6in.32xlarge .16xlarge | c7gd.metal | c7i.48xlarge

  • Otimizada para memória: r6a.48xlarge | r6a.metal | r6i.32xlarge | r6i.metal | r6idn.32xlarge | r6idn.metal | r6in.32xlarge | r6in.metal | r6id.32xlarge metal | r7gd.16xlarge | r7gd.metal | r7i.48xlarge | r7i.metal-48xl | r7iz.32xlarge | r7iz.metal-32xl | u7i-12tb.224xlarge 2idn.32xlarge | x2idn.metal | x2idn.32xlarge

  • Armazenamento otimizado: i4g.16xlarge | i4i.32xlarge | i4i.metal | im4gn.16xlarge

  • Computação acelerada: g6.8xlarge | g6.12xlarge | g6.16xlarge | g6.24xlarge | g6.48xlarge | g6e.8xlarge | g6e.12xlarge | g6e.16xlarge | g6e.24xlarge | g6e.48xlarge | gr6.8xlarge | p5.48xlarge | p5e.48xlarge | trn1.32xlarge trn1n.32xlarge

  • Computação de alta performance: hpc6a.48xlarge | hpc6id.32xlarge | hpc7a.12xlarge | hpc7a.24xlarge | hpc7a.48xlarge | hpc7a.96xlarge

Nitro v3
  • Uso geral: m5dn.24xlarge | m5dn.metal | m5n.24xlarge | m5n.metal | m5zn.12xlarge | m5zn.metal

  • Otimizado para computação: c5n.9xlarge | c5n.18xlarge | c5n.metal

  • Memória otimizada: r5dn.24xlarge | r5dn.metal | r5n.24xlarge | r5n.metal | x2iezn.12xlarge | x2iezn.metal

  • Otimizada para armazenamento: i3en.12xlarge | i3en.24xlarge

  • Computação acelerada: dl1.24xlarge | dl2q.24xlarge | g4dn.8xlarge | g4dn.12xlarge | g4dn.16xlarge | g4dn.metal | g5.8xlarge | g5.12xlarge | g5.16xlarge 24xlarge | p4de.24xlarge

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
RHEL 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:

nota

O tráfego EFA se refere ao tráfego transmitido pelo dispositivo EFA de uma interface EFA (EFA com ENA) ou exclusivamente EFA.

  • 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 EFA não pode cruzar zonas de disponibilidade ou VPCs. Isso não se aplica ao tráfego IP normal do dispositivo ENA de uma interface EFA.

  • O tráfego EFA não é roteável. O tráfego IP normal do dispositivo ENA de uma interface EFA permanece roteável.

  • EFA não é compatível com o AWS Outposts

  • O dispositivo EFA de uma interface EFA (EFA com ENA) é compatível com instâncias do Windows somente para AWS Cloud Digital Interface aplicações baseadas no Kit de Desenvolvimento de Software (AWS CDISDK). Ao anexar uma interface EFA (EFA com ENA) a uma instância do Windows para aplicações não baseadas no SDK do CDI, ela funcionará como uma interface ENA, sem os recursos adicionais do dispositivo EFA. A interface exclusiva do EFA não é compatível com aplicações AWS CDI baseadas em Windows ou Linux. Para obter mais informações, consulte o Guia do Usuário do AWS Cloud Digital Interface Kit de Desenvolvimento de Software (AWS CDI SDK).

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.