Amazon EC2 の AI/ML および HPC ワークロード用の Elastic Fabric Adapter
Elastic Fabric Adapter (EFA) はAI、機械学習 (ML) およびハイパフォーマンスコンピューティング (HPC) のアプリケーションを高速化するために Amazon EC2 インスタンスにアタッチできるネットワークデバイスです。EFA ではAWS クラウドが提供するスケーラビリティ、柔軟性、伸縮性により、オンプレミス AI/ML または HPC クラスターのアプリケーションパフォーマンスを実現できます。
EFA ではクラウドベースの HPC システムで従来使用されていた TCP トランスポートよりも低く、一貫性の高いレイテンシーを提供し、高いスループットが得られます。AI/ML および HPC アプリケーションのスケーリングに不可欠なインスタンス間通信のパフォーマンスが向上します。既存の AWS ネットワークインフラストラクチャで動作するように最適化されており、アプリケーション要件に応じてスケーリングすることができます。
EFA は Libfabric 1.7.0 以降と統合されており、AI および機械学習アプリケーション向けに Nvidia Collective Communications Library (NCCL)、および HPC アプリケーション向けに Open MPI 4.1 以降と Intel MPI 2019 Update 5 以降をサポートしています。
Nitro バージョン 4 以降でサポートされているほとんどのインスタンスタイプで、EFA は RDMA (リモートダイレクトメモリアクセス) 書き込みをサポートしています。RDMA 読み取りは、Nitro バージョン 4 以降のすべてのインスタンスでサポートされています。詳細については、「サポートされるインスタンスタイプ」を参照してください。
内容
EFA の基本
EFA デバイスは次の 2 つの方法で EC2 インスタンスにアタッチできます。
-
EFA デバイスと ENA デバイスの両方を作成する EFA と ENA の組み合わせとも呼ばれる従来の EFA インターフェイスを使用します。
-
EFA のみのインターフェイスを使用して、EFA デバイスのみを作成します。
EFA デバイスはScalable Reliable Datagram (SRD) プロトコルを介した組み込み OS バイパスや輻輳制御などの機能を提供します。EFA デバイス機能により、低レイテンシーで信頼性の高いトランスポート機能が可能になり、EFA インターフェイスが Amazon EC2 の HPC および ML アプリケーションのパフォーマンスを向上させることができます。一方、ENA デバイスは従来の IP ネットワークを提供します。

