全部产品
Search
文档中心

Elastic GPU Service:Konfigurasikan eRDMA dengan menggunakan gambar kontainer eRDMA untuk meningkatkan kinerja jaringan

更新时间:Jul 06, 2025

Elastic Remote Direct Memory Access (eRDMA) adalah teknologi jaringan berperforma tinggi yang dapat digunakan dalam kontainer Docker. Teknologi ini memungkinkan aplikasi kontainer melewati kernel dan langsung mengakses perangkat eRDMA fisik di host. eRDMA membantu meningkatkan efisiensi transfer data dan komunikasi, cocok untuk skenario yang melibatkan transfer data berskala besar dan komunikasi jaringan berperforma tinggi dalam kontainer. Topik ini menjelaskan cara menggunakan gambar kontainer eRDMA untuk mengonfigurasi eRDMA secara efisien pada instans yang dipercepat GPU.

Catatan

Jika bisnis Anda memerlukan kemampuan layanan jaringan RDMA berskala besar, Anda dapat membuat dan melampirkan antarmuka RDMA elastis (ERI) ke instans yang dipercepat GPU dari jenis instans yang mendukung eRDMA. Untuk informasi lebih lanjut, lihat Ikhtisar.

Sebelum Anda mulai

Anda harus memperoleh detail gambar kontainer eRDMA untuk mengonfigurasi gambar kontainer pada instans yang dipercepat GPU dengan mudah. Misalnya, tentukan jenis instans yang dipercepat GPU untuk mana gambar kontainer tersedia sebelum membuat instans tersebut, serta alamat gambar sebelum menarik gambar kontainer.

  1. Masuk ke Konsol Container Registry.

  2. Di panel navigasi di sebelah kiri, klik Artifact Center.

  3. Masukkan erdma di kotak pencarian Repository Name dan tekan tombol Enter. Temukan dan klik gambar kontainer egs/erdma.

    Gambar ini diperbarui setiap tiga bulan sekali. Tabel berikut menjelaskan detail gambar kontainer eRDMA.

    Nama Gambar

    Informasi Versi

    Alamat Gambar

    Instans yang Dipercepat GPU yang Tersedia

    Manfaat

    eRDMA

    • Python: 3.10.12

    • CUDA: 12.4.1

    • cuDNN: 9.1.0.70

    • NCCL: 2.21.5

    • Gambar dasar: Ubuntu 22.04

    egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/erdma:cuda12.4.1-cudnn9-ubuntu22.04

    Gambar kontainer eRDMA hanya mendukung instans yang dipercepat GPU generasi kedelapan, seperti instans ebmgn8is dan gn8is.

    Catatan

    Untuk informasi lebih lanjut tentang instans yang dipercepat GPU, lihat GPU-accelerated compute-optimized instance families (gn, ebm, and scc series).

    • Anda dapat langsung mengakses jaringan eRDMA Alibaba Cloud dari kontainer.

    • Alibaba Cloud menyediakan eRDMA, driver, dan CUDA yang sesuai untuk mendukung fitur siap pakai.

    eRDMA

    • Python: 3.10.12

    • CUDA: 12.1.1

    • cuDNN: 8.9.0.131

    • NCCL: 2.17.1

    • Gambar dasar: Ubuntu 22.04

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

Prosedur

Setelah menginstal Docker pada instans yang dipercepat GPU dan menggunakan eRDMA dalam kontainer Docker, Anda dapat langsung mengakses perangkat eRDMA dari kontainer. Dalam contoh ini, sistem operasi Ubuntu 20.04 digunakan.

  1. Buat instans yang dipercepat GPU dan konfigurasikan eRDMA.

    Untuk informasi lebih lanjut tentang operasi tersebut, lihat Aktifkan eRDMA pada Instans yang Dipercepat GPU.

    Disarankan untuk menggunakan Konsol Elastic Compute Service (ECS) guna membuat instans yang dipercepat GPU yang dikonfigurasi dengan ERI. Saat melakukan operasi tersebut, pilih Auto-install GPU Driver dan Auto-install eRDMA Software Stack.

    Catatan

    Saat membuat instans yang dipercepat GPU, sistem secara otomatis menginstal driver Tesla, CUDA, pustaka cuDNN, dan tumpukan perangkat lunak eRDMA. Metode ini lebih cepat dibandingkan instalasi manual.

    Dingtalk_20241203101142.jpg

  2. Hubungkan ke instans yang dipercepat GPU.

    Untuk informasi lebih lanjut, lihat Gunakan Workbench untuk Terhubung ke Instans Linux melalui SSH.

  3. Jalankan perintah berikut untuk menginstal Docker pada instans Ubuntu yang dipercepat GPU:

    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. Jalankan perintah berikut untuk memeriksa apakah Docker telah diinstal:

    docker -v
  5. Jalankan perintah berikut untuk menginstal paket perangkat lunak 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. Jalankan perintah berikut secara berurutan untuk memulai Docker saat startup sistem dan kemudian restart layanan Docker:

    sudo systemctl enable docker
    sudo systemctl restart docker
  7. Jalankan perintah berikut untuk menarik gambar kontainer eRDMA:

    sudo docker pull egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/erdma:cuda12.1.1-cudnn8-ubuntu22.04
  8. Jalankan perintah berikut untuk menjalankan kontainer 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

