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 以降と Intel MPI 2019 Update 5 以降をサポートしています。
内容
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 以降
注記
Graviton ベースのインスタンスには、Open MPI 4.0 以降が推奨されます。
-
Intel MPI 2019 Update 5 以降
-
NVIDIA Collective Communications Library (NCCL) 2.4.2 以降
-
AWS Neuron SDK バージョン 2.3 以降
サポートされるインスタンスタイプ
EFAs をサポートしているインスタンスタイプ:
特定のリージョンで 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 10 と 11] | ✓ | ✓ |
Rocky Linux 8 および 9 | ✓ | ✓ |
Ubuntu 20.04、22.04、24.04 | ✓ | ✓ |
SUSE Linux Enterprise 15 SP2 以降 | ✓ | ✓ |
OpenSUSE Leap 15.5 以降 | ✓ |
注記
Ubuntu 20.04 では、dl1.24xlarge
インスタンスと併用した場合、ピアダイレクトサポートがサポートされます。
EFA の制限事項
EFA には次の制限があります。
注記
EFA トラフィックとは、EFA (EFA と ENA の組み合わせ) または EFA のみのインターフェイスのいずれかの EFA デバイスを介して送信されるトラフィックを指します。
-
P4d/P4de/DL1 インスタンスと他のインスタンスタイプ間の EFA トラフィックは、現在サポートされていません。
-
複数のネットワークカードをサポートするインスタンスタイプは、ネットワークカードごとに 1 つの EFA で設定できます。その他のサポートされているインスタンスタイプはすべて、インスタンスごとに 1 つの EFA のみをサポートしています。
-
EFA がアタッチされている場合、
c7g.16xlarge
、m7g.16xlarge
、r7g.16xlarge
Dedicated Instances および Dedicated Hosts はサポートされません。 -
EFAトラフィックは、アベイラビリティーゾーンまたは VPC をまたがることができません。これは、EFA インターフェイスの ENA デバイスからの通常の IP トラフィックには適用されません。
-
EFA トラフィックは、ルーティングできません。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) ユーザーガイド」を参照してください。
EFA 価格設定
EFA はオプションの Amazon EC2 ネットワーキング機能として利用でき、サポートされているどのインスタンスでも追加費用なしで有効にできます。