Amazon Web Services 한국 블로그

고성능 컴퓨팅을 위한 Elastic Fabric Adapter(EFA) 네트워크 카드 정식 출시

지난 re:Invent 2018에서 Elastic Fabric Adapter(EFA)라는 신규 네트워크 어댑터를 미리보기 형식으로 발표했습니다. 이 기간 동안 많은 AWS 고객은 다양한 고성능 컴퓨팅(HPC) 워크로드에 대해 EFA의 성능과 기능을 시험하면서 저희에게 중요한 피드백을 제공하고, 최종 제품을 세부적으로 개선하는 데 큰 도움을 주었습니다.

Elastic Fabric Adapter(EFA) 정식 출시

오늘 Elastic Fabric Adapter(EFA) 서비스를 US East (Ohio), US East (N. Virginia), US West (Oregon), EU (Ireland), and AWS GovCloud (US) 리전에서 우선 정식 출시합니다.

이제 이 서비스를 통해 기존 TCP 통신에서 지원되는 것보다 짧고 일정한 네트워크 지연 시간과 높은 처리 성능을 요하는 까다로운 HPC 워크로드를 지원할 수 있습니다. 이번 출시로, 긴밀하게 결합된 HPC 앱에 AWS 클라우드의 확장성, 유연성 및 탄력성을 적용할 수 있게 된 만큼, 실제 사용 사례를 하루 빨리 듣고 싶습니다. 예를 들면, 하드웨어 또는 네트워크를 미리 예약해 두지 않고도 수천 개의 컴퓨팅 노드로 확장할 수 있습니다.

EFA에 대한 모든 것

Elastic Fabric Adapter는 기존 Elastic Network Adapter(ENA)에 새로운 기능을 추가하였습니다. ENA에 대해서는 Elastic Network Adapter – Amazon EC2용 고성능 네트워크 인터페이스라는 게시물에서 자세히 설명합니다. EFA는 ENA와 마찬가지로 IP 트래픽을 처리하는 동시에 OS 바이패스로 통칭되는 중요한 액세스 모델도 지원합니다.

이 모델은 메시지를 표시할 때마다 운영 체제가 개입하지 않게 하면서 애플리케이션(대부분 일종의 사용자 공간 미들웨어를 통해)이 네트워크 인터페이스에 액세스할 수 있도록 해줍니다. 따라서 오버헤드가 줄고 애플리케이션이 보다 효율적으로 실행될 수 있습니다. 다음은 EFA의 구현 예입니다(원본).

이 케이크 모양의 구조에서 MPI 구현 계층과 libfabric 계층은 중요한 역할을 합니다.

  • MPI – 메시지 전달 인터페이스(Message Passing Interface)의 약어인 MPI는 오랫동안 널리 사용된 통신 프로토콜로, 병렬 프로그래밍을 지원하도록 설계되었습니다. 이 프로토콜은 긴밀하게 결합된 일련의 컴퓨터에서 실행되는 프로세스가 언어별로 다른 방식으로 통신하도록 합니다.
  • libfabric – 이 라이브러리는 다양한 네트워크 패브릭 공급자(EFA 포함)와 MPI 같은 상위 라이브러리 사이에서 작동합니다. EFA는 표준 RDM(Reliable Datagram) 및 DGRM(Unreliable Datagram) 엔드포인트 유형을 지원합니다. 자세한 내용은 libfabric 프로그래머 매뉴얼을 참조하십시오. 또한 EFA는 Scalable Reliable Datagram이라는 새로운 프로토콜도 지원합니다. 이 프로토콜은 AWS 네트워크 내에서 작동하도록 설계되었으며, Nitro 칩의 일부로 구현됩니다.

이 두 계층(또한 MPI 대신 넣을 수 있는 다른 계층)은 함께 작동하면서, 사용자가 기존 HPC 코드를 AWS로 가져와 거의 또는 전혀 변경하지 않고 실행할 수 있게 해줍니다.

EFA는 현재, 해당 인스턴스를 제공하는 모든 AWS 리전에서 c5n.18xlargep3dn.24xlarge 인스턴스에 사용할 수 있습니다. 이들 인스턴스는 EFA를 사용하여 VPC 서브넷 내에서 통신할 수 있으며, 보안 그룹 내에서 모든 트래픽이 전송되도록 허용하는 수신 및 송신 규칙이 보안 그룹에 적용되어야 합니다. EFA는 인스턴스마다 하나씩 구성할 수 있으며, 인스턴스가 시작될 때 또는 중지되어 있는 동안 연결할 수 있습니다.

