適用於 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 基本概念
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 雲端,這意味著應用程式與 MPI 連接,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 裝置傳輸的流量。
-
目前不支援 P4d/P4de/DL1 執行個體與其他執行個體類型之間的 EFA 流量。
-
支援多個網路卡的執行個體類型可以設定為每個網路卡一個 EFA。所有其他支援的執行個體類型每個執行個體只支援一個 EFA。
-
對於
c7g.16xlarge
,在連接 EFA 時,不支援m7g.16xlarge
和r7g.16xlarge
專用執行個體和專用主機。 -
EFA 流量無法跨可用區域或 VPCs。這不適用於來自 EFA 介面 ENA 裝置的一般 IP 流量。
-
EFA OS-bypass 流量不可路由傳送。來自 EFA 介面 ENA 裝置的正常 IP 流量仍然可以路由。
-
AWS Outposts 上不支援 EFA。
-
EFA (EFA 搭配 ENA) 介面的 EFA 裝置僅在以AWS Cloud Digital Interface軟體開發套件 (AWS CDI SDK) 為基礎的應用程式支援 Windows 執行個體。如果您將 EFA (EFA 搭配 ENA) 介面連接至非 CDI SDK 型應用程式的 Windows 執行個體,則其可做為 ENA 介面運作,無需新增 EFA 裝置功能。Windows 或 Linux 上的AWS CDI應用程式不支援僅限 EFA 介面。如需詳細資訊,請參閱AWS Cloud Digital Interface 軟體開發套件 (AWS CDI SDK) 使用者指南。
EFA 定價
EFA 是選用的 Amazon EC2 聯網功能,您可以在任何支援的執行個體上啟用該功能,而無需額外付費。