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 以降と Intel MPI 2019 Update 5 以降をサポートしています。

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 以降

    注記

    Graviton ベースのインスタンスには、Open MPI 4.0 以降が推奨されます。

  • Intel MPI 2019 Update 5 以降

  • NVIDIA Collective Communications Library (NCCL) 2.4.2 以降

  • AWS Neuron SDK バージョン 2.3 以降

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

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

Nitro v5
  • 汎用: m8g.24xlarge | m8g.48xlarge | m8g.metal-24xl | m8g.metal-48xl

  • コンピューティング最適化: c7gn.16xlarge | c7gn.metal | c8g.24xlarge | c8g.48xlarge | c8g.metal-24xl | c8g.metal-48xl

  • メモリ最適化: r8g.24xlarge | r8g.48xlarge | r8g.metal-24xl | r8g.metal-48xl | x8g.24xlarge | x8g.48xlarge | x8g.metal-24xl | x8g.metal-48xl

  • 高性能コンピューティング: hpc7g.4xlarge | hpc7g.8xlarge | hpc7g.16xlarge

Nitro v4
  • 汎用: m6a.48xlarge | m6a.metal | m6i.32xlarge | m6i.metal | m6id.32xlarge | m6id.metal | m6idn.32xlarge | m6idn.metal | m6in.32xlarge | m6in.metal | m7a.48xlarge | m7a.metal-48xl | m7g.16xlarge | m7g.metal | m7gd.16xlarge | m7gd.metal | m7i.48xlarge | m7i.metal-48xl

  • コンピューティング最適化: c6a.48xlarge | c6a.metal | c6gn.16xlarge | c6i.32xlarge | c6i.metal | c6id.32xlarge | c6id.metal | c6in.32xlarge | c6in.metal | c7a.48xlarge | c7a.metal-48xl | c7g.16xlarge | c7g.metal | c7gd.16xlarge | c7gd.metal | c7i.48xlarge | c7i.metal-48xl

  • メモリ最適化: r6a.48xlarge | r6a.metal | r6i.32xlarge | r6i.metal | r6idn.32xlarge | r6idn.metal | r6in.32xlarge | r6in.metal | r6id.32xlarge | r6id.metal | r7a.48xlarge | r7a.metal-48xl | r7g.16xlarge | r7g.metal | r7gd.16xlarge | r7gd.metal | r7i.48xlarge | r7i.metal-48xl | r7iz.32xlarge | r7iz.metal-32xl | u7i-12tb.224xlarge | u7in-16tb.224xlarge | u7in-24tb.224xlarge | u7in-32tb.224xlarge | x2idn.32xlarge | x2idn.metal | x2iedn.32xlarge | x2iedn.metal

  • ストレージ最適化: i4g.16xlarge | i4i.32xlarge | i4i.metal | im4gn.16xlarge

  • 高速コンピューティング: g6.8xlarge | g6.12xlarge | g6.16xlarge | g6.24xlarge | g6.48xlarge | g6e.8xlarge | g6e.12xlarge | g6e.16xlarge | g6e.24xlarge | g6e.48xlarge | gr6.8xlarge | p5.48xlarge | p5e.48xlarge | trn1.32xlarge | trn1n.32xlarge

  • 高性能コンピューティング: hpc6a.48xlarge | hpc6id.32xlarge | hpc7a.12xlarge | hpc7a.24xlarge | hpc7a.48xlarge | hpc7a.96xlarge

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

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

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

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

  • 高速コンピューティング: dl1.24xlarge | dl2q.24xlarge | g4dn.8xlarge | g4dn.12xlarge | g4dn.16xlarge | g4dn.metal | g5.8xlarge | g5.12xlarge | g5.16xlarge | g5.24xlarge | g5.48xlarge | inf1.24xlarge | p3dn.24xlarge | p4d.24xlarge | p4de.24xlarge | vt1.24xlarge

特定のリージョンで 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.16xlargem7g.16xlarger7g.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 ネットワーキング機能として利用でき、サポートされているどのインスタンスでも追加費用なしで有効にできます。