日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

ACCL:阿里云自研高性能集合通信庫(kù)

更新時(shí)間:

ACCL(Alibaba Collective Communication Library)是阿里云自研的,基于NCCL(Nvidia Collective Communication Library)開(kāi)發(fā)的集合通信庫(kù)。它結(jié)合阿里云自身網(wǎng)絡(luò)特點(diǎn)以及豐富的大模型任務(wù)通信調(diào)優(yōu)經(jīng)驗(yàn),可為客戶任務(wù)提供更高的通信性能,并且具備一定的故障診斷和自愈能力。本文為您介紹ACCL的主要特性和安裝方法。

ACCL支持的增強(qiáng)特性

ACCL目前支持的主要增強(qiáng)特性清單如下,所有的增強(qiáng)特性都支持通過(guò)環(huán)境變量來(lái)開(kāi)啟或關(guān)閉:

  • 修復(fù)了對(duì)應(yīng)NCCL社區(qū)開(kāi)源版本的BUG;

  • 對(duì)集合通信不同算子和不同消息區(qū)間進(jìn)行了調(diào)優(yōu),使其相比開(kāi)源NCCL擁有更好的性能;

  • 支持訓(xùn)練過(guò)程中集合通信統(tǒng)計(jì)分析,可用于診斷訓(xùn)練過(guò)程中設(shè)備故障導(dǎo)致的計(jì)算/通信Slow(慢)和Hang(掛起)等問(wèn)題,配合阿里云PAIAIMaster:彈性自動(dòng)容錯(cuò)引擎C4D:模型訓(xùn)練任務(wù)問(wèn)題診斷工具,可以快速的進(jìn)行任務(wù)的異常檢測(cè)和自動(dòng)容錯(cuò);

  • 支持多路徑傳輸和負(fù)載均衡功能,在訓(xùn)練集群中降低甚至消除哈希不均導(dǎo)致的擁塞問(wèn)題,提升整體訓(xùn)練性能;

使用限制

僅在AI計(jì)算資源(靈駿智算資源)部署的地域,使用靈駿智算資源和自定義鏡像提交DLC任務(wù)時(shí),需要安裝ACCL。

安裝方法

PAI官方鏡像默認(rèn)已安裝ACCL,當(dāng)您使用官方鏡像提交DLC任務(wù)時(shí),無(wú)需執(zhí)行以下操作。

步驟一:確認(rèn)鏡像中使用的Pytorch依賴的NCCL庫(kù)是否為動(dòng)態(tài)庫(kù)

在自定義鏡像容器中執(zhí)行以下操作步驟:

  1. 確認(rèn)PyTorch庫(kù)所在位置。

    如果已知PyTorch安裝于特定目錄,您可以直接在該目錄下進(jìn)行搜索。例如,在確認(rèn)PyTorch位于/usr/local/lib的情況下,通過(guò)執(zhí)行查詢命令,成功定位到libtorch.so文件的具體路徑,如下所示:

    find /usr/local/lib -name "libtorch*"
    # 示例結(jié)果如下
    /usr/local/lib/python3.10/dist-packages/torch/lib/libtorchcuda.so
    /usr/local/lib/pvthon3.10/dist-packages/torch/lib/libtorch.so
    /usr/local/lib/python3.10/dist-packages/torch/lib/libtorchbindtest.so
  2. 使用ldd命令查看PyTorch庫(kù)依賴NCCL庫(kù)的方式。

    ldd libtorch.so | grep nccl
    • 如果命令返回結(jié)果為如下形式,則說(shuō)明PyTorch是以動(dòng)態(tài)庫(kù)的方式依賴NCCL,可以繼續(xù)根據(jù)后續(xù)步驟進(jìn)行ACCL的下載與安裝。

      libnccl.so.2=>/usr/lib/x86_64-linux-gnu/libnccl.so.2(0x00007feab3b27000)
    • 如果命令返回結(jié)果為空,說(shuō)明PyTorch是以非動(dòng)態(tài)庫(kù)的方式依賴NCCL,則無(wú)法安裝ACCL。您需要基于NVIDIA官方提供的NGC鏡像制作您自己的鏡像,或者將使用的PyTorch庫(kù)改為依賴NCCL動(dòng)態(tài)庫(kù)的版本,之后才能繼續(xù)下載安裝ACCL。

