Elastic Fabric Adapter - Amazon Elastic Compute Cloud

Elastic Fabric Adapter

Elastic Fabric Adapter (EFA) は、High Performance Computing (HPC) と機械学習アプリケーションを高速化するために Amazon EC2 インスタンスにアタッチできるネットワークデバイスです。EFA では、AWS クラウドが提供するスケーラビリティ、柔軟性、伸縮性により、オンプレミス HPC クラスターのアプリケーションパフォーマンスを実現できます。

EFA では、クラウドベースの HPC システムで従来使用されていた TCP トランスポートよりも低く、一貫性の高いレイテンシーを提供し、高いスループットが得られます。HPC と機械学習アプリケーションのスケーリングに不可欠なインスタンス間通信のパフォーマンスが向上します。既存の AWS ネットワークインフラストラクチャで動作するように最適化されており、アプリケーション要件に応じてスケーリングすることができます。

EFA は、Libfabric 1.11.1 と統合されており、HPC アプリケーション向けに Open MPI 4.0.5 および Intel MPI 2019 Update 7、機械学習アプリケーション向けに Nvidia Collective Communications Library (NCCL) をサポートしています。

注記

EFAs の OS バイパス機能は、Windows インスタンスではサポートされていません。EFA を Windows インスタンスにアタッチした場合、インスタンスは、Elastic Network Adapter として動作し、EFA 機能は追加されません。

EFA の基本

EFA は、機能が追加された Elastic Network Adapter (ENA) です。ENA のすべての機能に OS バイパス機能が追加されています。OS バイパスは、HPC と機械学習アプリケーションがネットワークインターフェイスハードウェアと直接通信して、レイテンシーが低く、信頼性の高い転送機能を実現できるようにするアクセスモデルです。


				従来の HPC ソフトウェアスタックと、EFA を使用するソフトウェアスタックの比較。

従来、HPC アプリケーションは、Message Passing Interface (MPI) を使用してシステムのネットワーク転送と通信していました。AWS クラウドでは、アプリケーションが MPI と通信することを意味します。MPI はオペレーティングシステムの TCP/IP スタックと ENA デバイスドライバーを使用して、インスタンス間のネットワーク通信を行います。

EFA の場合、HPC アプリケーションは MPI または NCCL を使用して Libfabric API と連携します。Libfabric API はオペレーティングシステムのカーネルをバイパスし、EFA デバイスと直接通信してパケットをネットワークに送ります。これにより、オーバーヘッドが削減され、HPC アプリケーションを効率的に実行できるようになります。

注記

Libfabric は、OpenFabrics Interface (OFI) フレームワークのコアコンポーネントで、OFI のユーザースペース API を定義およびエクスポートします。詳細については、「Libfabric OpenFabrics」ウェブサイトを参照してください。

EFAs と ENA の違い

Elastic Network Adapters (ENA) は、VPC ネットワーキングをサポートするために必要な従来の IP ネットワーキング機能を提供します。EFAは、ENA と同じ従来の IP ネットワーキング機能すべてに加えて、OS バイパス機能をサポートしています。OS バイパスにより、HPC と機械学習アプリケーションはオペレーティングシステムのカーネルをバイパスして EFA デバイスと直接通信できます。

サポートされているインターフェイスとライブラリ

EFA は、以下のインターフェイスとライブラリをサポートしています。

  • Open MPI 4.0.5

  • Intel MPI 2019 Update 7

  • NVIDIA Collective Communications Library (NCCL) 2.4.2 以降

サポートされるインスタンスタイプ

EFAs をサポートしているインスタンスタイプ:

  • 汎用: m5dn.24xlarge | m5dn.metal | m5n.24xlarge | m5zn.12xlarge | m5zn.metal

  • コンピューティングの最適化:c5n.18xlarge |c5n.metal |c6gn.16xlarge

  • メモリの最適化:r5dn.24xlarge |r5dn.metal |r5n.24xlarge |r5n.metal

  • ストレージの最適化: i3en.24xlarge | i3en.metal

  • 高速コンピューティング: g4dn.metal | inf1.24xlarge | p3dn.24xlarge | p4d.24xlarge

利用可能なインスタンスタイプは、リージョンごとに異なります。リージョンで EFA をサポートしている利用可能なインスタンスタイプを確認するには、describe-instance-types コマンドを --region オプションおよび適切なリージョンコードとともに使用します。

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

出力例を次に示します。

g4dn.metal i3en.24xlarge r5n.24xlarge c5n.18xlarge m5n.24xlarge inf1.24xlarge m5dn.24xlarge c5n.metal p3dn.24xlarge i3en.metal r5dn.24xlarge

サポートされている AMIs

次の AMI は、インテル x86 ベースのインスタンスタイプを持つ EFA をサポートしています。

  • Amazon Linux 2

  • CentOS 7 および 8

  • RHEL 7 および 8

  • Ubuntu 18.04 と 20.04

  • SUSE Linux Enterprise 15 SP2 以降

  • openSUSE Leap 15.2 以降

次の AMI は、ARM ベース (Graviton 2) インスタンスタイプを持つ EFA をサポートしています。

  • Amazon Linux 2

  • Ubuntu 18.04 と 20.04

  • SUSE Linux Enterprise 15 SP2 以降

EFA の制限事項

EFA には次の制約事項があります。

  • p4d.24xlarge インスタンスは最大 4 つの EFAs までサポートしています。その他のサポートされているインスタンスタイプはすべて、インスタンスごとに 1 つの EFA のみをサポートしています。

  • EFA OS バイパストラフィックは、1 つのサブネットに制限されています。つまり、EFA トラフィックをサブネット間で送信することはできません。EFA の通常の IP トラフィックは、サブネット間で送信することができます。

  • EFA OS バイパストラフィックは、ルーティングできません。EFA の通常の IP トラフィックは、引き続きルーティングできます。

  • EFA は、セキュリティグループ自体との間のインバウンドおよびアウトバウンドのトラフィックをすべて許可するセキュリティグループのメンバーである必要があります。

  • C6gn インスタンスとその他の EFA 対応のインスタンス間の EFA トラフィックはサポートされていません。