NCCL de NVIDIA: una introducción detallada a NCCL, instalación y uso
Tabla de contenido
1. Utilice CUDA para compilar PyTorch y obtener compatibilidad con NCCL integrada
T1 Instalar y configurar automáticamente NCCL
T2 Instalar y configurar manualmente NCCL
Configurar variables de entorno
(1), Integrar NCCL en el marco de aprendizaje profundo
(2), inicialice el entorno NCCL
(3), utilice la operación de comunicación NCCL
Introducción a NCCL
NCCL (NVIDIA Collective Communications Library) es una biblioteca de comunicación multi-GPU de alto rendimiento desarrollada por NVIDIA para la transmisión rápida de datos y la informática colaborativa entre varias GPU NVIDIA. Puede proporcionar soporte para entrenamiento distribuido y aceleración paralela de datos en los campos de aprendizaje profundo y computación de alto rendimiento.
NCCL implementa primitivas de comunicación multi-GPU y multi-nodo optimizadas para GPU NVIDIA y redes . NCCL proporciona rutinas como all-gather, all-reduce, broadcast, reduce, reduce-scatter y envío y recepción punto a punto. Las rutinas están optimizadas para lograr un alto ancho de banda y baja latencia en PCIe y NVLink de alta velocidad. se interconecta dentro de los nodos y en la red NVIDIA Mellanox entre los nodos.
Los principales marcos de trabajo de aprendizaje profundo como Caffe2, Chainer, MxNet, PyTorch y TensorFlow han integrado NCCL en sistemas de múltiples GPU y múltiples nodos para acelerar el entrenamiento de aprendizaje profundo.
1. Utilice CUDA para compilar PyTorch y obtener compatibilidad con NCCL integrada
PyTorch debe compilarse con CUDA para la compatibilidad con NCCL integrada. Al compilar PyTorch con CUDA, puede obtener la versión con NCCL integrado para admitir el entrenamiento distribuido.
instalación NCCL
Actualmente, NCCL no admite la instalación y el uso en Windows. NCCL se desarrolla y optimiza principalmente para el sistema operativo Linux y se integra con marcos de aprendizaje profundo en Linux. Por lo tanto, si está realizando un desarrollo de aprendizaje profundo en un sistema Windows, es posible que no pueda instalar y usar NCCL directamente. Sin embargo, todavía es posible usar GPU y CUDA para el entrenamiento de aprendizaje profundo en un sistema Windows, simplemente no puede usar las optimizaciones y funciones específicas proporcionadas por NCCL.
T1 Instalar y configurar automáticamente NCCL
En algunos casos, es posible que NCCL se haya instalado automáticamente con el controlador de GPU de NVIDIA y se haya integrado con CUDA y PyTorch. Por lo tanto, antes de instalar manualmente, asegúrese de no tener una versión instalada de NCCL en su sistema.
T2 Instalar y configurar manualmente NCCL
Tenga en cuenta que los pasos a continuación son solo para la instalación y configuración manual de NCCL.
Descargar NCCL
Dirección de descarga de NCCL: Biblioteca de comunicaciones colectivas de NVIDIA (NCCL) | Desarrollador de NVIDIA
Descargue el paquete de instalación de NCCL para su sistema operativo y GPU. Asegúrese de elegir la versión que sea compatible con su sistema y la versión de CUDA .
NCCL está disponible para descargar como parte de NVIDIA HPC SDK y como un paquete independiente para Ubuntu y Red Hat.
Instalar NCCL
Descomprima el paquete de instalación de NCCL descargado y ejecute la instalación de acuerdo con la guía de instalación que contiene. Por lo general, un paso de instalación consiste en ejecutar un script de instalación específico o ejecutar un comando de instalación predefinido.
Configurar variables de entorno
Una vez completada la instalación, se debe agregar la ruta a NCCL a las variables de entorno del sistema para que otras aplicaciones puedan encontrarla. Los pasos exactos varían según el sistema operativo, pero generalmente implican agregar la ruta de la biblioteca de NCCL a la variable de entorno LD_LIBRARY_PATH (Linux) o PATH (Windows).
verificar la instalación
Una vez completada la instalación, puede usar el siguiente fragmento de código para verificar la instalación de NCCL:
python -c "import torch; print(torch.cuda.nccl.version())"
o
import torch
print(torch.cuda.nccl.is_available())
Si el resultado es True, NCCL se instaló e integró correctamente con PyTorch.
Cómo usar NCCL
1. Uso básico
(1), Integrar NCCL en el marco de aprendizaje profundo
NCCL está integrado con los principales marcos de aprendizaje profundo (como PyTorch, TensorFlow) para acelerar el entrenamiento de múltiples GPU y múltiples nodos. Debe asegurarse de que el marco de aprendizaje profundo que utiliza tenga NCCL integrado y configurarlo de acuerdo con la documentación y los ejemplos del marco correspondiente.
(2), inicialice el entorno NCCL
En su código de aprendizaje profundo, debe inicializar el entorno NCCL para la comunicación de múltiples GPU. Esto generalmente implica la creación de grupos de comunicación NCCL, la configuración de identificadores de dispositivos, etc. Para conocer el proceso de inicialización específico, consulte la documentación oficial y el código de muestra de NCCL.
(3), utilice la operación de comunicación NCCL
Una vez que se inicializa el entorno NCCL, puede utilizar las operaciones de comunicación proporcionadas por NCCL para realizar tareas de comunicación paralelas, como recopilación total, reducción total y transmisión. Estas operaciones de comunicación aprovecharán al máximo el alto ancho de banda y la baja latencia entre las GPU y las redes para mejorar el rendimiento del entrenamiento de aprendizaje profundo en sistemas de múltiples GPU y múltiples nodos.