Compartir a través de


Configuración de paquetes específicos de GPU en Linux

En esta sección se describen los paquetes que necesita configurar para que CNTK aprovechen las GPU de NVIDIA.

Comprobación de la compatibilidad de GPU y obtención del controlador más reciente

Necesita una tarjeta gráfica compatible con CUDA disponible para usar CNTK funcionalidades de GPU. Puede comprobar si su tarjeta es compatible con CUDA aquí y aquí (para tarjetas anteriores). La capacidad de proceso de la tarjeta GPU (CC) debe ser 3.0 o más.

Si tiene la tarjeta necesaria, instale el controlador más reciente:

  • Seleccione la tarjeta y descargue el paquete de controladores desde aquí (normalmente disponible como .run archivo).

  • Si se está ejecutando el administrador de X Windows, es probable que se produzca un error en la instalación del controlador. Abra una sesión de terminal remoto en la máquina y detenga el administrador de X Windows. Consulte la documentación de la plataforma para ver los comandos exactos.

Ejemplo: para Ubuntu, use el siguiente comando (suponiendo lightdm que es el administrador de X Windows):

sudo stop lightdm
  • Instale el controlador como en el ejemplo siguiente (tenga en cuenta que el nombre de archivo puede ser diferente para el sistema):
sudo chmod +x ./NVIDIA-Linux-x86_64-384.111.run
sudo ./NVIDIA-Linux-x86_64-384.111.run

Se recomienda aceptar las opciones de instalación predeterminadas.

Tenga en cuenta que el programa de instalación del controlador puede quejarse sobre el controlador kernel nouveau. Consulte la documentación de la plataforma para obtener instrucciones para deshabilitarla. Para Ubuntu, puede usar este conjunto de instrucciones.

  • Si se detiene durante los pasos anteriores, inicie X Windows manager. Consulte la documentación de la plataforma para ver los comandos exactos.

Ejemplo: para Ubuntu, use el siguiente comando (en el caso de lightdm como administrador de X Windows):

sudo start lightdm

CUDA 9

En el procedimiento siguiente se explica cómo instalar CUDA mediante .run la distribución de archivos. También puede usar DEB la instalación de paquetes o RPM . Encontrará el paquete del sistema en la página de descarga de NVIDIA CUDA 9.0 e instrucciones de instalación en la documentación en línea de CUDA.

Descargue e instale el Toolkit NVIDIA CUDA 9.0:

  • Busque el .run archivo de su plataforma aquí y descárguelo.

  • Si se está ejecutando el administrador de X Windows, es probable que se produzca un error en la instalación. Abra una sesión de terminal remoto en la máquina y detenga el administrador de X Windows. Consulte la documentación de la plataforma para ver los comandos exactos.

Ejemplo: para Ubuntu, use el siguiente comando (en el caso de lightdm como administrador de X Windows):

sudo stop lightdm
  • Instale el Toolkit CUDA 9.0 (tenga en cuenta que el .run nombre de archivo puede ser diferente para el sistema):
chmod +x ./cuda_9.0.176_384.81_linux.run
sudo ./cuda_9.0.176_384.81_linux.run

Cuando el instalador lo solicite:

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit:

Seleccione no si ya ha instalado el controlador más reciente realizando los pasos de la sección anterior. Si no lo ha hecho, seleccione yes, pero se recomienda encarecidamente actualizar al controlador más reciente después de instalar cuda toolkit.

Si rechazó la instalación del controlador del paquete CUDA 9.0, recibirá la siguiente advertencia al final de la instalación:

***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 9.0 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run -silent -driver

Omita esta advertencia.

Si se detiene durante los pasos anteriores, inicie X Windows manager. Consulte la documentación de la plataforma para ver los comandos exactos.

Ejemplo: para Ubuntu, use el siguiente comando (en el caso de lightdm como administrador de X Windows):

sudo start lightdm

Agregue la siguiente variable de entorno a la sesión actual y al .bashrc perfil (si modificó las rutas de acceso predeterminadas durante la instalación de CUDA, cambie los valores siguientes en consecuencia):

export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH

El siguiente paso es opcional. Puede ir más allá a la sección siguiente.

OPCIONAL. Comprobación de la instalación de CUDA 9.0

