Elastic Fabric Adapter - Amazon Elastic Compute Cloud

Elastic Fabric Adapter

Elastic Fabric Adapter(EFA)는 Amazon EC2 인스턴스에 연결하여 고성능 컴퓨팅(HPC) 및 기계 학습 애플리케이션의 속도를 높일 수 있는 네트워크 디바이스입니다. EFA를 사용하면 AWS 클라우드가 제공하는 확장성, 유연성 및 탄력성으로 온프레미스 HPC 클러스터의 애플리케이션 성능을 달성할 수 있습니다.

EFA는 전통적으로 클라우드 기반 HPC 시스템에서 사용하는 TCP 전송보다 지연율이 낮고 일정하며 더 높은 처리량을 제공합니다. 또한 대규모 HPC 및 기계 학습 애플리케이션에서 중요한 인스턴스 간 통신 성능을 확장합니다. 이는 기존 AWS 네트워크 인프라에서 작업하도록 최적화되어 애플리케이션 요구량에 따라 크기를 변경합니다.

EFA는 Libfabric 1.7.0 이상과 통합되며 HPC 애플리케이션을 위한 Open MPI 5 이상 및 인텔 MPI 2019 업데이트 5와 기계 학습 애플리케이션을 위한 NCCL(Nvidia Collective Communications Library)을 지원합니다.

참고

Windows 인스턴스에서는 EFAs에서 제공하는 OS 우회 기능을 지원하지 않습니다. EFA를 Windows 인스턴스에 연결한 경우 인스턴스는 추가적인 EFA 기능이 없는 ENA(Elastic Network Adapter)로 작동합니다.

EFA 기본 사항

EFA는 추가 기능이 있는 ENA(Elastic Network Adapter)입니다. 따라서 추가적인 OS 우회 기능을 포함한 모든 ENA의 기능을 제공합니다. OS 우회는 HPC 및 기계 학습 애플리케이션이 네트워크 인터페이스 하드웨어와 직접 통신하도록 하는 액세스 모델로서 낮은 지연율과 신뢰성 높은 전송 기능을 제공합니다.


				EFA를 사용한 HPC 소프트웨어 스택과 기존 스택 비교.

기존의 HPC 애플리케이션은 시스템의 네트워크 전송 인터페이스에 MPI(Message Passing Interface)를 사용했습니다. AWS 클라우드에서 MPI를 사용하는 애플리케이션 인터페이스를 의미하며 이는 인스턴스 간 네트워크 통신을 위해 운영 체제의 TCP/IP 스택과 ENA 디바이스 드라이버를 사용한다는 의미입니다.

EFA에서 HPC 애플리케이션은 Libfabric API에 MPI 또는 NCCL 인터페이스를 사용합니다. Libfabric API는 운영 체제 커널을 우회하여 EFA 디바이스와 직접 통신을 통해 네트워크에 패킷을 전송합니다. 이는 오버헤드를 줄이고 HPC 애플리케이션이 더욱 효율적으로 실행되도록 합니다.

참고

Libfabric은 OFI(OpenFabrics Interface) 프레임워크의 핵심 구성 요소로서 OFI의 사용자 공간 API를 정의하고 내보냅니다. 자세한 내용은 Libfabric OpenFabrics 웹 사이트를 참조하세요.

EFAs 및 ENA 간의 차이점

Elastic Network Adapter(ENA)는 VPC 네트워킹을 지원하는 데 필요한 기존 IP 네트워킹 기능을 제공합니다. EFA는 ENA와 동일한 모든 기존 IP 네트워킹 기능을 제공하는 것에 더해 OS 바이패스 기능도 지원합니다. OS 우회는 HPC 및 기계 학습 애플리케이션이 운영 체제 커널을 우회하여 EFA 디바이스와 직접 통신할 수 있도록 합니다.

지원되는 인터페이스 및 라이브러리

EFA는 다음 인터페이스 및 라이브러리를 지원합니다.

  • Open MPI 5 이상

  • Graviton에는 Open MPI 4.0 이상이 선호됩니다.

  • 인텔 MPI 2019 업데이트 5 이상

  • NCCL(Nvidia Collective Communications Library) 2.4.2 이상

지원되는 인스턴스 유형

