Elastic Fabric Adapter para cargas de trabajo de HPC y ML en Amazon EC2 - Amazon Elastic Compute Cloud

Elastic Fabric Adapter para cargas de trabajo de HPC y ML en Amazon EC2

Elastic Fabric Adapter (EFA) es un dispositivo de red que puede adjuntar a su instancia de Amazon EC2 para acelerar las aplicaciones de informática de alto rendimiento (HPC) y de machine learning. Un EFA le permite obtener el rendimiento de la aplicación de un clúster de HPC en las instalaciones, con la escalabilidad, la flexibilidad y la elasticidad que proporciona la nube de AWS.

Los adaptadores elásticos de estructura (EFA) proporcionan una latencia menor y más constante y un rendimiento superior que el transporte TCP que se utiliza tradicionalmente en los sistemas HPC basados en la nube. Mejora el rendimiento de una comunicación entre instancias que es crítico para el escalado de aplicaciones HCP y de machine learning. Está optimizado para trabajar en la infraestructura de red de AWS existente y se puede escalar en función de los requisitos de aplicaciones.

Los EFA se integran con Libfabric 1.7.0 y versiones posteriores, y son compatibles con Open MPI 5 y versiones posteriores, con la actualización 5 de Intel MPI 2019 para las aplicaciones HPC y con Nvidia Collective Communications Library (NCCL) para las aplicaciones de machine learning.

nota

Las capacidades de omisión del sistema operativo de EFAs no son compatibles en las instancias de Windows. Si adjunta un EFA a una instancia de Windows, la instancia funciona como Elastic Network Adapter, sin las capacidades de EFA añadidas.

Conceptos básicos de EFA

Un EFA es un Elastic Network Adapter (ENA) con capacidades añadidas. Proporciona toda la funcionalidad de un ENA, con funcionalidad adicional de omisión del sistema operativo. La omisión del sistema operativo es un modelo de acceso que permite a las aplicaciones HPC y de machine learning comunicarse directamente con el hardware de interfaz de red para proporcionar una funcionalidad de transporte de confianza y de baja latencia.

Contrastando una pila de software de HPC tradicional con una que utiliza un EFA.

Tradicionalmente, las aplicaciones HPC utilizan Message Passing Interface (MPI) para interaccionar con el transporte de red del sistema. En la nube de AWS, esto ha significado que las aplicaciones interaccionan con MPI que, a continuación, utiliza la pila TCP/IP del sistema y el controlador de dispositivo de ENA para permitir la comunicación de red entre instancias.

Con un EFA, las aplicaciones HPC utilizan MPI o NCCL para interaccionar con la API de Libfabric. La API Libfabric omite el kernel del sistema operativo y se comunica directamente con el dispositivo EFA para poner paquetes en la red. Esto reduce la sobrecarga y permite que la aplicación HPC se ejecute de forma más eficiente.

nota

Libfabric es un componente principal del marco OpenFabrics Interfaces (OFI), que define y exporta la API de espacio del usuario de OFI. Para obtener más información consulte el sitio web de Libfabric OpenFabrics.

Diferencias entre los EFAs e instancias reservadas

Los Elastic Network Adapters (ENA) proporcionan características de redes de IP tradicionales que son requeridas para admitir las redes de VPC. Los EFA proporcionan las mismas características de redes de IP tradicionales que los ENA y también son compatibles con capacidades de omisión del sistema operativo. La omisión del sistema operativo habilita a las aplicaciones HPC y de machine learning para omitir el kernel del sistema operativo y comunicarse directamente con el dispositivo de EFA.

Interfaces y bibliotecas admitidas

Los EFA admiten las siguientes interfaces y bibliotecas:

  • Open MPI 5 y versiones posteriores

  • Se prefiere Open MPI 4.0 o una versión más reciente para Graviton

  • Intel MPI 2019 Actualización 5 y versiones posteriores

  • NVIDIA Collective Communications Library (NCCL) 2.4.2 y posterior

Tipos de instancias admitidos

