Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-09-14 GMT+08:00

Instalación de MLNX_OFED en una imagen de contenedor

Escenarios

La NIC de Mellanox Technologies se ha configurado en los servidores de GPU de ModelArts para admitir Remote Direct Memory Access (RDMA). Como resultado, puede instalar MLNX_OFED en la imagen de contenedor, lo que permite a NCCL aprovechar la NIC y mejorar la eficiencia de la comunicación entre los nodos.

Después de habilitar esta NIC para NCCL, NET/IB se utiliza para la comunicación entre los nodos. Si esta NIC no está habilitada, se utiliza NET/Socket para la comunicación entre los nodos. NET/IB es mejor que NET/Socket en términos de latencia y ancho de banda.

Tabla 1 Instalación de NIC de Mellanox Technologies y MLNX_OFED en servidores de GPU de ModelArts

Modelo de GPU

NIC de Mellanox Technologies

Versión de MLNX_OFED instalada

Versión de MLNX_OFED recomendada para la imagen de contenedor

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

Instalación de MLNX_OFED

Tome la imagen de contenedor de Ubuntu18.04 como ejemplo. El Dockerfile para instalar MLNX_OFED 4.9-6.0.6.0-LTS es el siguiente:

El host que se utiliza para descargar archivos y crear imágenes de contenedor usando un Dockerfile debe ser capaz de conectarse a la red 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

Cree una imagen de contenedor según este ejemplo de comando:

docker build -f Dockerfile . -t nvidia/cuda:mlnx-ofed-4.9-11.1.1-runtime-ubuntu18.04

Una vez creada la imagen del contenedor, ejecute el siguiente comando para obtener la versión de MLNX_OFED en la imagen de contenedor:

docker run -ti --rm nvidia/cuda:mlnx-ofed-4.9-11.1.1-runtime-ubuntu18.04 ofed_info | head -n 1

La salida de comandos es la siguiente:

MLNX_OFED_LINUX-4.9-6.0.6.0 (OFED-4.9-6.0.6):