使用启动 Amazon Deep Learning AMIs 实例 EFA - Amazon Deep Learning AMIs
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用启动 Amazon Deep Learning AMIs 实例 EFA

最新DLAMI的 Base 已准备就绪,EFA并附带了所需的驱动程序、内核模块、libfabric、openmpi 和NCCLOFI插件。GPU

您可以在发行说明DLAMI中找到支持的 Base CUDA 版本。

注意:

  • mpirun上运行NCCL应用程序时EFA,必须将EFA支持的安装的完整路径指定为:

    /opt/amazon/openmpi/bin/mpirun <command>
  • 要使您的应用程序能够使用 EFA,请将 FI_PROVIDER="efa" 添加到 mpirun 命令,如 在 DLAMI 上使用 EFA 中所示。

准备启用 EFA 的安全组

EFA 需要使用一个安全组,以允许进出安全组本身的所有入站和出站流量。有关更多信息,请参阅 EFA 文档

  1. 打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择安全组,然后选择创建安全组

  3. 创建安全组窗口中,执行以下操作:

    • 对于安全组名称,请输入一个描述性的安全组名称,例如 EFA-enabled security group

    • (可选)对于描述,请输入安全组的简要描述。

    • 对于 VPC,VPC选择您打算在其中启动EFA已启用实例的。

    • 选择创建

  4. 选择您创建的安全组,然后在描述 选项卡上复制组 ID

  5. 入站出站选项卡上,执行以下操作:

    • 选择编辑

    • 对于类型,请选择所有流量

    • 对于 Source,选择 Custom

    • 将您复制的安全组 ID 粘贴到该字段中。

    • 选择保存

  6. 启用入站流量,请参考授权您 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启用的实例启动到集群置放群组

  1. 打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

  2. 选择启动实例

  3. “选择一个AMI页面” 上,选择 “DLAMI发行说明” 页面上DLAMI找到的支持版本

  4. 选择实例类型页面上,选择以下支持的实例类型之一,然后选择下一步:配置实例详细信息。有关支持的实例列表,请参阅此链接:开始使用EFA和 MPI

  5. 配置实例详细信息页面中,执行以下操作:

    • 对于 Number of instances (实例的数量),请输入要启动的启用了 EFA 的实例数量。

    • 对于网络子网,选择要在其中启动实例的VPC和子网。

    • [可选] 对于置放群组,请选择将实例添加到置放群组。为获得最佳性能,请在置放群组中启动实例。

    • [可选] 对于置放群组名称,请选择添加到新的置放群组,输入置放群组的描述性名称,然后对于置放群组策略选择集群

    • 请务必在此页面上启用“Elastic Fabric Adapter”。如果禁用此选项,请将子网更改为支持所选实例类型的子网。

    • 网络接口部分中,为设备 eth0 选择新网络接口。您可以选择指定一个主IPv4地址和一个或多个辅助IPv4地址。如果您要在具有关联IPv6CIDR区块的子网中启动实例,则可以选择指定一个主IPv6地址和一个或多个辅助IPv6地址。

    • 选择下一步:添加存储

  6. Add Storage (添加存储) 页面上,除了 AMI 指定的卷(如根设备卷)以外,还要指定要附加到实例的卷,然后选择 Next: Add Tags (下一步:添加标签)

  7. 添加标签页面上,为实例指定标签(例如,便于用户识别的名称),然后选择下一步:配置安全组

  8. 配置安全组页面上,对于分配安全组选择选择一个现有的安全组,然后选择先前创建的安全组

  9. 选择审核并启动

  10. 核查实例启动页面上,检查这些设置,然后选择启动以选择一个密钥对并启动您的实例。

验证 EFA 附件

通过控制台

启动实例后,请在 Amazon 控制台中查看实例详细信息。为此,请在EC2控制台中选择实例,然后查看页面下方窗格中的描述选项卡。找到参数“Network Interfaces: eth0”,然后单击 eth0,这将弹出一个弹出窗口。确保已启用“Elastic Fabric Adapter”。

如果未启用 EFA,您可以通过以下任一方式解决此问题:

  • 使用相同的步骤终止EC2实例并启动一个新实例。确保已附加 EFA。

  • 将 EFA 附加到现有实例。

    1. 在EC2控制台中,转到网络接口。

    2. 单击“创建虚拟网络接口”。

    3. 选择您的实例所在的相同子网。

    4. 确保启用“Elastic Fabric Adapter”并点击“创建”。

    5. 返回EC2实例选项卡并选择您的实例。

    6. 转到“操作:实例状态”并在附加 EFA 之前停止实例。

    7. 从 “操作”中,选择“网络连接:连接网络接口”。

    8. 选择您刚刚创建的界面,然后点击“附加”。

    9. 重新启动您的实例。

通过实例

以下测试脚本已存在于 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

如果它停止响应或未完成,请确保您的安全组具有正确的入站/出站规则。