步驟二:確認(rèn)鏡像中使用的CUDA版本

您可以在自定義鏡像容器中,使用如下命令確認(rèn)當(dāng)前環(huán)境依賴的CUDA版本。

nvidia-smi

返回結(jié)果示例如下圖所示,表明使用的CUDA版本為12.2。您的CUDA版本以實(shí)際返回結(jié)果為準(zhǔn)。image

步驟三:下載CUDA版本對(duì)應(yīng)的ACCL

CUDA版本對(duì)應(yīng)的ACCL下載鏈接如下:

CUDA版本

ACCL庫(kù)下載鏈接

12.3

https://accl-n.oss-cn-beijing.aliyuncs.com/cuda12.3/lib/libnccl.so.2

12.2

https://accl-n.oss-cn-beijing.aliyuncs.com/cuda12.2/lib/libnccl.so.2

12.1

https://accl-n.oss-cn-beijing.aliyuncs.com/cuda12.1/lib/libnccl.so.2

11.7

https://accl-n.oss-cn-beijing.aliyuncs.com/cuda11.7/lib/libnccl.so.2

11.4

https://accl-n.oss-cn-beijing.aliyuncs.com/cuda11.4/lib/libnccl.so.2

您可以在自定義鏡像容器中,使用如下命令下載與CUDA版本相對(duì)應(yīng)的ACCL,以CUDA 12.3版本為例:

wget http://accl-n.oss-cn-beijing.aliyuncs.com/cuda12.3/lib/libnccl.so.2

步驟四:安裝ACCL庫(kù)

在安裝ACCL庫(kù)之前,您需要先確認(rèn)系統(tǒng)是否已經(jīng)安裝NCCL。您可以使用如下命令確認(rèn)libnccl.so.2庫(kù)文件是否已存在:

sudo find / -name "libnccl.so.2"

在查詢結(jié)果中,可能會(huì)出現(xiàn)以下兩種情況,并針對(duì)每種情況給出相應(yīng)的處理措施:

  • 未發(fā)現(xiàn)libnccl.so.2文件,或者該文件存在于/usr/lib64/lib64系統(tǒng)目錄中。針對(duì)該情況,您可以直接使用cp命令,將新下載的libnccl.so.2文件復(fù)制到上述任一缺失的系統(tǒng)目錄中,以確保其可用性。

    sudo cp -f ./libnccl.so.2 /usr/lib64
  • 如果搜到libnccl.so.2文件位于其它目錄,比如/opt/xxx/,這種情況可能是因?yàn)?span id="z68uejxpaoma" class="help-letter-space">NCCL的安裝目錄未使用默認(rèn)路徑導(dǎo)致的。您同樣可以使用cp命令直接將新下載的libnccl.so.2文件復(fù)制到該目錄,以覆蓋現(xiàn)有文件。

    sudo cp -f libnccl.so.2 /opt/xxx/

步驟五:刷新動(dòng)態(tài)庫(kù)

在自定義鏡像容器中,使用如下命令刷新動(dòng)態(tài)庫(kù)緩存。

sudo ldconfig