従来、AI/ML アプリケーションはNCCL および Message Passing Interface (MPI) を使用してシステムのネットワーク転送と通信していました。AWS クラウドではアプリケーションが NCCL または MPI と通信することを意味します。MPI はオペレーティングシステムの TCP/IP スタックと ENA デバイスドライバーを使用して、インスタンス間のネットワーク通信を行います。
従来の EFA (EFA と ENA の組み合わせ) または EFA のみのインターフェースを使用する場合、AI/ML アプリケーションは NCCL を、HPC アプリケーションは MPI を使用して、Libfabric API と直接インターフェースします。Libfabric API はオペレーティングシステムのカーネルをバイパスし、EFA デバイスと直接通信してパケットをネットワークに送ります。これにより、オーバーヘッドが削減され、AI/ML および HPC アプリケーションを効率的に実行できるようになります。
注記
Libfabric はOpenFabrics Interface (OFI) フレームワークのコアコンポーネントで、OFI のユーザースペース API を定義およびエクスポートします。詳細についてはLibfabric OpenFabrics
ENA、EFA、EFA のみのネットワークインターフェイスの違い
Amazon EC2 では次の 2 種類のネットワークインターフェイスを提供しています。
-
ENA インターフェイスはVPC の IP ネットワークをサポートするために必要なすべての従来の IP ネットワークとルーティング機能を提供します。詳細については「EC2 インスタンスで ENA による拡張ネットワーキングを有効にする」を参照してください。
-
EFA (EFA と ENA の組み合わせ) インターフェイスはIP ネットワーク用の ENA デバイスと、低レイテンシーで高スループット通信用の EFA デバイスの両方を提供します。
-
EFA のみのインターフェイスは EFA デバイス機能のみをサポートし、従来の IP ネットワーク用の ENA デバイスはありません。
次の表はENA、EFA、および EFA のみのネットワークインターフェイスの比較を提示しています。
ENA | EFA (EFA と ENA の組み合わせ) | EFA のみ | |
---|---|---|---|
IP ネットワーク機能をサポート | はい | あり | なし |
IPv4 アドレスまたは IPv6 アドレスを割り当て可能 | はい | あり | なし |
インスタンスのプライマリネットワークインターフェイスとして使用可能 | はい | あり | なし |
インスタンスの ENI アタッチメント制限へのカウント | はい | あり | あり |
インスタンスタイプのサポート | すべての Nitro ベースのインスタンスタイプでサポートに対応 | サポートされるインスタンスタイプ | サポートされるインスタンスタイプ |
EC2 API のパラメータ命名 | interface |
efa |
efa-only |
EC2 コンソールのフィールド命名 | 選択なし | EFA と ENA の組み合わせ | EFA のみ |
サポートされているインターフェイスとライブラリ
EFA は以下のインターフェイスとライブラリをサポートしています。
-
Open MPI 4.1 以降
-
Intel MPI 2019 Update 5 以降
-
NVIDIA Collective Communications Library (NCCL) 2.4.2 以降
-
AWS Neuron SDK バージョン 2.3 以降
サポートされるインスタンスタイプ
次のインスタンスタイプはすべて EFA をサポートしています。また、この表は、インスタンスタイプの RDMA 読み取りおよび RDMA 書き込みのサポートを示しています。
特定のリージョンで EFA をサポートする利用可能なインスタンスタイプを確認するには
利用可能なインスタンスタイプはリージョンごとに異なります。リージョンで EFA をサポートする使用可能なインスタンスタイプを確認するには--region
パラメーターを指定して describe-instance-types コマンドを使用します。結果を 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
サポートされるオペレーティングシステム
オペレーティングシステムのサポートはプロセッサタイプによって異なります。次の表はサポートされているオペレーティングシステムを示しています。
オペレーティングシステム | Intel/AMD (x86_64 ) インスタンスタイプ |
AWS Graviton (arm64 ) インスタンスタイプ |
---|---|---|
Amazon Linux 2023 | ✓ | ✓ |
Amazon Linux 2 | ✓ | ✓ |
RHEL 8 および 9 | ✓ | ✓ |
Debian 11 および 12 | ✓ | ✓ |
Rocky Linux 8 および 9 | ✓ | ✓ |
Ubuntu 22.04 と 24.04 | ✓ | ✓ |
SUSE Linux Enterprise 15 SP2 以降 | ✓ | ✓ |
OpenSUSE Leap 15.5 以降 | ✓ |
注記
リストされているオペレーティングシステムの一部は、Intel MPI でサポートされていない場合があります。Intel MPI を使用している場合は、Intel MPI ドキュメント
EFA の制限事項
EFA には次の制限があります。
-
RDMA 書き込みは、すべてのインスタンスタイプでサポートされているわけではありません。詳細については、「サポートされるインスタンスタイプ」を参照してください。
-
P4d/P4de/DL1 インスタンスと他のインスタンスタイプ間の EFA トラフィック 1 は現在サポートされていません。
-
複数のネットワークカードをサポートするインスタンスタイプはネットワークカードごとに 1 つの EFA で設定できます。その他のサポートされているインスタンスタイプはすべて、インスタンスごとに 1 つの EFA のみをサポートしています。
-
EFA がアタッチされている場合、
m7g.16xlarge
、r7g.16xlarge
、c7g.16xlarge
のハードウェア専有インスタンスおよび専有ホストはサポートされません。 -
EFA トラフィック 1 はアベイラビリティーゾーンまたは VPC をまたがることはできません。これはEFA インターフェイスの ENA デバイスからの通常の IP トラフィックには適用されません。
-
EFA トラフィック 1 はルーティングできません。EFA インターフェイスの ENA デバイスからの通常の IP トラフィックはルーティング可能です。
-
EFA は AWS Outposts ではサポートされていません。
-
EFA (EFA と ENA の組み合わせ) インターフェイスの EFA デバイスはAWS Cloud Digital Interface Software Development Kit (AWS CDI SDK) ベースのアプリケーションでのみ Windows インスタンスでサポートされています。EFA (EFA と ENA の組み合わせ) インターフェイスを Windows インスタンスに非 CDI SDK ベースのアプリケーション用として接続すると、EFA デバイスの機能を追加せずに、ENA インターフェースとして機能します。EFA のみのインターフェイスはWindows または Linux で AWS CDI ベースのアプリケーションではサポートされていません。詳細については「AWS Cloud Digital Interface Software Development Kit (AWS CDI SDK) ユーザーガイド」を参照してください。
1EFA トラフィックとは、EFA (EFA および ENA の組み合わせ) または EFA 専用のインターフェイスのいずれかの EFA デバイスを介して配信されるトラフィックを指します。
EFA 価格設定
EFA はオプションの Amazon EC2 ネットワーキング機能として利用でき、サポートされているどのインスタンスでも追加費用なしで有効にできます。