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

使用eRDMA容器鏡像快速配置eRDMA提升網絡性能

eRDMA(Elastic Remote Direct Memory Access)是一種高性能網絡通信技術,將eRDMA功能引入容器(Docker)環境可以實現容器應用程序繞過操作系統內核直接訪問主機的物理eRDMA設備,從而提供更快的數據傳輸和通信效率,適用于在容器中需要大規模數據傳輸和高性能網絡通信的應用場景。本文介紹如何使用eRDMA鏡像在GPU實例上快速配置eRDMA。

說明

如果您的業務需要具備大規模RDMA的網絡服務能力,您可以在支持eRDMA能力的GPU實例規格上通過創建掛載支持彈性RDMA能力的網卡來實現。更多信息,請參見eRDMA概述

準備工作

獲取eRDMA容器鏡像詳細信息,以便您在GPU實例上配置該容器鏡像時使用。例如,創建GPU實例時需要提前了解容器鏡像適用的GPU實例類型,拉取容器鏡像時需要提前獲取鏡像地址等信息。

  1. 登錄容器鏡像服務控制臺

  2. 在左側導航欄,單擊制品中心

  3. 倉庫名稱搜索框,搜索erdma,并選擇目標鏡像egs/erdma

    eRDMA容器鏡像大概每3個月內更新一次。鏡像詳情如下所示:

    鏡像名稱

    版本信息

    鏡像地址

    適用的GPU實例

    優勢

    eRDMA

    • Python:3.10.12

    • CUDA:12.1.1

    • cuDNN:8.9.0.131

    • NCCL:2.17.1

    • 基礎鏡像:Ubuntu 22.04

    egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/erdma:cuda12.1.1-cudnn8-ubuntu22.04

    eRDMA鏡像僅支持以下GPU實例選擇,更多信息,請參見GPU計算型

    • ebmgn7ex

    • ebmgn7ix

    • 在容器內直接訪問阿里云eRDMA網絡。

    • 阿里云提供eRDMA和驅動、CUDA適配來保障功能的開箱即用。

操作步驟

在GPU實例中安裝了Docker環境,將eRDMA功能引入Docker環境后,您可以在容器內直接訪問eRDMA設備。本操作以ebmgn7ix實例規格、Ubuntu 20.04操作系統為例。

  1. 創建GPU實例并配置eRDMA功能。

    具體操作,請參見在GPU實例上配置eRDMA

    建議您在ECS管理控制臺上創建配置了eRDMA網卡的GPU實例,并選中安裝GPU驅動安裝eRDMA軟件棧選項。

    說明

    GPU實例創建完成后,會同時自動安裝Tesla驅動、CUDA、cuDNN庫以及eRDMA軟件棧等,相比手動安裝方式更快捷。

    創建GPU實例.jpg

  2. 遠程連接GPU實例。

    具體操作,請參見通過密碼或密鑰認證登錄Linux實例

  3. 執行以下命令,在Ubuntu系統GPU實例上安裝Docker環境。

    sudo apt-get update
    sudo apt-get -y install ca-certificates curl
    
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL http://mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] http://mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu \
      $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io
  4. 執行以下命令,檢查Docker是否安裝成功。

    docker -v
  5. 執行以下命令,安裝nvidia-container-toolkit軟件包。

    curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
        sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
        sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
    sudo apt-get update
    sudo apt-get install -y nvidia-container-toolkit
  6. 依次執行以下命令,設置Docker開機自啟動并重啟Docker服務。

    sudo systemctl enable docker
    sudo systemctl restart docker
  7. 執行以下命令,拉取eRDMA鏡像。

    sudo docker pull egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/erdma:cuda12.1.1-cudnn8-ubuntu22.04
  8. 執行以下命令,運行eRDMA容器。

     sudo docker run -d -t --network=host --gpus all \
      --privileged \
      --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 \
      --name erdma \
      -v /root:/root \
      egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/erdma:cuda12.1.1-cudnn8-ubuntu22.04

