本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
適用於 Amazon EC2 上的 AI/ML 和 HPC 工作負載的 Elastic Fabric Adapter
Elastic Fabric Adapter (EFA) 是可連接到 Amazon EC2 執行個體的網路裝置,用以加速人工智慧 (AI)、機器學習 (ML) 和高效能運算 (HPC) 應用程式。EFA 可讓您實現內部部署的 AI/ML 或 HPC 叢集的應用程式效能,並具有 AWS 雲端提供的可擴展性、靈活性和彈性。
EFA 比雲端式 HPC 系統中傳統上使用的 TCP 傳輸,提供更低和更一致的延遲及更高的傳輸量。它可增強執行個體間通訊的效能,在擴展 HPC 和機器學習應用程式時不可或缺。它經過最佳化,可在現有的 AWS 網路基礎設施上運作,並且可以根據應用程式需求進行擴展。
EFA 整合 Libfabric 1.7.0 和更新版本,並支援適用於 HPC 應用程式的 Open MPI 4 和更新版本及 Intel MPI 2019 Update 5 和更新版本,以及適用於機器學習應用程式的 Nvidia Collective Communications Library (NCCL)。
EFA 支援對大多數支援 Nitro 第 4 版及更新版本的執行個體類型進行 RDMA (遠端直接記憶體存取) 寫入。Nitro 第 4 版及更新版本的所有執行個體都支援 RDMA 讀取。如需詳細資訊,請參閱支援的執行個體類型。
目錄
EFA 基本概念
EFA 裝置可以透過兩種方式連接到 EC2 執行個體:
-
使用傳統的 EFA 介面,也稱為 EFA 搭配 ENA,這會同時建立 EFA 裝置和 ENA 裝置。
-
使用僅限 EFA 介面,僅建立 EFA 裝置。
EFA 裝置透過可擴展可靠資料包 (SRD) 通訊協定提供內建 OS-bypass 和擁塞控制等功能。EFA 裝置功能可實現低延遲、可靠的傳輸功能,讓 EFA 介面為 Amazon EC2 上的 HPC 和 ML 應用程式提供更好的應用程式效能。雖然 ENA 裝置提供傳統 IP 網路。

傳統上,AI/ML 應用程式使用 NCCL,和 HPC 應用程式使用 Message Passing Interface (MPI) 來與系統的網路傳輸連接。在 AWS 雲端中,這表示應用程式會與 NCCL 或 MPI 連接,然後會使用作業系統的 TCP/IP 堆疊和 ENA 裝置驅動程式來啟用執行個體之間的網路通訊。
使用傳統 EFA (EFA 搭配 ENA) 或僅限 EFA 介面,AI/ML 應用程式會使用 NCCL 和 HPC 應用程式使用 MPI,直接與 Libfabric API 連接。Libfabric API 會繞過作業系統的核心,直接與 EFA 裝置通訊來將封包放到網路上。這減少了額外負荷,使 AI/ML 和 HPC 應用程式能夠更有效率地執行。
注意
Libfabric 是 OpenFabrics Interfaces (OFI) 框架的核心元件,定義並匯出 OFI 的使用者空間 API。如需詳細資訊,請參閱 Libfabric OpenFabrics
ENA、EFA 和僅限 EFA 網路介面之間的差異
Amazon EC2 提供兩種類型的網路介面:
-
ENA 介面提供支援 VPC IP 聯網所需的所有傳統 IP 聯網和路由功能。如需詳細資訊,請參閱在 EC2 執行個體上使用 ENA 啟用增強型網路。
-
EFA (EFA 搭配 ENA) 介面提供用於 IP 聯網的 ENA 裝置和用於低延遲、高輸送量通訊的 EFA 裝置。
-
僅 EFA 介面僅支援 EFA 裝置功能,沒有傳統 IP 網路的 ENA 裝置。
下表提供 ENA、EFA 和僅限 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 的可用執行個體類型,請使用 describe-instance-types--region
參數。包含 --filters
參數以將結果範圍限定為支援 EFA 的執行個體類型,以及包含 --query
參數以將輸出範圍限定為 InstanceType
的值。
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 和 12 | ✓ | ✓ |
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 裝置傳輸的流量。
-
並非所有執行個體類型都支援 RDMA 寫入。如需詳細資訊,請參閱支援的執行個體類型。
-
目前不支援 P4d/P4de/DL1 執行個體與其他執行個體類型之間的 EFA 流量。
-
支援多個網路卡的執行個體類型可以設定為每個網路卡一個 EFA。所有其他支援的執行個體類型每個執行個體只支援一個 EFA。
-
對於
c7g.16xlarge
,在連接 EFA 時,不支援m7g.16xlarge
和r7g.16xlarge
專用執行個體和專用主機。 -
EFA 流量無法跨可用區域或 VPCs。這不適用於來自 EFA 介面 ENA 裝置的一般 IP 流量。
-
EFA OS-bypass 流量不可路由傳送。來自 EFA 介面 ENA 裝置的正常 IP 流量仍然可以路由。
-
EFA 不支援 on AWS Outposts。
-
只有 AWS Cloud Digital Interface 軟體開發套件 (AWS CDI SDK) 型應用程式支援 Windows 執行個體 EFA (EFA 搭配 ENA) 介面的 EFA 裝置。如果您將 EFA (EFA 搭配 ENA) 介面連接至非 CDI SDK 型應用程式的 Windows 執行個體,則其可做為 ENA 介面運作,無需新增 EFA 裝置功能。Windows 或 Linux 上的 AWS CDI 應用程式不支援僅限 EFA 界面。如需詳細資訊,請參閱AWS Cloud Digital Interface 軟體開發套件 (AWS CDI SDK) 使用者指南。
EFA 定價
EFA 是選用的 Amazon EC2 聯網功能,您可以在任何支援的執行個體上啟用該功能,而無需額外付費。