Los tipos de instancia que se muestran a continuación, admiten EFAs:

  • De uso general: 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 | m8g.24xlarge | m8g.48xlarge | m8g.metal-24xl | m8g.metal-48xl

  • Optimizadas para la computación: 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 | c8g.24xlarge | c8g.48xlarge | c8g.metal-24xl | c8g.metal-48xl

  • Optimizadas para memoria: 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 | x8g.24xlarge | x8g.48xlarge | x8g.metal-24xl | x8g.metal-48xl

  • Optimizadas para almacenamiento: i3en.12xlarge | i3en.24xlarge | i3en.metal | i4g.16xlarge | i4i.32xlarge | i4i.metal | im4gn.16xlarge

  • Computación 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 | g6e.8xlarge | g6e.12xlarge | g6e.16xlarge | g6e.24xlarge | g6e.48xlarge | gr6.8xlarge | inf1.24xlarge | p3dn.24xlarge | p4d.24xlarge | p4de.24xlarge | p5.48xlarge | p5e.48xlarge | trn1.32xlarge | trn1n.32xlarge | vt1.24xlarge

  • De computación de alto rendimiento: hpc6a.48xlarge | hpc6id.32xlarge | hpc7a.12xlarge | hpc7a.24xlarge | hpc7a.48xlarge | hpc7a.96xlarge | hpc7g.4xlarge | hpc7g.8xlarge | hpc7g.16xlarge

Para ver los tipos de instancias disponibles que son compatibles con los EFA en una región específica

Los tipos de instancia disponibles varían según la región. Para ver los tipos de instancias disponibles que son compatibles con los EFA en una región, utilice el comando describe-instance-types con el parámetro --region. Incluya el parámetro --filters para limitar los resultados a los tipos de instancia que admiten EFA y el parámetro --query para limitar la salida al 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 operativos compatibles

La compatibilidad del sistema operativo varía según el tipo de procesador. En la tabla siguiente se muestran los sistemas operativos compatibles.

Sistema operativo Tipos de instancias Intel/AMD (x86_64) Tipos de instancia de AWS Graviton (arm64)
Amazon Linux 2023
Amazon Linux 2
RHEL 8 y 9
Debian 10 y 11
Rocky Linux 8 y 9
Ubuntu 20.04, 22.04, and 24.04
SUSE Linux Enterprise 15 SP2 y posteriores
OpenSUSE Leap 15.5 y versiones posteriores
nota

Ubuntu 20.04 admite el soporte directo entre pares cuando se usa con instancias dl1.24xlarge.

Limitaciones de EFA

Los EFA presentan las siguientes limitaciones:

  • Todos los tipos de instancias P4d y P5 admiten NVIDIA GPUDirect Remote Direct Memory Access (RDMA).

  • Actualmente, no se admite el tráfico EFA entre las instancias P4d/P4de/DL1 y otros tipos de instancias.

  • Los tipos de instancias que admiten varias tarjetas de red se pueden configurar con un EFA por tarjeta de red. Todos los demás tipos de instancia compatibles admiten solo un EFA por instancia.

  • Los hosts dedicados y las instancias dedicadas de c7g.16xlarge, m7g.16xlarge y r7g.16xlarge no son compatibles cuando se adjunta un EFA.

  • El tráfico de omisión de sistema operativo de EFA no puede cruzar zonas de disponibilidad ni VPC. En otras palabras, el tráfico de omisión del sistema operativo de EFA no puede fluir de una zona de disponibilidad o de una VPC (con o sin una conexión de emparejamiento de VPC) a otra. Esto no se aplica al tráfico de IP desde EFA.

  • El tráfico de omisión de sistema operativo de EFA no se puede enviar a través de subredes en una zona local.

  • El tráfico de omisión de sistema operativo de EFA no es enrutable. El tráfico de IP normal desde el EFA sigue siendo enrutable.

  • El EFA debe formar parte de un grupo de seguridad que permita todo el tráfico entrante y saliente hacia y desde el propio grupo de seguridad.

  • No se admite EFA en las instancias de Windows.

  • EFA no es compatible con AWS Outposts.

Precios de EFA

EFA está disponible como una función de red opcional de Amazon EC2 que puede habilitar en cualquier instancia compatible sin costo adicional.