Aktifkan jaringan RDMA di Pod untuk pelatihan terdistribusi NCCL atau akselerasi TCP transparan SMC-R.
Instal ACK eRDMA Controller dan aktifkan akselerasi eRDMA di Pod. Dua skenario dibahas: pelatihan terdistribusi GPU dengan NCCL dan akselerasi TCP transparan dengan SMC-R.
Prasyarat
Pastikan Anda memiliki:
-
Kluster ACK yang menjalankan Kubernetes 1.20 atau lebih baru. Tingkatkan kluster jika diperlukan.
-
Node dengan dukungan Elastic RDMA Interface (ERI) dari keluarga instans yang mendukung ERI telah ditambahkan ke kelompok node.
Cara kerja
ACK eRDMA Controller mengelola elastic network interfaces (ENIs) yang mendukung eRDMA pada node kluster. Komponen ini mendaftarkan perangkat eRDMA sebagai resource extended aliyun/erdma, mengonfigurasi entri rute ENI, dan mengekspos perangkat ke Pod melalui permintaan resource Kubernetes.
Pod meminta akses eRDMA dengan mendeklarasikan aliyun/erdma dalam batas resource-nya. Untuk juga mempercepat koneksi TCP tanpa perubahan kode, aktifkan SMC-R melalui anotasi Pod.
| Component | Role |
|---|---|
| ACK eRDMA Controller | Mendaftarkan perangkat eRDMA sebagai resource extended; mengelola entri rute ENI |
driver eRDMA (default / compat / ofed) |
Driver tingkat kernel yang diinstal pada setiap node |
aliyun/erdma Sumber daya |
Resource extended Kubernetes untuk akses perangkat oleh Pod |
| SMC-R | Protokol Linux yang secara transparan menggantikan transport TCP dengan RDMA |
Langkah 1: Instal ACK eRDMA Controller
Jika kluster Anda menggunakan plugin jaringan Terway, konfigurasikan daftar putih untuk ENI agar Terway tidak memodifikasi ENI yang mendukung eRDMA.
-
Pada halaman Clusters, klik nama kluster Anda, lalu klik Add-ons.
-
Pada halaman Add-ons, klik tab Network. Temukan dan instal ACK eRDMA Controller dengan pengaturan berikut:
CatatanSaat sebuah node memiliki beberapa NIC, controller memberikan prioritas lebih rendah pada entri rute ENI eRDMA dibandingkan entri rute NIC dengan CIDR yang sama. Prioritas default-nya adalah
200. Hindari bentrok dengan rentang ini saat mengonfigurasi entri rute NIC secara manual.Setting Description preferDriver (jenis driver) Mode driver eRDMA. default: akselerasi standar.compat: lingkungan kompatibel RoCE.ofed: instans yang dipercepat GPU yang menjalankan NCCL. Lihat Aktifkan eRDMA.Specifies whether to assign all eRDMA devices of nodes to pods True: mengalokasikan semua perangkat eRDMA pada node ke Pod.False: mengalokasikan satu perangkat berdasarkan topologi NUMA.Falsememerlukan kebijakan manajemen CPU statis. Lihat Buat dan kelola kelompok node. -
Verifikasi bahwa controller sedang berjalan. Buka Workloads > Pods, atur namespace ke
ack-erdma-controller, dan pastikan semua Pod berstatus Berjalan.
Langkah 2: Aktifkan eRDMA di Pod
Tambahkan konfigurasi berikut ke spesifikasi Pod Anda untuk mengaktifkan akselerasi eRDMA.
Aktifkan akses perangkat eRDMA
Deklarasikan resource aliyun/erdma dalam batas resource kontainer:
spec:
containers:
- name: erdma-container
resources:
limits:
aliyun/erdma: 1
Setelah Pod berjalan, verifikasi ketersediaan perangkat eRDMA:
/# ls /dev/infiniband/
rdma_cm uverbs0
Aktifkan akselerasi TCP transparan dengan SMC-R
SMC-R secara transparan mempercepat koneksi TCP melalui RDMA tanpa perubahan kode. Setelah mengaktifkan akses perangkat eRDMA, tambahkan anotasi berikut:
metadata:
annotations:
network.alibabacloud.com/erdma-smcr: "true"
-
Kedua ujung koneksi TCP harus mengaktifkan SMC-R.
-
Hanya didukung pada Alibaba Cloud Linux 3 dengan versi kernel 5.10.134-17 atau lebih baru. Lihat Catatan rilis gambar Alibaba Cloud Linux 3.
-
Tidak didukung jika
preferDriverdiatur keofedataucompat. -
eRDMA dan SMC-R tidak mendukung IPv6. SMC-R akan kembali menggunakan TCP untuk koneksi IPv6.
Kasus penggunaan
Percepat komunikasi NCCL untuk pelatihan terdistribusi GPU
Gunakan skenario ini untuk instans yang dipercepat GPU yang menjalankan pelatihan terdistribusi. Pod menggunakan driver ofed dan meminta resource GPU serta eRDMA.
-
Instal ACK eRDMA Controller dengan
preferDriverdiatur keofed. -
Tambahkan node GPU ke kelompok node. Lihat Buat dan kelola kelompok node.
-
Instal paket eRDMA dalam gambar kontainer saat proses build. Untuk Debian atau Ubuntu (ganti
{OS|ubuntu}dan{Version|focal}dengan nilai Anda):wget -qO - https://mirrors.aliyun.com/erdma/GPGKEY | apt-key add - \ && echo "deb [ arch=amd64 ] https://mirrors.aliyun.com/erdma/apt/{OS|ubuntu} {Version|focal}/erdma main" \ | tee /etc/apt/sources.list.d/erdma.list \ && apt update \ && apt install -y libibverbs1 ibverbs-providers ibverbs-utils librdmacm1Untuk Alibaba Cloud Linux atau RHEL:
cat > /etc/yum.repos.d/erdma.repo <<EOF [erdma] name = ERDMA Repository baseurl = http://mirrors.aliyun.com/erdma/yum/redhat/7/erdma/x86_64/ gpgcheck = 0 enabled = 1 EOF yum install --disablerepo=* --enablerepo erdma -y libibverbs ibverbs-providers ibverbs-utils librdmacm -
Sebarkan aplikasi GPU. StatefulSet berikut menjalankan
nccl-testdi dua replika, masing-masing dengan 8 GPU dan satu perangkat eRDMA:apiVersion: apps/v1 kind: StatefulSet metadata: name: nccltest spec: selector: matchLabels: app: nccltest serviceName: "nccltest" replicas: 2 template: metadata: labels: app: nccltest spec: hostNetwork: true dnsPolicy: ClusterFirstWithHostNet containers: - env: - name: NCCL_SOCKET_IFNAME value: "eth0" - name: NCCL_DEBUG value: "INFO" - name: NCCL_IB_GID_INDEX value: "1" image: <nccl-test-image-with-erdma> imagePullPolicy: Always name: nccltest securityContext: privileged: true resources: limits: nvidia.com/gpu: "8" aliyun/erdma: "1" requests: nvidia.com/gpu: "8" aliyun/erdma: "1" -
Verifikasi bahwa NCCL menggunakan eRDMA. Log harus menampilkan
erdma_0danerdma_1sebagai aktif, yang mengonfirmasi akselerasi eRDMA.
Percepat jaringan aplikasi secara transparan dengan SMC-R
Gunakan skenario ini untuk beban kerja TCP standar yang memerlukan akselerasi eRDMA tanpa perubahan kode. Atur preferDriver ke default.
-
Instal ACK eRDMA Controller dengan
preferDriverdiatur kedefault. -
Sebarkan aplikasi dengan anotasi SMC-R. Penyebaran berikut mengaktifkan akses perangkat eRDMA dan akselerasi SMC-R:
apiVersion: apps/v1 kind: Deployment metadata: labels: app: app-with-erdma name: app-with-erdma spec: replicas: 2 selector: matchLabels: app: app-with-erdma template: metadata: labels: app: app-with-erdma annotations: network.alibabacloud.com/erdma-smcr: "true" spec: containers: - image: <application image> imagePullPolicy: Always name: app-with-erdma resources: limits: aliyun/erdma: 1 -
Verifikasi akselerasi. Instal
smc-toolsdi dalam kontainer dan jalankansmcss:/# smcss State UID Inode Local Address Peer Address Intf Mode ACTIVE 00000 0059964 172.17.192.73:47772 172.17.192.10:80 0000 SMCRSMCRpada kolom Mode mengonfirmasi bahwa akselerasi eRDMA aktif. Jika menampilkanTCP, pastikan kedua Pod (klien dan server) memiliki anotasi SMC-R yang diatur ke"true".
Langkah selanjutnya
-
ACK eRDMA Controller — referensi komponen dan detail konfigurasi
-
Aktifkan eRDMA — panduan pemilihan jenis driver
-
Buat dan kelola kelompok node — tambahkan node yang mendukung eRDMA dan konfigurasikan kebijakan CPU