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

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 支援下列介面和程式庫:

  • 開啟 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
執行個體類型 RDMA 讀取支援 RDMA 寫入支援
一般用途
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
儲存優化
i7ie.48xlarge
加速運算
p5en.48xlarge
trn2.48xlarge
trn2u.48xlarge
高效能運算
hpc7g.4xlarge
hpc7g.8xlarge
hpc7g.16xlarge
Nitro v4
執行個體類型 RDMA 讀取支援 RDMA 寫入支援
一般用途
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
u7inh-32tb.480xlarge
x2idn.32xlarge
x2idn.metal
x2iedn.32xlarge
x2iedn.metal
儲存優化
i4g.16xlarge
i4i.32xlarge
i4i.metal
im4gn.16xlarge
加速運算
f2.48xlarge
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
執行個體類型 RDMA 讀取支援 RDMA 寫入支援
一般用途
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 的可用執行個體類型,請使用 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.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 聯網功能,您可以在任何支援的執行個體上啟用該功能,而無需額外付費。