本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用启动 Amazon Deep Learning AMIs 实例 EFA
最新DLAMI的 Base 已准备就绪,EFA并附带了所需的驱动程序、内核模块、libfabric、openmpi 和NCCLOFI插件
您可以在发行说明DLAMI中找到支持的 Base CUDA 版本。
注意:
-
在
mpirun
上运行NCCL应用程序时EFA,必须将EFA支持的安装的完整路径指定为:/opt/amazon/openmpi/bin/mpirun <command>
-
要使您的应用程序能够使用 EFA,请将
FI_PROVIDER="efa"
添加到mpirun
命令,如 在 DLAMI 上使用 EFA 中所示。
准备启用 EFA 的安全组
EFA 需要使用一个安全组,以允许进出安全组本身的所有入站和出站流量。有关更多信息,请参阅 EFA 文档。
-
打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择安全组,然后选择创建安全组。
-
在创建安全组窗口中,执行以下操作:
-
对于安全组名称,请输入一个描述性的安全组名称,例如
EFA-enabled security group
。 -
(可选)对于描述,请输入安全组的简要描述。
-
对于 VPC,VPC选择您打算在其中启动EFA已启用实例的。
-
选择创建。
-
-
选择您创建的安全组,然后在描述 选项卡上复制组 ID。
-
在入站和出站选项卡上,执行以下操作:
-
选择编辑。
-
对于类型,请选择所有流量。
-
对于 Source,选择 Custom。
-
将您复制的安全组 ID 粘贴到该字段中。
-
选择保存。
-
-
启用入站流量,请参考授权您 Linux 实例的入站流量。如果您跳过此步骤,您将无法与您的 DLAMI 实例进行通信。
启动实例
EFAon 上 Amazon Deep Learning AMIs 目前支持以下实例类型和操作系统:
-
p3dn:亚马逊 Linux 2、Ubuntu 20.04
-
p4d、p4de:亚马逊 Linux 2、亚马逊 Linux 2023、Ubuntu 20.04、Ubuntu 22.04
-
P5、p5e、p5eN:亚马逊 Linux 2、亚马逊 Linux 2023、Ubuntu 20.04、Ubuntu 22.04
以下部分说明如何启动EFA已启用的DLAMI实例。有关启动EFA已启用实例的更多信息,请参阅将已EFA启用的实例启动到集群置放群组。
-
打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
选择启动实例。
-
在 “选择一个AMI页面” 上,选择 “DLAMI发行说明” 页面上DLAMI找到的支持版本
-
在选择实例类型页面上,选择以下支持的实例类型之一,然后选择下一步:配置实例详细信息。有关支持的实例列表,请参阅此链接:开始使用EFA和 MPI
-
在配置实例详细信息页面中,执行以下操作:
-
对于 Number of instances (实例的数量),请输入要启动的启用了 EFA 的实例数量。
-
对于网络和子网,选择要在其中启动实例的VPC和子网。
-
[可选] 对于置放群组,请选择将实例添加到置放群组。为获得最佳性能,请在置放群组中启动实例。
-
[可选] 对于置放群组名称,请选择添加到新的置放群组,输入置放群组的描述性名称,然后对于置放群组策略选择集群。
-
请务必在此页面上启用“Elastic Fabric Adapter”。如果禁用此选项,请将子网更改为支持所选实例类型的子网。
-
在网络接口部分中,为设备 eth0 选择新网络接口。您可以选择指定一个主IPv4地址和一个或多个辅助IPv4地址。如果您要在具有关联IPv6CIDR区块的子网中启动实例,则可以选择指定一个主IPv6地址和一个或多个辅助IPv6地址。
-
选择下一步:添加存储。
-
-
在 Add Storage (添加存储) 页面上,除了 AMI 指定的卷(如根设备卷)以外,还要指定要附加到实例的卷,然后选择 Next: Add Tags (下一步:添加标签)。
-
在添加标签页面上,为实例指定标签(例如,便于用户识别的名称),然后选择下一步:配置安全组。
-
在配置安全组页面上,对于分配安全组选择选择一个现有的安全组,然后选择先前创建的安全组。
-
选择审核并启动。
-
在核查实例启动页面上,检查这些设置,然后选择启动以选择一个密钥对并启动您的实例。
验证 EFA 附件
通过控制台
启动实例后,请在 Amazon 控制台中查看实例详细信息。为此,请在EC2控制台中选择实例,然后查看页面下方窗格中的描述选项卡。找到参数“Network Interfaces: eth0”,然后单击 eth0,这将弹出一个弹出窗口。确保已启用“Elastic Fabric Adapter”。
如果未启用 EFA,您可以通过以下任一方式解决此问题:
-
使用相同的步骤终止EC2实例并启动一个新实例。确保已附加 EFA。
-
将 EFA 附加到现有实例。
-
在EC2控制台中,转到网络接口。
-
单击“创建虚拟网络接口”。
-
选择您的实例所在的相同子网。
-
确保启用“Elastic Fabric Adapter”并点击“创建”。
-
返回EC2实例选项卡并选择您的实例。
-
转到“操作:实例状态”并在附加 EFA 之前停止实例。
-
从 “操作”中,选择“网络连接:连接网络接口”。
-
选择您刚刚创建的界面,然后点击“附加”。
-
重新启动您的实例。
-
通过实例
以下测试脚本已存在于 DLAMI 中。运行它以确保内核模块正确加载。
$ fi_info -p efa
您的输出应类似于以下内容。
provider: efa fabric: EFA-fe80::e5:56ff:fe34:56a8 domain: efa_0-rdm version: 2.0 type: FI_EP_RDM protocol: FI_PROTO_EFA provider: efa fabric: EFA-fe80::e5:56ff:fe34:56a8 domain: efa_0-dgrm version: 2.0 type: FI_EP_DGRAM protocol: FI_PROTO_EFA provider: efa;ofi_rxd fabric: EFA-fe80::e5:56ff:fe34:56a8 domain: efa_0-dgrm version: 1.0 type: FI_EP_RDM protocol: FI_PROTO_RXD
验证安全组配置
以下测试脚本已存在于 DLAMI 中。运行它以确保您创建的安全组配置正确。
$ cd /opt/amazon/efa/test/ $ ./efa_test.sh
您的输出应类似于以下内容。
Starting server... Starting client... bytes #sent #ack total time MB/sec usec/xfer Mxfers/sec 64 10 =10 1.2k 0.02s 0.06 1123.55 0.00 256 10 =10 5k 0.00s 17.66 14.50 0.07 1k 10 =10 20k 0.00s 67.81 15.10 0.07 4k 10 =10 80k 0.00s 237.45 17.25 0.06 64k 10 =10 1.2m 0.00s 921.10 71.15 0.01 1m 10 =10 20m 0.01s 2122.41 494.05 0.00
如果它停止响应或未完成,请确保您的安全组具有正确的入站/出站规则。