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

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

启动Amazon Deep Learning AMI带有 EFA 的实例

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

支持的 CUDA 版本:只有使用 EFA 的 NCCL 应用程序才在 CUDA-10.0、CUDA-10.1、CUDA-10.2 和 CUDA-11.0 上受支持,因为 NCCL OFI 插件要求 NCCL 版本 > 2.4.2。

注意:

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

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

准备启用 EFA 的安全组

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

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

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

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

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

    • (可选)适用于说明中,输入安全组的简要描述。

    • 适用于VPC中,选择要在其中启动启用了 EFA 的实例的 VPC。

    • 选择 Create (创建)

  4. 选择您创建的安全组,然后在说明选项卡上,复制Group ID (组 ID)

  5. 在存储库的入站出站选项卡中,执行以下操作:

    • 选择 Edit

    • 对于 Type (类型),请选择 All traffic (所有流量)

    • 对于 Source,选择 Custom

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

    • 选择 Save。 

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

启动实例

EFA 关于Amazon Deep Learning AMI目前支持以下实例类型和操作系统:

  • p3dn.24xlarge:Amazon Linux、Amazon Linux 2、Ubuntu 16.04 和 Ubuntu 18.04

  • p4d.24xlarge:亚马逊 Linux 2、Ubuntu 16.04 和 Ubuntu 18.04

以下章节说明如何启动启用 EFA 的 DLAMI 实例。有关启动启用 EFA 的实例的更多信息,请参阅在集群置放群置放群组中启动启用了 EFA 的实例

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

  2. 选择 Launch Instance

  3. 在存储库的选择 AMI页面上,选择 '深度学习 AMI (Ubuntu 18.04) 25.0 版本

  4. 在存储库的选择一个实例类型页面上,选择以下支持的实例类型之一,然后选择后续:配置实例详细信息。有关支持的实例列表,请参阅此链接:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html

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

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

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

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

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

    • 请确保启用“弹性面料适配器”在此页面上。如果禁用此选项,请将子网更改为支持所选实例类型的子网。 

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

    • 选择 Next:。添加存储

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

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

  8. 在存储库的配置安全组页面, 用于分配安全组中,选择选择现有安全组,然后选择您之前创建的安全组

  9. 选择 Review and Launch

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

验证 EFA 附件

通过控制台

启动实例后,在Amazon控制台。为此,请在 EC2 控制台中选择实例,然后查看页面下部窗格中的 Description (描述) 选项卡。找到参数“Network Interfaces: eth0”,然后单击 eth0,这将弹出一个弹出窗口。确保 “弹性织物适配器” 已启用。

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

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

  • 将 EFA 附加到现有实例。

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

    2. 单击 Create a Network Interface (创建虚拟网络接口)。

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

    4. 确保启用 “弹性面料适配器” 并点击 Create (创建)。

    5. 返回 EC2 Instances (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 ~/src/bin/efa-tests/ $ ./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

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