步驟六:確認(rèn)是否成功加載ACCL庫(kù)

  1. 使用自定義鏡像提交DLC任務(wù),詳情請(qǐng)參見(jiàn)創(chuàng)建訓(xùn)練任務(wù)

  2. 查看任務(wù)日志,如果在任務(wù)啟動(dòng)日志中顯示了如下ACCL版本信息,則表明該任務(wù)已成功應(yīng)用了ACCL庫(kù)。如何查看任務(wù)日志,請(qǐng)參見(jiàn)查看訓(xùn)練詳情

    說(shuō)明

    日志中務(wù)必出現(xiàn)accl-n標(biāo)識(shí),缺失則表明ACCL庫(kù)未成功加載。

    NCCL version 2.20.5.7-accl-n+cuda12.4, COMMIT_ID Zeaa6674c2f1f896e3a6bbd77e85231e0700****, BUILD_TIME 2024-05-10 15:40:56

推薦的環(huán)境變量配置

基于日常使用ACCL的經(jīng)驗(yàn),PAI團(tuán)隊(duì)整理了一系列能夠在不同環(huán)境中提升通信吞吐率的環(huán)境變量,供您參考使用:

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_MIN_NCHANNELS=4
export NCCL_NET_PLUGIN=none
export ACCL_C4_STATS_MODE=CONN
export ACCL_IB_SPLIT_DATA_NUM=4
export ACCL_IB_QPS_LOAD_BALANCE=1
export ACCL_IB_GID_INDEX_FIX=1
export ACCL_LOG_TIME=1

關(guān)鍵環(huán)境變量說(shuō)明如下:

環(huán)境變量

描述

NCCL_IB_TC

該變量匹配了阿里云網(wǎng)絡(luò)映射規(guī)則,若未配置或配置錯(cuò)誤可能會(huì)導(dǎo)致性能受損。

NCCL_IB_GID_INDEX

設(shè)置RDMA協(xié)議使用的GID,若未配置或配置錯(cuò)誤會(huì)導(dǎo)致NCCL報(bào)錯(cuò)。

NCCL_SOCKET_IFNAME

NCCL需要選擇正確的端口以建立連接,不同的規(guī)格對(duì)端口的要求不同。若未配置或配置錯(cuò)誤可能會(huì)導(dǎo)致NCCL建連失敗。

NCCL_DEBUG

通常將日志級(jí)別設(shè)置為INFO,這樣可以獲得更多NCCL相關(guān)的日志輸出,有助于定位和解決潛在問(wèn)題。

NCCL_IB_HCA

指定RDMA通信使用的網(wǎng)卡,若未配置或配置錯(cuò)誤可能會(huì)導(dǎo)致性能受損。

NCCL_IB_TIMEOUT

設(shè)置RDMA連接超時(shí)時(shí)間,可以提升訓(xùn)練任務(wù)時(shí)的容錯(cuò)性能。若未配置或配置錯(cuò)誤,可能會(huì)導(dǎo)致訓(xùn)練任務(wù)出現(xiàn)中斷。

NCCL_IB_QPS_PER_CONNECTION

適當(dāng)增加NCCL中每個(gè)連接的QP(Queue Pair)數(shù)量,可以有效提高網(wǎng)絡(luò)吞吐率。

NCCL_NET_PLUGIN

配置NCCL網(wǎng)絡(luò)插件,建議配置為none,以防止誤加載其他插件,從而影響系統(tǒng)性能。

ACCL_C4_STATS_MODE

控制ACCL統(tǒng)計(jì)信息的維度,目前建議配置為CONN,代表按照連接維度進(jìn)行統(tǒng)計(jì)。

ACCL_IB_SPLIT_DATA_NUM

將數(shù)據(jù)拆分到多個(gè)QP(Queue Pair)中進(jìn)行發(fā)送。

ACCL_IB_QPS_LOAD_BALANCE

是否開(kāi)啟Load Balance功能。

ACCL_IB_GID_INDEX_FIX

配置為1后,在任務(wù)啟動(dòng)前會(huì)自動(dòng)檢查GID是否異常,并且可以自動(dòng)繞過(guò)這類異常。

ACCL_LOG_TIME

配置為1后,在打印的日志前會(huì)加上具體的時(shí)間,方便定位問(wèn)題。