Puede comprobar la instalación de CUDA mediante la compilación de los ejemplos de CUDA (se supone que se usaron las rutas de acceso predeterminadas durante la instalación de CUDA). Tenga en cuenta que compilar todos los ejemplos es una operación larga:

cd ~/NVIDIA_CUDA-9.0_Samples/
make

Después de la utilidad de invocación deviceQuery de compilación correcta:

~/NVIDIA_CUDA-9.0_Samples/1_Utilities/deviceQuery/deviceQuery

Si todo funciona bien, debería obtener una salida similar a la siguiente:

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX 960"
  CUDA Driver Version / Runtime Version          9.0 / 9.0
  CUDA Capability Major/Minor version number:    5.2
  Total amount of global memory:                 2025 MBytes (2123235328 bytes)
  ( 8) Multiprocessors, (128) CUDA Cores/MP:     1024 CUDA Cores
  GPU Max Clock rate:                            1253 MHz (1.25 GHz)
  Memory Clock rate:                             3505 Mhz
  Memory Bus Width:                              128-bit
  L2 Cache Size:                                 1048576 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 2 copy engine(s)
  Run time limit on kernels:                     No
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 3 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 9.0, CUDA Runtime Version = 9.0, NumDevs = 1, Device0 = GeForce GTX 960
Result = PASS

Kit de implementación de GPU

A partir de la versión 8 de CUDA, el Kit de implementación de GPU forma parte del paquete CUDA y ya no es necesario instalarse por separado.

cuDNN

Instale la biblioteca de red neuronal profunda (cuDNN) de NVIDIA CUDA.

Importante

Si ha instalado previamente cuDNN para una versión anterior, asegúrese de actualizar a la versión compatible con CUDA 9.0.

Importante

Instale cuDNN mediante la versión exacta y la ruta de acceso de destino como se especifica a continuación. Esto es necesario porque el programa de configuración de compilación CNTK espera.

  • Use los comandos siguientes:
wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libcudnn7_7.0.4.31-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7_7.0.4.31-1+cuda9.0_amd64.deb

OPCIONAL. NCCL

La biblioteca NCCL de NVIDIA proporciona primitivos optimizados para la comunicación colectiva con varias GPU en Linux. CNTK puede aprovechar estas primitivas aceleradas para trabajos paralelos que se ejecutan en un único host (cf. aquí para obtener una introducción al entrenamiento paralelo con CNTK).

Siga las instrucciones que encontrará aquí para descargar la biblioteca NVIDIA NCCL.

wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libnccl-dev_2.1.2-1+cuda9.0_amd64.deb
wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libnccl2_2.1.2-1+cuda9.0_amd64.deb
sudo dpkg -i libnccl2_2.1.2-1+cuda9.0_amd64.deb libnccl-dev_2.1.2-1+cuda9.0_amd64.deb

A continuación, use la opción --with-nccl=<path> de configuración CNTK para habilitar la compilación con NVIDIA NCCL. Por ejemplo, si NCCL está instalado en la carpeta distinta de la carpeta /usrpredeterminada, use configure --with-nccl=<nccl install folder> (más opciones adicionales) para compilar con compatibilidad con NVIDIA NCCL.

Nota

Actualmente, la compatibilidad de CNTK con NVIDIA NCCL se limita a SGD paralelo de datos con 32/64 bits de degradado, mediante el binario CNTK. La compatibilidad con métodos de paralelización adicionales y CNTK v2 se agregará en el futuro. La versión oficial de CNTK se compila con NCCL habilitado. Todas las ruedas de Python de Linux ya incluyen binario NCCL. Para los usuarios de Brainscript en Linux, debe instalarse NCCL. Si el usuario prefiere no usar NCCL, compile CNTK desde el origen. Tenga en cuenta que configurar detecta automáticamente NCCL instalado en /usr, por lo que desinstale NCCL antes de la compilación.

CUB

Si va a instalar CNTK para Python, puede ir directamente a la sección siguiente. De lo contrario, continúe.

Obtenga e instale NVIDIA CUB con los comandos siguientes.

Importante

Instale NVIDIA CUB con la versión exacta y la ruta de acceso de destino como se especifica a continuación. Esto es necesario porque el programa de configuración de compilación CNTK espera.

Use los comandos siguientes:

wget https://github.com/NVlabs/cub/archive/1.7.4.zip
unzip ./1.7.4.zip
sudo cp -r cub-1.7.4 /usr/local