Amazon EC2 の AI/ML および HPC ワークロード用の Elastic Fabric Adapter - Amazon Elastic Compute Cloud

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 インスタンスにアタッチできます。

  1. EFA デバイスと ENA デバイスの両方を作成する EFA と ENA の組み合わせとも呼ばれる従来の EFA インターフェイスを使用します。

  2. EFA のみのインターフェイスを使用して、EFA デバイスのみを作成します。

EFA デバイスはScalable Reliable Datagram (SRD) プロトコルを介した組み込み OS バイパスや輻輳制御などの機能を提供します。EFA デバイス機能により、低レイテンシーで信頼性の高いトランスポート機能が可能になり、EFA インターフェイスが Amazon EC2 の HPC および ML アプリケーションのパフォーマンスを向上させることができます。一方、ENA デバイスは従来の IP ネットワークを提供します。

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

従来、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 書き込みのサポートを示しています。

Nitro v6
インスタンスタイプ RDMA 読み取りサポート RDMA 書き込みサポート
コンピューティング最適化
c8gn.16xlarge Yes Yes
c8gn.24xlarge Yes Yes
c8gn.48xlarge Yes Yes
c8gn.metal-24xl Yes Yes
c8gn.metal-48xl Yes Yes
メモリを最適化
r8i.48xlarge No No
r8i.96xlarge No No
r8i.metal-48xl No No
r8i.metal-96xl No No
高速コンピューティング
p6-b200.48xlarge Yes Yes
Nitro v5
インスタンスタイプ RDMA 読み取りサポート RDMA 書き込みサポート
汎用
m8g.24xlarge Yes No
m8g.48xlarge Yes No
m8g.metal-24xl Yes No
m8g.metal-48xl Yes No
m8gd.24xlarge No No
m8gd.48xlarge No No
m8gd.metal-24xl No No
m8gd.metal-48xl No No
コンピューティング最適化
c7gn.16xlarge Yes No
c7gn.metal Yes No
c8g.24xlarge Yes No
c8g.48xlarge Yes No
c8g.metal-24xl Yes No
c8g.metal-48xl Yes No
c8gd.24xlarge No No
c8gd.48xlarge No No
c8gd.metal-24xl No No
c8gd.metal-48xl No No
メモリを最適化
r8g.24xlarge No No
r8g.48xlarge No No
r8g.metal-24xl No No
r8g.metal-48xl No No
r8gd.24xlarge No No
r8gd.48xlarge No No
r8gd.metal-24xl No No
r8gd.metal-48xl No No
x8g.24xlarge No No
x8g.48xlarge No No
x8g.metal-24xl No No
x8g.metal-48xl No No
ストレージの最適化
i7ie.48xlarge Yes No
i7ie.metal-48xl Yes No
i8g.48xlarge No No
高速コンピューティング
p5en.48xlarge Yes Yes
p6e-gb200.36xlarge Yes Yes
trn2.48xlarge Yes Yes
trn2u.48xlarge Yes Yes
ハイパフォーマンスコンピューティング
hpc7g.4xlarge Yes No
hpc7g.8xlarge Yes No
hpc7g.16xlarge Yes No
Nitro v4
インスタンスタイプ RDMA 読み取りサポート RDMA 書き込みサポート
汎用
m6a.48xlarge Yes Yes
m6a.metal Yes Yes
m6i.32xlarge Yes Yes
m6i.metal Yes Yes
m6id.32xlarge Yes Yes
m6id.metal Yes Yes
m6idn.32xlarge Yes Yes
m6idn.metal Yes Yes
m6in.32xlarge Yes Yes
m6in.metal Yes Yes
m7a.48xlarge Yes No
m7a.metal-48xl Yes No
m7g.16xlarge Yes No
m7g.metal Yes No
m7gd.16xlarge Yes No
m7gd.metal Yes No
m7i.48xlarge Yes No
m7i.metal-48xl Yes No
コンピューティング最適化
c6a.48xlarge Yes Yes
c6a.metal Yes Yes
c6gn.16xlarge Yes Yes
c6i.32xlarge Yes Yes
c6i.metal Yes Yes
c6id.32xlarge Yes Yes
c6id.metal Yes Yes
c6in.32xlarge Yes Yes
c6in.metal Yes Yes
c7a.48xlarge Yes No
c7a.metal-48xl Yes No
c7g.16xlarge Yes Yes
c7g.metal Yes Yes
c7gd.16xlarge Yes No
c7gd.metal Yes No
c7i.48xlarge Yes No
c7i.metal-48xl Yes No
メモリを最適化
r6a.48xlarge Yes Yes
r6a.metal Yes Yes
r6i.32xlarge Yes Yes
r6i.metal Yes Yes
r6idn.32xlarge Yes Yes
r6idn.metal Yes Yes
r6in.32xlarge Yes Yes
r6in.metal Yes Yes
r6id.32xlarge Yes Yes
r6id.metal Yes Yes
r7a.48xlarge No No
r7a.metal-48xl No No
r7g.16xlarge No No
r7g.metal No No
r7gd.16xlarge No No
r7gd.metal No No
r7i.48xlarge No No
r7i.metal-48xl No No
r7iz.32xlarge No No
r7iz.metal-32xl No No
u7i-6tb.112xlarge Yes Yes
u7i-8tb.112xlarge Yes Yes
u7i-12tb.224xlarge Yes Yes
u7in-16tb.224xlarge Yes Yes
u7in-24tb.224xlarge Yes Yes
u7in-32tb.224xlarge Yes Yes
u7inh-32tb.480xlarge Yes Yes
x2idn.32xlarge Yes Yes
x2idn.metal Yes Yes
x2iedn.32xlarge Yes Yes
x2iedn.metal Yes Yes
ストレージの最適化
i4g.16xlarge Yes Yes
i4i.32xlarge Yes Yes
i4i.metal Yes Yes
i7i.24xlarge Yes No
i7i.48xlarge Yes No
i7i.metal-48xl Yes No
im4gn.16xlarge Yes Yes
高速コンピューティング
f2.48xlarge Yes Yes
g6.8xlarge Yes Yes
g6.12xlarge Yes Yes
g6.16xlarge Yes Yes
g6.24xlarge Yes Yes
g6.48xlarge Yes Yes
g6e.8xlarge Yes Yes
g6e.12xlarge Yes Yes
g6e.16xlarge Yes Yes
g6e.24xlarge Yes Yes
g6e.48xlarge Yes Yes
gr6.8xlarge Yes Yes
p5.4xlarge Yes Yes
p5.48xlarge Yes Yes
p5e.48xlarge Yes Yes
trn1.32xlarge Yes Yes
trn1n.32xlarge Yes Yes
ハイパフォーマンスコンピューティング
hpc6a.48xlarge Yes Yes
hpc6id.32xlarge Yes Yes
hpc7a.12xlarge Yes No
hpc7a.24xlarge Yes No
hpc7a.48xlarge Yes No
hpc7a.96xlarge Yes No
Nitro v3
インスタンスタイプ RDMA 読み取りサポート RDMA 書き込みサポート
汎用
m5dn.24xlarge No No
m5dn.metal No No
m5n.24xlarge No No
m5n.metal No No
m5zn.12xlarge No No
m5zn.metal No No
コンピューティング最適化
c5n.9xlarge No No
c5n.18xlarge No No
c5n.metal No No
メモリを最適化
r5dn.24xlarge No No
r5dn.metal No No
r5n.24xlarge No No
r5n.metal No No
x2iezn.12xlarge No No
x2iezn.metal No No
ストレージの最適化
i3en.12xlarge No No
i3en.24xlarge No No
i3en.metal No No
高速コンピューティング
dl1.24xlarge Yes No
dl2q.24xlarge No No
g4dn.8xlarge No No
g4dn.12xlarge No No
g4dn.16xlarge No No
g4dn.metal No No
g5.8xlarge No No
g5.12xlarge No No
g5.16xlarge No No
g5.24xlarge No No
g5.48xlarge No No
inf1.24xlarge No No
p3dn.24xlarge No No
p4d.24xlarge Yes No
p4de.24xlarge Yes No
vt1.24xlarge No No
特定のリージョンで 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.16xlarger7g.16xlargec7g.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 ネットワーキング機能として利用でき、サポートされているどのインスタンスでも追加費用なしで有効にできます。