Uji dan verifikasi eRDMA

Bagian ini memberikan contoh cara menguji eRDMA pada dua instans yang dipercepat GPU bernama host1 dan host2. Dalam contoh ini, Docker diinstal pada instans, dan kontainer eRDMA berjalan seperti yang diharapkan dalam Docker.

  1. Periksa secara terpisah apakah perangkat eRDMA dalam kontainer host1 dan host2 bekerja seperti yang diharapkan.

    1. Jalankan perintah berikut untuk mengakses kontainer:

      sudo docker exec -it erdma bash
    2. Jalankan perintah berikut untuk melihat informasi tentang perangkat eRDMA dalam kontainer:

      ibv_devinfo

      Keluaran berikut menunjukkan bahwa dua perangkat eRDMA berada dalam status PORT_ACTIVE. Ini menunjukkan bahwa perangkat bekerja seperti yang diharapkan.

      查看eRDMA网卡设备.jpg

  2. Jalankan kode uji dalam file nccl-test host1 dan host2 di dalam kontainer.

    1. Jalankan perintah berikut untuk mengunduh kode uji dalam file nccl-test:

      git clone https://github.com/NVIDIA/nccl-tests.git
    2. Jalankan perintah berikut untuk mengompilasi kode uji:

      apt update
      apt install openmpi-bin libopenmpi-dev -y
      cd nccl-tests && make MPI=1 CUDA_HOME=/usr/local/cuda NCCL_HOME=/usr/local/cuda MPI_HOME=/usr/lib/x86_64-linux-gnu/openmpi
    3. Buat koneksi bebas kata sandi antara host1 dan host2 dan konfigurasikan koneksi SSH pada port 12345.

      Tunggu hingga koneksi SSH dikonfigurasi. Kemudian, jalankan perintah ssh -p 12345 ip di dalam kontainer untuk menguji apakah koneksi bebas kata sandi antara host1 dan host2 dapat dibuat.

      1. Jalankan perintah berikut di dalam kontainer host1 untuk menghasilkan kunci SSH dan menyalin kunci publik ke kontainer host2:

        ssh-keygen
        ssh-copy-id -i ~/.ssh/id_rsa.pub ${host2}
      2. Jalankan perintah berikut di dalam kontainer host2 untuk menginstal layanan SSH dan atur port mendengarkan server SSH menjadi 12345:

        apt-get update && apt-get install ssh -y
        mkdir /run/sshd
        /usr/sbin/sshd -p 12345 
      3. Jalankan perintah berikut di dalam kontainer host1 untuk menguji apakah koneksi bebas kata sandi ke kontainer host2 dapat dibuat:

        ssh root@{host2}  -p 12345
    4. Jalankan kode uji file all_reduce_perf di dalam kontainer host1:

      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

      Gambar berikut menunjukkan keluarannya.

      测试记录.jpg

  3. Jalankan perintah berikut untuk memeriksa apakah lalu lintas ditransmisikan melalui jaringan eRDMA di host (di luar kontainer):

    eadm stat -d erdma_0 -l

    Keluaran berikut menunjukkan bahwa lalu lintas ditransmisikan melalui jaringan eRDMA.

    监控流量.jpg

Referensi

  • Anda dapat mengonfigurasi eRDMA pada instans yang dipercepat GPU sehingga instans yang dipercepat GPU dalam virtual private cloud (VPC) dapat terhubung satu sama lain dengan cepat berdasarkan RDMA. Untuk informasi lebih lanjut tentang operasi tersebut, lihat Aktifkan eRDMA pada Instans yang Dipercepat GPU.

  • Dalam skenario yang melibatkan transfer data berskala besar dan komunikasi jaringan berperforma tinggi, Anda mungkin perlu menggunakan eRDMA dalam kontainer Docker pada instans yang dipercepat GPU untuk meningkatkan efisiensi transfer data dan komunikasi. Untuk informasi lebih lanjut, lihat Aktifkan eRDMA dalam Kontainer Docker.