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

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

使用 EFA 启动 Amazon 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 实例进行通信。

启动实例

目前 Amazon 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 附件

通过控制台

启动实例后,请在 Amazon 控制台中查看实例详细信息。为此,请在 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

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