O Elastic RDMA (eRDMA) é um service de rede RDMA de alto desempenho fornecido pela Alibaba Cloud, caracterizado por baixa latência, alto throughput e alta elasticidade. Utilize o eRDMA em clusters ACK para habilitar redes RDMA em pods, permitindo treinamento distribuído com NCCL (NVIDIA Collective Communications Library) ou aceleração TCP transparente via SMC-R (Shared Memory Communications over RDMA).
Instale o ACK eRDMA Controller e ative a aceleração eRDMA nos pods.
Pré-requisitos
Certifique-se de que você possui:
Um cluster ACK executando Kubernetes 1.20 ou posterior para nós CPU, ou 1.26 ou posterior para nós GPU. Upgrade a cluster se necessário.
Nós com suporte a Elastic RDMA Interface (ERI), provenientes de famílias de instâncias compatíveis com ERI, adicionados a um pool de nós.
Nós executando Alibaba Cloud Linux 3 (todas as versões), Alibaba Cloud Linux 4 (todas as versões) ou Ubuntu 24.04 para nós CPU; ou uma imagem com o driver eRDMA pré-instalado para nós GPU. Imagens personalizadas baseadas nessas opções também são suportadas.
Como funciona
O ACK eRDMA Controller gerencia interfaces de rede elástica (ENIs) compatíveis com eRDMA nos nós do cluster. Ele registra dispositivos eRDMA como o recurso estendido aliyun/erdma, configura rotas de ENI e expõe os dispositivos aos pods por meio de solicitações de recursos do Kubernetes.
Os pods solicitam acesso ao eRDMA declarando aliyun/erdma em seus limites de recursos. Para acelerar conexões TCP sem alterar o código, ative o SMC-R usando uma anotação no pod.
|
Componente |
Função |
|
ACK eRDMA Controller |
Registra dispositivos eRDMA como recursos estendidos; gerencia rotas de ENI |
|
Driver eRDMA ( |
Driver de nível de kernel instalado em cada nó |
|
Recurso |
Recurso estendido do Kubernetes para acesso a dispositivos pelos pods |
|
SMC-R |
Protocolo Linux que substitui transparentemente o TCP pelo transporte RDMA |
Etapa 1: Instalar o ACK eRDMA Controller
Caso seu cluster utilize o plugin de rede Terway, configure a whitelist for ENIs para impedir que o Terway modifique ENIs compatíveis com eRDMA.
Na página Clusters, clique no nome do seu cluster e, em seguida, clique em Add-ons.
-
Na página Add-ons, clique na aba Network. Localize e instale o ACK eRDMA Controller com as seguintes configurações:
NotaQuando um nó possui múltiplas NICs, o controlador atribui às rotas de ENI eRDMA uma prioridade menor do que às rotas de NICs do mesmo CIDR. A prioridade padrão é
200. Evite conflitos de rota ao configurar manualmente as rotas de NIC.Configuração
Descrição
preferDriver (tipo de driver)
Modo do driver eRDMA.
default: aceleração padrão.compat: ambientes compatíveis com RoCE, incluindo estabelecimento de link out-of-band (OOB).ofed: instâncias GPU executando NCCL. Consulte Enable eRDMA.Specifies whether to assign all eRDMA devices of nodes to pods
True: aloca todos os dispositivos eRDMA do nó para o pod.False: aloca um dispositivo conforme a topologia NUMA. O valorFalseexige a política de gerenciamento estático de CPU. Consulte Create and manage node pools. Acesse Workloads > Pods, defina o namespace como
ack-erdma-controllere confirme se todos os pods estão em execução.
Etapa 2: Habilitar eRDMA nos pods
Adicione as configurações abaixo à especificação do seu pod para ativar a aceleração eRDMA.
Habilitar acesso a dispositivos eRDMA
Declare o recurso aliyun/erdma nos limites de recursos do contêiner:
spec:
containers:
- name: erdma-container
resources:
limits:
aliyun/erdma: 1
Após o início do pod, verifique se os dispositivos eRDMA estão disponíveis:
/# ls /dev/infiniband/
rdma_cm uverbs0
QuandopreferDriverestá definido comoofed(para instâncias GPU), o diretório/dev/infiniband/do pod pode não conter o dispositivordma_cme exibir apenas dispositivos comouverbs0. Esse comportamento é esperado, pois frameworks de comunicação como NCCL em cenários de GPU não dependem derdma_cm, e a aceleração eRDMA não é afetada.
Habilitar aceleração TCP transparente com SMC-R
O SMC-R acelera transparentemente conexões TCP sobre RDMA sem exigir alterações no código. Após habilitar o acesso ao dispositivo eRDMA, adicione a seguinte anotação:
metadata:
annotations:
network.alibabacloud.com/erdma-smcr: "true"
Ambas as extremidades da conexão TCP devem ter o SMC-R habilitado.
O SMC-R é suportado apenas no Alibaba Cloud Linux 3 com versão de kernel 5.10.134-17 ou posterior. Consulte Alibaba Cloud Linux 3 image release notes.
Não há suporte para SMC-R quando
preferDriverestá definido comoofedoucompat.O eRDMA e o SMC-R não suportam IPv6. O SMC-R reverte para TCP em conexões IPv6.
Casos de uso
Acelerar comunicação NCCL para treinamento distribuído com GPU
Este cenário destina-se a instâncias aceleradas por GPU que executam treinamento distribuído. Os pods utilizam o driver ofed e solicitam recursos de GPU e eRDMA.
Instale o ACK eRDMA Controller com
preferDriverdefinido comoofed.Adicione nós GPU ao pool de nós. Os nós GPU precisam ter o driver eRDMA instalado antes de ingressar no cluster: utilize uma imagem com a pilha de software eRDMA pré-instalada (recomendado) ou instale o driver manualmente conforme descrito em Enable eRDMA on GPU instances e, em seguida, confirme a configuração do driver eRDMA e da NIC após o ingresso do nó. Consulte Create and manage node pools.
-
Instale os pacotes eRDMA na imagem do contêiner durante a compilação. Para Debian ou Ubuntu (substitua
{OS|ubuntu}e{Version|focal}pelos seus valores):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 librdmacm1Para Alibaba Cloud Linux ou RHEL, utilize o diretório de repositório correspondente ao seu sistema operacional:
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 -
Implante a aplicação GPU. Este StatefulSet executa
nccl-testem duas réplicas, cada uma com 8 GPUs e um dispositivo 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: capabilities: add: - SYS_RESOURCE - IPC_LOCK resources: limits: nvidia.com/gpu: "8" aliyun/erdma: "1" requests: nvidia.com/gpu: "8" aliyun/erdma: "1" -
Verifique se o NCCL está utilizando eRDMA. Os logs devem mostrar
erdma_0eerdma_1como ativos, confirmando a aceleração eRDMA.
Acelerar redes de aplicações transparentemente com SMC-R
Indicado para cargas de trabalho TCP padrão que necessitam de aceleração eRDMA sem modificações no código. Defina preferDriver como default.
Instale o ACK eRDMA Controller com
preferDriverdefinido comodefault.-
Implante a aplicação com a anotação SMC-R. Este Deployment habilita o acesso ao dispositivo eRDMA e a aceleração 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 -
Valide a aceleração. Instale
smc-toolsno contêiner e executesmcss:/# smcss State UID Inode Local Address Peer Address Intf Mode ACTIVE 00000 0059964 172.17.192.73:47772 172.17.192.10:80 0000 SMCRO valor
SMCRna coluna Mode confirma que a aceleração eRDMA está ativa. Se for exibidoTCP, verifique se tanto os pods cliente quanto servidor possuem a anotação SMC-R definida como"true".
Próximos passos
ACK eRDMA Controller — referência e detalhes de configuração de add-ons
Enable eRDMA — guia de seleção de tipo de driver
Create and manage node pools — adição de nós compatíveis com eRDMA e configuração de políticas de CPU