Instalação de MLNX_OFED em uma imagem de contêiner
Cenários
A NIC da Mellanox Technologies foi configurada em servidores de GPU do ModelArts para suportar Acesso remoto direto à memória (RDMA). Como resultado, você pode instalar MLNX_OFED na imagem do contêiner, o que permitirá que a NCCL aproveite a NIC e aumente a eficiência da comunicação entre nós.
Depois que esta NIC é habilitada para NCCL, NET/IB é usado para a comunicação entre nós. Se essa NIC não estiver habilitada, NET/Socket será usado para comunicação entre nós. NET/IB é melhor que NET/Socket em termos de latência e largura de banda.
Modelo da GPU |
NIC da Mellanox Technologies |
Versão de MLNX_OFED instalada |
Versão de MLNX_OFED recomendada para imagem de contêiner |
---|---|---|---|
Vnt1 |
ConnectX-5 |
4.3-1.0.1.0/4.5-1.0.1.0 |
4.9-6.0.6.0-LTS |
Ant8/Ant1 |
ConnectX-6 Dx |
5.5-1.0.3.2 |
5.8-2.0.3.0-LTS |
Instalação de MLNX_OFED
Tome a imagem do contêiner de Ubuntu18.04 como um exemplo. O Dockerfile para instalar o MLNX_OFED 4.9-6.0.6.0-LTS é o seguinte:

O host usado para baixar arquivos e criar imagens de contêiner usando um Dockerfile deve ser capaz de se conectar à rede pública.
FROM nvidia/cuda:11.1.1-runtime-ubuntu18.04 RUN cp -a /etc/apt/sources.list /etc/apt/sources.list.bak && \ sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list && \ sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list && \ echo > /etc/apt/apt.conf.d/00skip-verify-peer.conf "Acquire { https::Verify-Peer false }" && \ apt-get update && \ apt-get install --no-install-recommends -y lsb-core curl && \ curl -k -o /tmp/MLNX_OFED_LINUX-4.9-6.0.6.0-ubuntu18.04-x86_64.tgz https://content.mellanox.com/ofed/MLNX_OFED-4.9-6.0.6.0/MLNX_OFED_LINUX-4.9-6.0.6.0-ubuntu18.04-x86_64.tgz && \ cd /tmp && \ tar xzf MLNX_OFED_LINUX-4.9-6.0.6.0-ubuntu18.04-x86_64.tgz && \ cd MLNX_OFED_LINUX-4.9-6.0.6.0-ubuntu18.04-x86_64 && \ ./mlnxofedinstall --user-space-only --without-fw-update --without-neohost-backend --force && \ rm /tmp/MLNX_OFED_LINUX-4.9-6.0.6.0-ubuntu18.04-x86_64.tgz && \ rm -rf /tmp/MLNX_OFED_LINUX-4.9-6.0.6.0-ubuntu18.04-x86_64 && \ apt-get clean && \ mv /etc/apt/sources.list.bak /etc/apt/sources.list && \ rm /etc/apt/apt.conf.d/00skip-verify-peer.conf
Crie uma imagem de contêiner consultando este exemplo de comando:
docker build -f Dockerfile . -t nvidia/cuda:mlnx-ofed-4.9-11.1.1-runtime-ubuntu18.04
Depois que a imagem de contêiner for criada, execute o seguinte comando para obter a versão de MLNX_OFED na imagem de contêiner:
docker run -ti --rm nvidia/cuda:mlnx-ofed-4.9-11.1.1-runtime-ubuntu18.04 ofed_info | head -n 1
A saída do comando é a seguinte:
MLNX_OFED_LINUX-4.9-6.0.6.0 (OFED-4.9-6.0.6):