全部產品
Search
文件中心

Platform For AI:RDMA:使用高效能網路進行分布式訓練

更新時間:Jul 13, 2024

在大模型的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中手動安裝靈駿智算資源的Serverless的RDMA庫,才能更好的使用靈駿智算資源的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)提交訓練任務的具體操作步驟,請參見建立訓練任務