All Products
Search
Document Center

Elastic GPU Service:Tingkatkan kinerja jaringan dengan gambar eRDMA

Last Updated:Jun 25, 2026

Mengintegrasikan eRDMA ke dalam lingkungan kontainer (Docker) memungkinkan aplikasi melewati kernel sistem operasi dan langsung mengakses perangkat eRDMA fisik host. Hal ini mempercepat transfer data dan komunikasi, sehingga ideal untuk aplikasi berbasis kontainer yang memerlukan transfer data skala besar dan jaringan berkinerja tinggi. Topik ini menjelaskan cara menggunakan gambar kontainer eRDMA untuk mengonfigurasi eRDMA dengan cepat pada instans yang dipercepat GPU.

Catatan

Jika layanan Anda memerlukan kemampuan jaringan RDMA skala besar, Anda dapat menyambungkan antarmuka RDMA elastis (ERI) ke tipe instans yang dipercepat GPU yang didukung. Untuk informasi selengkapnya, lihat Ikhtisar eRDMA.

Sebelum memulai

Sebelum mengonfigurasi gambar kontainer eRDMA pada instans yang dipercepat GPU, pastikan Anda telah mengetahui detail berikut: tipe instans yang dipercepat GPU yang didukung sebelum membuat instans, serta alamat gambarnya sebelum menarik (pull) gambar tersebut.

  1. Login ke Konsol Container Registry.

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

  3. Pada kotak pencarian Repository Name, masukkan erdma dan pilih gambar target egs/erdma.

    Gambar kontainer eRDMA diperbarui kira-kira setiap tiga bulan. Tabel berikut menyediakan detail gambar tersebut.

    Image name

    Version information

    Image address

    Supported instances

    Benefits

    eRDMA

    • Python: 3.10.12

    • CUDA: 12.4.1

    • cuDNN: 9.1.0.70

    • NCCL: 2.21.5

    • Base image: Ubuntu 22.04

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

    Gambar kontainer eRDMA mendukung semua instans generasi ke-8 yang dipercepat GPU, seperti ebmgn8is dan gn8is.

    Catatan

    Untuk informasi lebih lanjut tentang instans, lihat GPU compute-optimized instance families.

    • Akses jaringan eRDMA Alibaba Cloud langsung dari dalam kontainer.

    • Dapatkan pengalaman siap pakai dengan eRDMA, driver, dan CUDA yang kompatibel.

    eRDMA

    • Python: 3.10.12

    • CUDA: 12.1.1

    • cuDNN: 8.9.0.131

    • NCCL: 2.17.1

    • Base image: Ubuntu 22.04

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

Prosedur

Setelah Anda menginstal Docker pada instans yang dipercepat GPU dan mengaktifkan eRDMA di lingkungan Docker, Anda dapat langsung mengakses perangkat eRDMA dari dalam kontainer. Prosedur ini menggunakan Ubuntu 20.04 sebagai contoh.

  1. Buat instans yang dipercepat GPU dan konfigurasikan eRDMA.

    Untuk informasi selengkapnya, lihat Enable eRDMA on a GPU-accelerated instance.

    Kami menyarankan agar Anda membuat instans yang dipercepat GPU dengan kartu jaringan eRDMA di Konsol ECS, serta memilih opsi Install GPU Driver dan Install eRDMA Software Stack.

    Catatan

    Setelah instans yang dipercepat GPU dibuat, sistem secara otomatis menginstal driver Tesla, CUDA, pustaka cuDNN, dan tumpukan perangkat lunak eRDMA. Proses ini lebih cepat daripada instalasi manual.

    Pada bagian Image, pilih Ubuntu 20.04 64-bit. Instalasi driver GPU memerlukan waktu sekitar 10 hingga 20 menit. Proses instalasi memperpanjang waktu startup instans dan mencakup restart otomatis.

  2. Hubungkan ke instans yang dipercepat GPU.

    Untuk petunjuk lengkap, lihat Connect to a Linux instance by using Workbench.

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

    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 memverifikasi instalasi Docker.

    docker -v
  5. Jalankan perintah berikut untuk menginstal paket 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 untuk mengaktifkan Docker agar berjalan saat boot, lalu restart layanan Docker.

    sudo systemctl enable docker
    sudo systemctl restart docker
  7. Jalankan perintah berikut untuk menarik (pull) 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

Verifikasi konfigurasi

