適用於 Amazon EC2 上的 AI/ML 和 HPC 工作負載的 Elastic Fabric Adapter - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

適用於 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 和更新版本整合,並支援適用於 AI 和 ML 應用程式的 Nvidia Collective Communications Library (NCCL),以及適用於 HPC 應用程式的 Open MPI 4.1 和更新版本以及 Intel MPI 2019 Update 5 和更新版本。

EFA 支援對大多數支援 Nitro 第 4 版及更新版本的執行個體類型進行 RDMA (遠端直接記憶體存取) 寫入。Nitro 第 4 版及更新版本的所有執行個體都支援 RDMA 讀取。如需詳細資訊,請參閱支援的執行個體類型

EFA 基本概念

EFA 裝置可以透過兩種方式連接到 EC2 執行個體:

  1. 使用傳統的 EFA 介面,也稱為 EFA 搭配 ENA,這會同時建立 EFA 裝置和 ENA 裝置。

  2. 使用僅限 EFA 介面,僅建立 EFA 裝置。

EFA 裝置透過可擴展可靠資料包 (SRD) 通訊協定提供內建 OS-bypass 和擁塞控制等功能。EFA 裝置功能可實現低延遲、可靠的傳輸功能,讓 EFA 介面為 Amazon EC2 上的 HPC 和 ML 應用程式提供更好的應用程式效能。雖然 ENA 裝置提供傳統 IP 網路。

將傳統 HPC 軟體堆疊與使用 EFA 的 HPC 軟體堆疊作對比。

傳統上,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 網路介面的比較。

ENA EFA (EFA 搭配 ENA) 僅限 EFA
支援 IP 網路功能
可以指派 IPv4 或 IPv6 地址
可用作執行個體的主要網路介面
計入執行個體的 ENI 連接限制
執行個體類型支援 支援所有 Nitro 型執行個體類型 支援的執行個體類型 支援的執行個體類型
EC2 APIs 中的參數命名 interface efa efa-only
EC2 主控台中的欄位命名 沒有選取項目 EFA 搭配 ENA 僅限 EFA

支援的介面和程式庫

EFA 支援下列介面和程式庫:

  • 開啟 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
加速運算
p6-b200.48xlarge No 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 Yes
r8g.48xlarge No Yes
r8g.metal-24xl No Yes
r8g.metal-48xl No Yes
r8gd.24xlarge No No
r8gd.48xlarge No No
r8gd.metal-24xl No No
r8gd.metal-48xl No No
x8g.24xlarge No Yes
x8g.48xlarge No Yes
x8g.metal-24xl No Yes
x8g.metal-48xl No Yes
儲存優化
i7ie.48xlarge Yes No
i7ie.metal-48xl Yes No
i8g.48xlarge No No
加速運算
p5en.48xlarge No Yes
p6e-gb200.36xlarge No Yes
trn2.48xlarge No Yes
trn2u.48xlarge No 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 No Yes
r6a.metal No Yes
r6i.32xlarge No Yes
r6i.metal No Yes
r6idn.32xlarge No Yes
r6idn.metal No Yes
r6in.32xlarge No Yes
r6in.metal No Yes
r6id.32xlarge No Yes
r6id.metal No Yes
r7a.48xlarge No Yes
r7a.metal-48xl No Yes
r7g.16xlarge No Yes
r7g.metal No Yes
r7gd.16xlarge No Yes
r7gd.metal No Yes
r7i.48xlarge No Yes
r7i.metal-48xl No Yes
r7iz.32xlarge No Yes
r7iz.metal-32xl No Yes
u7i-6tb.112xlarge No Yes
u7i-8tb.112xlarge No Yes
u7i-12tb.224xlarge No Yes
u7in-16tb.224xlarge No Yes
u7in-24tb.224xlarge No Yes
u7in-32tb.224xlarge No Yes
u7inh-32tb.480xlarge No No
x2idn.32xlarge No Yes
x2idn.metal No Yes
x2iedn.32xlarge No Yes
x2iedn.metal No Yes
儲存優化
i4g.16xlarge Yes Yes
i4i.32xlarge Yes Yes
i4i.metal Yes Yes
i7i.24xlarge Yes Yes
i7i.48xlarge Yes Yes
i7i.metal-48xl Yes Yes
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.48xlarge No Yes
p5e.48xlarge No Yes
trn1.32xlarge No Yes
trn1n.32xlarge No 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 的可用執行個體類型,請使用 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 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 具有下列限制:

注意

EFA 流量是指透過 EFA (EFA 搭配 ENA) 或僅限 EFA 介面的 EFA 裝置傳輸的流量。

  • 並非所有執行個體類型都支援 RDMA 寫入。如需詳細資訊,請參閱支援的執行個體類型

  • 目前不支援 P4d/P4de/DL1 執行個體與其他執行個體類型之間的 EFA 流量。

  • 支援多個網路卡的執行個體類型可以設定為每個網路卡一個 EFA。所有其他支援的執行個體類型每個執行個體只支援一個 EFA。

  • 對於 c7g.16xlarge,在連接 EFA 時,不支援 m7g.16xlarger7g.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 聯網功能,您可以在任何支援的執行個體上啟用該功能,而無需額外付費。