測試驗證

本測試以創建2個GPU實例(例如host1和host2)為例,2個GPU實例上均已安裝了Docker環境,并且該環境下已成功運行eRDMA容器。

  1. 在host1和host2中的容器內,分別查看eRDMA網卡設備是否正常。

    1. 執行以下命令,進入容器環境。

      sudo docker exec -it erdma bash
    2. 執行以下命令,在容器內查看eRDMA網卡設備。

      sudo ibv_devinfo

      回顯信息如下,可以看到2個eRDMA網卡設備狀態為PORT_ACTIVE,即eRDMA網卡設備狀態正常。

      查看eRDMA網卡設備.jpg

  2. 在容器內測試host1和host2的nccl-test。

    1. 執行以下命令,下載nccl-test測試代碼。

      sudo git clone https://github.com/NVIDIA/nccl-tests.git
    2. 執行以下命令,編譯nccl-test。

      sudo apt update
      sudo apt install openmpi-bin libopenmpi-dev -y
      sudo cd nccl-test && make MPI=1 CUDA_HOME=/usr/local/cuda-12.1/ NCCL_HOME=/usr/local/cuda-12.1/ MPI_HOME=/usr/lib/x86_64-linux-gnu/openmpi
    3. 建立host1和host2之間的免密連接,并配置通過12345端口進行SSH連接。

      SSH連接配置后,您可以在容器內通過ssh -p 12345 ip去測試兩個eRDMA Docker環境是否可以免密連接。測試命令如下:

      1. 在host1中的容器內,執行以下命令,生成SSH密鑰并將公鑰復制到host2中的容器內。

        sudo ssh-keygen
        sudo ssh-copy-id -i ~/.ssh/id_rsa.pub ${host2}
      2. 在host2中的容器內,執行以下命令,安裝SSH服務并指定SSH服務器的監聽端口號為12345

        sudo apt-get update && apt-get install ssh -y
        sudo mkdir /run/sshd
        sudo /usr/sbin/sshd -p 12345 
      3. 在host1中的容器內,執行以下命令,測試是否免密連接host2中的容器。

        sudo ssh ecs-user@{host2}  -p 12345
    4. 在host1中的容器內,執行測試all_reduce_perf。

      sudo mpirun --allow-run-as-root -np 16 -npernode 8 -H 172.16.15.237:8,172.16.15.235:8 \
       --bind-to none -mca btl_tcp_if_include eth0 \
       -x NCCL_SOCKET_IFNAME=eth0 \
       -x NCCL_IB_DISABLE=0 \
       -x NCCL_IB_GID_INDEX=1 \
       -x NCCL_NET_GDR_LEVEL=5 \
       -x NCCL_DEBUG=INFO \
       -x NCCL_ALGO=Ring -x NCCL_P2P_LEVEL=3 \
       -x LD_LIBRARY_PATH -x PATH \
       -mca plm_rsh_args "-p 12345" \
       /workspace/nccl-tests/build/all_reduce_perf -b 1G -e 1G -f 2 -g 1 -n 20

      回顯結果如下所示:

      測試記錄.jpg

  3. 執行以下命令,在host端(容器外)監控eRDMA網絡是否有流量。

    sudo eadm stat -d erdma_0 -l

    回顯結果如下所示,表示eRDMA網絡存在流量,即使用的是eRDMA網絡。

    監控流量.jpg

相關文檔

  • 在GPU實例上配置eRDMA,各GPU實例間在VPC網絡下可以實現RDMA直通加速互聯。具體操作,請參見在GPU實例上配置eRDMA

  • 在大規模數據傳輸和高性能網絡通信的應用場景,如果您需要在GPU實例上自行配置Docker環境,并將eRDMA功能引入到該Docker環境,以提供更快的數據傳輸和通信效率。具體操作,請參見在容器(Docker)中配置eRDMA