NCCL dağıtık eğitimi veya SMC-R şeffaf TCP hızlandırması için pod'lar içinde RDMA ağını etkinleştirin.
ACK eRDMA Denetleyicisi'ni yükleyin ve pod'larda eRDMA hızlandırmasını etkinleştirin. İki senaryo ele alınmıştır: NCCL ile GPU dağıtık eğitimi ve SMC-R ile şeffaf TCP hızlandırması.
Ön koşullar
Aşağıdakilere sahip olduğunuzdan emin olun:
Kubernetes 1.20 veya sonraki bir sürümü çalıştıran bir ACK kümesi. Gerekirse bir kümeyi yükseltin.
Bir düğüm havuzuna, ERI uyumlu örnek ailelerinden Elastic RDMA Interface (ERI) desteğine sahip düğümler eklenmiştir.
Nasıl çalışır
ACK eRDMA Denetleyicisi, küme düğümlerindeki eRDMA uyumlu esnek ağ arayüzlerini (ENI) yönetir. eRDMA aygıtlarını aliyun/erdma genişletilmiş kaynağı olarak kaydeder, ENI rotalarını yapılandırır ve aygıtları Kubernetes kaynak istekleri aracılığıyla pod'lara sunar.
Pod'lar, kaynak sınırlarında aliyun/erdma bildirerek eRDMA erişimi ister. Kod değişikliği yapmadan TCP bağlantılarını da hızlandırmak için bir pod açıklaması aracılığıyla SMC-R'yi etkinleştirin.
| Bileşen | Rolü |
|---|---|
| ACK eRDMA Denetleyicisi | eRDMA aygıtlarını genişletilmiş kaynaklar olarak kaydeder; ENI rotalarını yönetir |
eRDMA sürücüsü (default / compat / ofed) |
Her düğüme yüklenen çekirdek düzeyi sürücü |
aliyun/erdma kaynağı |
Pod aygıt erişimi için Kubernetes genişletilmiş kaynağı |
| SMC-R | TCP'yi şeffaf bir şekilde RDMA taşımacılığı ile değiştiren Linux protokolü |
Adım 1: ACK eRDMA Denetleyicisi'ni yükleyin
Kümeniz Terway ağ eklentisini kullanıyorsa, Terway'in eRDMA uyumlu ENI'leri değiştirmesini önlemek için ENI'ler için bir izin listesi yapılandırın.
Clusters sayfasında küme adınızı tıklayın, ardından Add-ons seçeneğini tıklayın.
-
Add-ons sayfasında Network sekmesini tıklayın. Aşağıdaki ayarlarla ACK eRDMA Controller öğesini bulun ve yükleyin:
NotBir düğümde birden fazla NIC bulunduğunda, denetleyici eRDMA ENI rotalarına aynı CIDR'li NIC rotalarından daha düşük bir öncelik atar. Varsayılan öncelik
200değerindedir. NIC rotalarını manuel olarak yapılandırırken bu aralıkla çakışmalardan kaçının.Ayar Açıklama preferDriver (sürücü türü) eRDMA sürücü modu. default: standart hızlandırma.compat: RoCE uyumlu ortamlar.ofed: NCCL çalıştıran GPU örnekleri. Bkz. eRDMA'yı etkinleştirme.Specifies whether to assign all eRDMA devices of nodes to pods True: Düğümdeki tüm eRDMA aygıtlarını poda tahsis eder.False: NUMA topolojisine göre bir aygıt tahsis eder.Falsestatik CPU yönetim ilkesini gerektirir. Bkz. Düğüm havuzları oluşturma ve yönetme. Denetleyicinin çalıştığını doğrulayın. Workloads > Pods bölümüne gidin, ad alanını
ack-erdma-controllerolarak ayarlayın ve tüm pod'ların çalıştığını onaylayın.
Adım 2: Pod'larda eRDMA'yı etkinleştirin
eRDMA hızlandırmasını etkinleştirmek için pod belirtiminize aşağıdaki yapılandırmaları ekleyin.
eRDMA aygıt erişimini etkinleştirin
Konteynerin kaynak sınırlarında aliyun/erdma kaynağını bildirin:
spec:
containers:
- name: erdma-container
resources:
limits:
aliyun/erdma: 1
Pod başladıktan sonra eRDMA aygıtlarının kullanılabilir olduğunu doğrulayın:
/# ls /dev/infiniband/
rdma_cm uverbs0
SMC-R ile şeffaf TCP hızlandırmasını etkinleştirin
SMC-R, kod değişikliği gerektirmeden TCP bağlantılarını RDMA üzerinden şeffaf bir şekilde hızlandırır. eRDMA aygıt erişimini etkinleştirdikten sonra aşağıdaki açıklamayı ekleyin:
metadata:
annotations:
network.alibabacloud.com/erdma-smcr: "true"
TCP bağlantısının her iki ucunda da SMC-R etkinleştirilmelidir.
Yalnızca çekirdek sürümü 5.10.134-17 veya üzeri olan Alibaba Cloud Linux 3 üzerinde desteklenir. Bkz. Alibaba Cloud Linux 3 görüntü sürüm notları.
preferDriverdeğeriofedveyacompatolarak ayarlandığında desteklenmez.eRDMA ve SMC-R IPv6'yı desteklemez. SMC-R, IPv6 bağlantıları için TCP'ye geri döner.
Kullanım durumları
GPU dağıtık eğitimi için NCCL iletişimini hızlandırın
Dağıtık eğitim çalıştıran GPU hızlandırmalı örnekler için bu senaryoyu kullanın. Pod'lar ofed sürücüsünü kullanır ve GPU ile eRDMA kaynaklarını ister.
preferDriverdeğeriofedolarak ayarlanmış şekilde ACK eRDMA Denetleyicisi'ni yükleyin.Düğüm havuzuna GPU düğümleri ekleyin. Bkz. Düğüm havuzları oluşturma ve yönetme.
-
Derleme sırasında konteyner görüntüsüne eRDMA paketlerini yükleyin. Debian veya Ubuntu için (
{OS|ubuntu}ve{Version|focal}yerine kendi değerlerinizi yazın):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 librdmacm1Alibaba Cloud Linux veya RHEL için:
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 -
GPU uygulamasını dağıtın. Bu StatefulSet, her biri 8 GPU ve bir eRDMA aygıtına sahip iki çoğaltma üzerinde
nccl-testçalıştırır: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" -
NCCL'nin eRDMA kullandığını doğrulayın. Günlüklerde
erdma_0veerdma_1öğelerinin etkin olarak gösterilmesi, eRDMA hızlandırmasının aktif olduğunu doğrular.
Uygulama ağlarını SMC-R ile şeffaf bir şekilde hızlandırın
Kod değişikliği gerektirmeden eRDMA hızlandırmasına ihtiyaç duyan standart TCP iş yükleri için bu senaryoyu kullanın. preferDriver değerini default olarak ayarlayın.
preferDriverdeğeridefaultolarak ayarlanmış şekilde ACK eRDMA Denetleyicisi'ni yükleyin.-
Uygulamayı SMC-R açıklamasıyla dağıtın. Bu Dağıtım, eRDMA aygıt erişimini ve SMC-R hızlandırmasını etkinleştirir:
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 -
Hızlandırmayı doğrulayın. Konteynere
smc-toolsyükleyin vesmcsskomutunu çalıştırın:/# smcss State UID Inode Local Address Peer Address Intf Mode ACTIVE 00000 0059964 172.17.192.73:47772 172.17.192.10:80 0000 SMCRSMCRifadesi Mode sütununda, eRDMA hızlandırmasının aktif olduğunu gösterir.TCPgösteriyorsa, hem istemci hem de sunucu pod'larında SMC-R açıklamasının"true"olarak ayarlandığını doğrulayın.
Sonraki adımlar
ACK eRDMA Denetleyicisi — bileşen referansı ve yapılandırma ayrıntıları
eRDMA'yı etkinleştirme — sürücü türü seçim kılavuzu
Düğüm havuzları oluşturma ve yönetme — eRDMA uyumlu düğümler ekleyin ve CPU ilkelerini yapılandırın