Contoh ini menggunakan dua instans yang dipercepat GPU, yaitu host1 dan host2. Lingkungan Docker telah diinstal dan kontainer eRDMA berhasil berjalan di masing-masing instans.

  1. Di dalam kontainer pada host1 dan host2, periksa apakah adaptor jaringan eRDMA berfungsi dengan baik.

    1. Jalankan perintah berikut untuk masuk ke lingkungan kontainer.

      sudo docker exec -it erdma bash
    2. Jalankan perintah berikut untuk memeriksa perangkat jaringan eRDMA di dalam kontainer.

      ibv_devinfo

      Output menunjukkan status kedua perangkat jaringan eRDMA sebagai PORT_ACTIVE, yang menandakan bahwa perangkat tersebut berfungsi dengan benar.

      root@xxx:~/# ibv_devinfo
      hca_id: erdma_0
      	transport:			eRDMA (0)
      	fw_ver:				0.2.0
      	node_guid:			0216:3eff:fe2c:6aad
      	sys_image_guid:			0216:3eff:fe2c:6aad
      	vendor_id:			0x1ded
      	vendor_part_id:			4223
      	hw_ver:				0x0
      	phys_port_cnt:			1
      		port:	1
      			state:			PORT_ACTIVE (4)
      			max_mtu:		1024 (3)
      			active_mtu:		1024 (3)
      			sm_lid:			0
      			port_lid:		0
      			port_lmc:		0x00
      			link_layer:		Ethernet
      hca_id: erdma_1
      	transport:			eRDMA (0)
      	fw_ver:				0.2.0
      	node_guid:			0216:3eff:fe16:58b6
      	sys_image_guid:			0216:3eff:fe16:58b6
      	vendor_id:			0x1ded
      	vendor_part_id:			4223
      	hw_ver:				0x0
      	phys_port_cnt:			1
      		port:	1
      			state:			PORT_ACTIVE (4)
      			max_mtu:		1024 (3)
      			active_mtu:		1024 (3)
      			sm_lid:			0
      			port_lid:		0
      			port_lmc:		0x00
      			link_layer:		Ethernet
  2. Di dalam kontainer, jalankan nccl-test pada host1 dan host2.

    1. Jalankan perintah berikut untuk mengunduh kode nccl-tests.

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

      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 tanpa password antara host1 dan host2, dan konfigurasikan SSH agar terhubung melalui port 12345.

      Setelah koneksi SSH dikonfigurasi, Anda dapat menguji koneksi tanpa password antara kedua kontainer dengan menjalankan perintah ssh -p 12345 ${host2} dari dalam kontainer.

      1. Di dalam kontainer pada host1, jalankan perintah berikut untuk menghasilkan kunci SSH dan menyalin kunci publik ke kontainer pada host2.

        ssh-keygen
        ssh-copy-id -i ~/.ssh/id_rsa.pub ${host2}
      2. Di dalam kontainer pada host2, jalankan perintah berikut untuk menginstal layanan SSH dan mengatur port pendengaran server SSH menjadi 12345.

        apt-get update && apt-get install ssh -y
        mkdir /run/sshd
        /usr/sbin/sshd -p 12345 
      3. Di dalam kontainer pada host1, jalankan perintah berikut untuk menguji koneksi tanpa password ke kontainer pada host2.

        ssh root@${host2} -p 12345
    4. Di dalam kontainer pada host1, jalankan uji all_reduce_perf.

      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

      Outputnya mirip dengan berikut:

      iZ2zei2cgn3427b89ubkfvZ:2732:2765 [7] NCCL INFO comm 0x562feba84040 rank 7 nranks 16 cudaDev 7 busId f1000 commId 0x89cad9815cd2a14b - Init COMPLETE
      iZ2zei2cgn3427b89ubkfvZ:2728:2770 [5] NCCL INFO comm 0x55d55c96d340 rank 5 nranks 16 cudaDev 5 busId ea000 commId 0x89cad9815cd2a14b - Init COMPLETE
      #
      #                                                              out-of-place                       in-place
      #       size         count      type   redop    root     time   algbw   busbw #wrong     time   algbw   busbw #wrong
      #        (B)    (elements)                               (us)  (GB/s)  (GB/s)            (us)  (GB/s)  (GB/s)
        1073741824     268435456     float     sum      -1   158061    6.79   12.74      0   156821    6.85   12.84      0
      iZ2zeiwklcnbixy8g0r8grZ:4068:4068 [2] NCCL INFO comm 0x563b4653f3c0 rank 10 nranks 16 cudaDev 2 busId 71000 - Destroy COMPLETE
      iZ2zei2cgn3427b89ubkfvZ:2724:2724 [2] NCCL INFO comm 0x55c35266a000 rank 2 nranks 16 cudaDev 2 busId 71000 - Destroy COMPLETE
      iZ2zeiwklcnbixy8g0r8grZ:4071:4071 [5] NCCL INFO comm 0x563a86fc7210 rank 13 nranks 16 cudaDev 5 busId ea000 - Destroy COMPLETE
      iZ2zeiwklcnbixy8g0r8grZ:4067:4067 [1] NCCL INFO comm 0x559741cc9290 rank 9 nranks 16 cudaDev 1 busId 6a000 - Destroy COMPLETE
      iZ2zeiwklcnbixy8g0r8grZ:4075:4075 [7] NCCL INFO comm 0x55d60e86e170 rank 15 nranks 16 cudaDev 7 busId f1000 - Destroy COMPLETE
      iZ2zei2cgn3427b89ubkfvZ:2723:2723 [1] NCCL INFO comm 0x5596ca34a0b0 rank 1 nranks 16 cudaDev 1 busId 6a000 - Destroy COMPLETE
      iZ2zei2cgn3427b89ubkfvZ:2728:2728 [5] NCCL INFO comm 0x55d55c96d340 rank 5 nranks 16 cudaDev 5 busId ea000 - Destroy COMPLETE
      iZ2zeiwklcnbixy8g0r8grZ:4072:4072 [6] NCCL INFO comm 0x5609dddc4170 rank 14 nranks 16 cudaDev 6 busId f0000 - Destroy COMPLETE
      iZ2zei2cgn3427b89ubkfvZ:2725:2725 [3] NCCL INFO comm 0x564411727220 rank 3 nranks 16 cudaDev 3 busId 72000 - Destroy COMPLETE
      iZ2zei2cgn3427b89ubkfvZ:2726:2726 [4] NCCL INFO comm 0x557b9ed258a0 rank 4 nranks 16 cudaDev 4 busId e9000 - Destroy COMPLETE
      iZ2zeiwklcnbixy8g0r8grZ:4069:4069 [3] NCCL INFO comm 0x55b879b75000 rank 11 nranks 16 cudaDev 3 busId 72000 - Destroy COMPLETE
      iZ2zeiwklcnbixy8g0r8grZ:4070:4070 [4] NCCL INFO comm 0x557580c1a5f0 rank 12 nranks 16 cudaDev 4 busId e9000 - Destroy COMPLETE
      iZ2zei2cgn3427b89ubkfvZ:2730:2730 [6] NCCL INFO comm 0x562b87361c0 rank 6 nranks 16 cudaDev 6 busId f0000 - Destroy COMPLETE
      iZ2zeiwklcnbixy8g0r8grZ:4066:4066 [0] NCCL INFO comm 0x558bf49799a0 rank 8 nranks 16 cudaDev 0 busId 69000 - Destroy COMPLETE
      iZ2zei2cgn3427b89ubkfvZ:2722:2722 [0] NCCL INFO comm 0x5589a9d7a980 rank 0 nranks 16 cudaDev 0 busId 69000 - Destroy COMPLETE
      iZ2zei2cgn3427b89ubkfvZ:2732:2732 [7] NCCL INFO comm 0x562feba84040 rank 7 nranks 16 cudaDev 7 busId f1000 - Destroy COMPLETE
      # Out of bounds values : 0 OK
      # Avg bus bandwidth    : 12.7876
      #
  3. Di host (di luar kontainer), jalankan perintah berikut untuk memantau lalu lintas pada jaringan eRDMA.

    eadm stat -d erdma_0 -l

    Output menunjukkan adanya lalu lintas pada jaringan eRDMA.

    root@xxxZ:~# eadm stat -d erdma_0 -l
    Monitoring erdma_0...    (press CTRL-C to stop)
     14:53:00  rx:      5.50 GiB/s 4537261 p/s      tx:      5.49 GiB/s 4538210 p/s

Topik terkait

  • Untuk mengaktifkan konektivitas antar-instans yang dipercepat RDMA dalam virtual private cloud (VPC) yang sama, Anda dapat mengonfigurasi eRDMA pada instans yang dipercepat GPU. Untuk petunjuknya, lihat Enable eRDMA on GPU-accelerated instances.

  • Jika kasus penggunaan Anda melibatkan transfer data skala besar dan jaringan berkinerja tinggi, Anda dapat mengonfigurasi secara manual lingkungan Docker pada instans yang dipercepat GPU dan mengaktifkan eRDMA untuk meningkatkan efisiensi. Untuk petunjuknya, lihat Enable eRDMA in a Docker container.