使用 EFA 启动 AWS Deep Learning AMI 实例 - 深度学习 AMI

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

使用 EFA 启动 AWS Deep Learning AMI 实例

最新基础 DLAMI 可随时与 EFA 结合使用,并随附所需的驱动程序、内核模块、libfabric、openmpi 和适用于 GPU 实例的 NCCL OFI 插件

您可以在发布说明中找到基础 DLAMI 的支持 CUDA 版本。

注意:

  • 在 EFA 上使用 mpirun 运行 NCCL 应用程序时,必须将 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,请选择要在其中启动启用了 EFA 的实例的 VPC。

    • 选择创建

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

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

    • 选择编辑

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

    • 对于 Source,选择 Custom

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

    • 选择保存

  6. 启用入站流量,请参考授权您 Linux 实例的入站流量。如果跳过此步骤,您将无法与您的 DLAMI 实例进行通信。

启动实例

目前 AWS Deep Learning AMI ,以下实例类型和操作系统支持上的 EFA:

  • p3dn.24xLarge:亚马逊 Linux 2、Ubuntu 20.04

  • p4d.24xLarge:亚马逊 Linux 2、Ubuntu 20.04

  • p5.48xLarge:亚马逊 Linux 2、Ubuntu 20.04

以下部分介绍了如何启动 EFA 启用的 DLAMI 实例。有关启动 EFA 启用的 DLAMI 实例的更多信息,请参阅在集群置放群组中启动 EFA 启用的实例

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 选择 Launch Instance(启动实例)

  3. 选择 AMI 页面上,选择在 DLAMI 发行说明页面上找到的支持的 D LAMI

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

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

    • 对于实例的数量,请输入要启动的启用了 EFA 的实例数量。

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

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

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

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

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

    • 选择下一步:添加存储

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

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

  8. 在 “配置安全组” 页面上,在 “分配安全组” 中,选择 “选择现有安全组”,然后选择您之前创建的安全组

  9. 选择审核并启动

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

验证 EFA 附件

通过控制台

启动实例后,请在 AWS 控制台中查看实例详细信息。为此,请在 EC2 控制台中选择实例,然后查看页面下部窗格中的 Description (描述) 选项卡。找到参数“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

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