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