다음 인스턴스 유형은 EFAs를 지원합니다.

  • 범용: 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

  • 컴퓨팅 최적화: 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

  • 메모리 최적화: 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 | x2idn.32xlarge | x2idn.metal | x2iedn.32xlarge | x2iedn.metal | x2iezn.12xlarge | x2iezn.metal

  • 스토리지 최적화: i3en.12xlarge | i3en.24xlarge | i3en.metal | i4g.16xlarge | i4i.32xlarge | i4i.metal | im4gn.16xlarge

  • 가속 컴퓨팅: 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

  • 고성능 컴퓨팅: hpc6a.48xlarge | hpc6id.32xlarge | hpc7a.12xlarge | hpc7a.24xlarge | hpc7a.48xlarge | hpc7a.96xlarge | hpc7g.4xlarge | hpc7g.8xlarge | hpc7g.16xlarge

특정 리전에서 EFA를 지원하는 사용 가능한 인스턴스 유형 확인

사용 가능한 인스턴스 유형은 리전마다 다릅니다. 리전에서 EFA를 지원하는 사용 가능한 인스턴스 유형을 확인하려면 describe-instance-types 명령을 --region 파라미터와 함께 사용합니다. EFA를 지원하는 인스턴스 유형으로 결과 범위를 지정하려면 --filters 파라미터를 포함하고 InstanceType 값으로 출력 범위를 지정하려면 --query 파라미터를 포함합니다.

aws ec2 describe-instance-types --region us-east-1 --filters Name=network-info.efa-supported,Values=true --query "InstanceTypes[*].[InstanceType]" --output text | sort

지원되는 운영 체제

다음 운영 체제는 인텔/AMD x86 기반 인스턴스 유형이 포함된 EFA를 지원합니다.

  • Amazon Linux 2023

  • Amazon Linux 2

  • CentOS 7

  • RHEL 7, 8 및 9

  • Debian 10 및 11

  • Rocky Linux 8과 9

  • Ubuntu 20.04와 22.04

  • SUSE Linux Enterprise 15 SP2 이상

  • OpenSUSE Leap 15.4 이상

참고

Ubuntu 20.04는 dl1.24xlarge 인스턴스와 함께 사용할 때 피어 다이렉트 지원을 지원합니다.

다음 운영 체제는 Arm 기반(Graviton) 인스턴스 유형이 포함된 EFA를 지원합니다.

  • Amazon Linux 2023

  • Amazon Linux 2

  • RHEL 8/9 및 Rocky Linux 8/9

  • Debian 10 및 11

  • Ubuntu 20.04와 22.04

  • SUSE Linux Enterprise 15 SP2 이상

EFA 제한 사항

EFA에는 다음과 같은 제한 사항이 있습니다.

  • 모든 P4d 및 P5 인스턴스 유형은 NVIDIA GPUDirect 원격 직접 메모리 액세스(RDMA)를 지원합니다.

  • P4d/P4de/DL1 인스턴스와 다른 인스턴스 유형 간의 EFA 트래픽은 현재 지원되지 않습니다.

  • 여러 네트워크 카드를 지원하는 인스턴스 유형은 네트워크 카드당 하나의 EFA로 구성할 수 있습니다. 지원되는 다른 모든 인스턴스 유형은 인스턴스당 하나의 EFA만 지원합니다.

  • c7g.16xlarge, m7g.16xlarger7g.16xlarge 전용 인스턴스 및 전용 호스트의 경우 EFA 연결 시 지원되지 않습니다.

  • EFA OS 우회 트래픽은 단일 서브넷으로 제한됩니다. 즉 EFA 트래픽은 서브넷 간 전송이 불가능합니다. EFA의 일반 IP 트래픽은 서브넷 간 전송이 가능합니다.

  • EFA OS 우회 트래픽은 라우팅되지 않습니다. EFA의 일반 IP 트래픽은 라우팅이 가능합니다.

  • EFA은 보안 그룹 자체 내의 모든 인바운드 및 아웃바운드 트래픽을 허용하는 보안 그룹에 구성되어야 합니다.

  • EFA는 AWS Outposts에서 지원되지 않습니다.

EFA 요금

EFA는 추가 비용 없이 지원되는 모든 인스턴스에서 활성화할 수 있는 선택적 Amazon EC2 네트워킹 기능으로 사용할 수 있습니다.