Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-09-14 GMT+08:00

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.

Tabela 1 Instalação de NIC e MLNX_OFED da Mellanox Technologies em servidores de GPU do ModelArts

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):