다음 소프트웨어 구성 요소도 필요합니다.

  • EFA 커널 모듈EFA 드라이버Amazon GitHub 리포지토리에 있으며, Amazon Linux 및 Amazon Linux 2 AMI에 포함되어 있습니다. 현재 다른 Linux 배포판에도 AMI를 추가하기 위한 작업을 진행 중입니다.
  • Libfabric 네트워크 스택 – 지금은 AWS 사용자 지정 버전(Amazon Linux 및 Amazon Linux 2 AMI에서 이미 제공)을 사용해야 합니다. 현재 libfabric의 다음 릴리즈(1.8)에 변경 사항을 구현하는 작업을 진행 중입니다.
  • MPI 또는 NCCL 구현Open MPI 3.1.3(이상) 또는 NCCL(2.3.8 이상)과 NCCL용 OFI 드라이버를 사용할 수 있습니다. 또한 현재 인텔 MPI 라이브러리를 지원하기 위한 작업도 진행 중입니다.

1~2주 후에는 CloudFormation 지원을 통해 CLI, API 또는 EC2 콘솔을 사용하여 인스턴스를 시작하고 EFA를 연결할 수 있게 됩니다. CLI를 사용하는 경우, 다음과 같이 서브넷 ID를 포함하여 EFA를 요청해야 합니다(해당 보안 그룹 포함).

$ aws ec2 run-instances ... \
  --network-interfaces DeleteOnTermination=true,DeviceIndex=0,SubnetId=SUBNET,InterfaceType=efa

인스턴스가 시작되고 나면 lspci | grep efa0을 실행하여 EFA 디바이스가 연결되었는지 확인합니다. 필수적인 것은 아니지만, 최대한 빠른 속도를 구현해야 하는 경우 클러스터 배치 그룹에서 인스턴스를 시작하여 물리적으로 인접한 데 다른 이점을 활용할 수 있습니다. 이 방식으로 사용할 경우 EFA는 15.5마이크로초의 단방향 MPI 지연 시간을 제공할 수 있습니다.

또한 시작 템플릿을 생성해 온디맨드 또는 스팟 형식으로 EC2 인스턴스를 시작(직접 시작 또는 EC2 Auto Scaling 그룹의 일부로 시작)하고, 스팟 플릿을 시작하고, AWS Batch에서 컴퓨팅 작업을 실행하는 데 사용할 수 있습니다.

다음 re:Invent 동영상에서 EFA에 대한 자세한 내용과 추가 벤치마킹 결과를 참조할 수 있습니다(Elastic Fabric Adapter를 사용하여 EC2에서 HPC 애플리케이션 확장).

AWS 고객인 CFD Direct는 CFD(Computational Fluid Dynamics)용 인기 OpenFOAM 플랫폼을 유지 관리하고, AWS에서 OpenFOAM을 간편하게 실행할 수 있도록 하는 AWS Marketplace 오퍼링인 CFDDC(CFD Direct From the Cloud)를 제작하는 회사입니다. 이 회사는 EFA의 테스트와 벤치마킹을 진행해왔으며, 최근 OpenFOAM HPC with AWS EFA라는 제목의 블로그 게시물에서 측정 결과를 공개했습니다. 이 게시물에는 두 가지 시뮬레이션 결과가 나와 있습니다.

  • 차량 주위의 외부 공기 역학 – 이 시뮬레이션은 200개가 넘는 코어로 초선형적으로 확장되며, 서서히 선형적 확장으로 감소하여 1,000개 코어까지 확장합니다(코어당 약 100,000개의 시뮬레이션 셀).
  • 도수로 인한 둑 범람 – 이 시뮬레이션(1,000개의 코어 및 100만 개의 셀)은 “데이터 쓰기” 설정에 따라 67%~72.6%로 확장됩니다.

자세한 것은 블로그에서 자세히 알아보고 몇 가지 그래프와 시각적 객체를 참조하십시오.

앞으로 다른 EC2 인스턴스 유형에서도 EFA를 지원할 계획입니다. 일반적으로, 모든 유형에 대해 2개의 최대 크기 “n” 인스턴스에 대해 EFA 지원을 제공하고, 베어 메탈 인스턴스에 대해서도 지원할 예정입니다.

Jeff;