RDMA:使用高性能网络进行分布式训练

在大模型的AI并行计算中,确保算力最优计算性能,需要通过降低通信量、计算和通信交叠、提升通信效率达到通信的最优。本文为您介绍使用高性能网络的配置说明。

使用限制

仅适用于基于灵骏智算资源(Serverless)提交的训练任务。

配置高性能网络变量

PAI基于灵骏智算资源,已开启了RDMA特性,且默认设置了最优NCCL变量。您可以根据训练框架、通信框架以及模型特点进行必要的调整。强烈建议您使用平台预置系统内的默认变量, 可以获得较优性能。

默认变量(平台预置)

根据不同的灵骏规格,平台已经在系统中预置了默认变量,具体请参照下表内容:

灵骏规格

NCCL变量

  • ml.gu7xf.c96m1600.8-gu108

  • ml.gu7xf.8xlarge-gu108

  • ml.gu7ef.c96m1600.8-gu100

export NCCL_IB_TC=136
export NCCL_IB_SL=5
export NCCL_IB_GID_INDEX=3
export NCCL_SOCKET_IFNAME=eth
export NCCL_DEBUG=INFO
export NCCL_IB_HCA=mlx5
export NCCL_IB_TIMEOUT=22
export NCCL_IB_QPS_PER_CONNECTION=8
export NCCL_NET_PLUGIN=none

ml.gu8xf.8xlarge-gu108

export NCCL_IB_TC=136
export NCCL_IB_SL=5
export NCCL_IB_GID_INDEX=3
export NCCL_SOCKET_IFNAME=eth
export NCCL_DEBUG=INFO
export NCCL_IB_HCA=mlx5
export NCCL_IB_TIMEOUT=22
export NCCL_IB_QPS_PER_CONNECTION=8
export NCCL_NET_PLUGIN=none

关于NCCL变量的具体说明,请参见环境变量说明

环境变量说明

NCCL关键环境变量的说明如下表所示,更多关于NCCL其他环境变量的说明,请参见NCCL链接

关键环境变量

环境变量说明

NCCL_IB_TC

该变量匹配了阿里云网络映射规则,若未配置或配置错误可能会导致性能受损。

NCCL_IB_GID_INDEX

提供推荐值,若未配置或配置错误会导致NCCL报错。

NCCL_SOCKET_IFNAME

NCCL需要选择正确的端口以建立连接,不同的规格对端口的要求不同。若未配置或配置错误可能会导致NCCL建连失败。

NCCL_DEBUG

通常将日志级别设置为INFO,这样可以获得更多NCCL相关的日志输出,有助于定位和解决潜在问题。

NCCL_IB_HCA

需要指定RDMA通信的网卡。在不同的算力节点下IBdev的数量和命名规则有所区别,若未配置或配置错误可能会导致性能受损。

NCCL_IB_TIMEOUT

增加RDMA连接超时时间,可以提升训练任务时的容错性能,若未配置或配置错误,可能会导致训练任务出现中断。

NCCL_IB_QPS_PER_CONNECTION

适当增加NCCL中每个连接的QP(Queue Pair)数量,可以有效提高网络吞吐率。

配置镜像

官方镜像

基于灵骏智算类型的资源提交训练任务时,您可以使用阿里云DLC为您提供的官方内置镜像,详情请参见使用资源配额image.png

自定义镜像

基于灵骏智算类型的资源提交训练任务时,您也可以自行构建并使用自定义镜像,注意事项如下:

环境要求

  • CUDA >= 11.2

  • NCCL >= 2.12.10

  • Python3

安装RDMA

灵骏智算资源为您提供高性能的RDMA网络,当您用自定义镜像时,需在自定义镜像的Dockerfile中手动安装灵骏智算资源的ServerlessRDMA库,才能更好的使用灵骏智算资源的RDMA网络能力。

安装RDMA库的示例代码如下。

RUN apt-get update && \
    apt-get install -y --allow-downgrades --allow-change-held-packages --no-install-recommends libnl-3-dev libnl-route-3-dev libnl-3-200 libnl-route-3-200 iproute2 udev dmidecode ethtool && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

RUN cd /tmp/ && \
    wget http://pythonrun.oss-cn-zhangjiakou.aliyuncs.com/rdma/nic-libs-mellanox-rdma-5.2-2/nic-lib-rdma-core-installer-ubuntu.tar.gz && \
    tar xzvf nic-lib-rdma-core-installer-ubuntu.tar.gz && \
    cd nic-lib-rdma-core-installer-ubuntu && \
    echo Y | /bin/bash install.sh && \
    cd .. && \
    rm -rf nic-lib-rdma-core-installer-ubuntu && \
    rm -f nic-lib-rdma-core-installer-ubuntu.tar.gz

相关文档

使用灵骏智算资源(Serverless)提交训练任务的具体操作步骤,请参见创建训练任务