Configurer des packages spécifiques gpu sur Linux

Cette section décrit les packages que vous devez configurer pour CNTK tirer parti des GPU NVIDIA.

Vérification de la compatibilité de votre GPU et obtention du pilote le plus récent

Vous avez besoin d’une carte graphique compatible CUDA disponible pour utiliser CNTK fonctionnalités GPU. Vous pouvez vérifier si votre carte est compatible avec CUDA ici et ici (pour les cartes plus anciennes). Votre capacité de calcul de carte GPU (CC) doit être 3.0 ou plus.

Si vous avez la carte requise, installez le pilote le plus récent :

  • Sélectionnez votre carte et téléchargez le pack de pilotes ici (généralement disponible en tant que .run fichier)

  • Si votre gestionnaire de Windows X est en cours d’exécution, l’installation du pilote échoue probablement. Ouvrez une session de terminal distant sur votre ordinateur et arrêtez le gestionnaire de Windows X. Reportez-vous à la documentation de votre plateforme pour connaître les commandes exactes.

Exemple : pour Ubuntu, utilisez la commande suivante (en supposant que lightdm votre gestionnaire X Windows) :

sudo stop lightdm
  • Installez le pilote comme dans l’exemple ci-dessous (notez que le nom de fichier peut être différent pour votre système) :
sudo chmod +x ./NVIDIA-Linux-x86_64-384.111.run
sudo ./NVIDIA-Linux-x86_64-384.111.run

Nous vous recommandons d’accepter les options d’installation par défaut

Notez que le programme d’installation du pilote peut se plaindre du nouveau pilote noyau. Reportez-vous à la documentation de votre plateforme pour obtenir des instructions pour la désactiver. Pour Ubuntu, vous pouvez utiliser cet ensemble d’instructions.

  • Si elle est arrêtée pendant les étapes ci-dessus, démarrez X Windows manager. Reportez-vous à la documentation de votre plateforme pour connaître les commandes exactes.

Exemple : pour Ubuntu, utilisez la commande suivante (en cas de lightdm X Windows manager) :

sudo start lightdm

CUDA 9

La procédure ci-dessous explique comment installer CUDA à l’aide .run de la distribution de fichiers. Vous pouvez également utiliser DEB ou RPM installer des packages. Vous trouverez le package de votre système sur la page de téléchargement nvidia CUDA 9.0 et les instructions d’installation dans la documentation CUDA Online.

Téléchargez et installez le Kit de ressources NVIDIA CUDA 9.0 :

  • Recherchez le .run fichier de votre plateforme ici et téléchargez-le.

  • Si votre gestionnaire de Windows X est en cours d’exécution, l’installation échoue probablement. Ouvrez une session de terminal distant sur votre ordinateur et arrêtez le gestionnaire de Windows X. Reportez-vous à la documentation de votre plateforme pour connaître les commandes exactes.

Exemple : pour Ubuntu, utilisez la commande suivante (en cas de lightdm votre gestionnaire X Windows) :

sudo stop lightdm
  • Installez le Kit de ressources CUDA 9.0 (notez que le .run nom de fichier peut être différent pour votre système) :
chmod +x ./cuda_9.0.176_384.81_linux.run
sudo ./cuda_9.0.176_384.81_linux.run

Lorsque vous y êtes invité par le programme d’installation :

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

Sélectionnez no si vous avez déjà installé le pilote le plus récent en effectuant les étapes de la section précédente. Si vous ne l’avez pas fait, sélectionnez yes, mais nous vous recommandons vivement de mettre à jour vers le pilote le plus récent après l’installation du kit de ressources CUDA.

Si vous avez refusé l’installation du pilote à partir du package CUDA 9.0, vous obtenez l’avertissement suivant à la fin de l’installation :

***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

Ignorez cet avertissement.

Si elle est arrêtée pendant les étapes ci-dessus, démarrez X Windows manager. Reportez-vous à la documentation de votre plateforme pour obtenir des commandes exactes.

Exemple : pour Ubuntu, utilisez la commande suivante (en cas de lightdm X Windows manager) :

sudo start lightdm

Ajoutez la variable d’environnement suivante à votre session actuelle et à votre .bashrc profil (si vous avez modifié les chemins par défaut pendant l’installation de CUDA, modifiez les valeurs ci-dessous en conséquence) :

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

L’étape suivante est facultative. Vous pouvez passer plus loin à la section suivante.

FACULTATIF. Vérification de l’installation de CUDA 9.0

Vous pouvez vérifier votre installation CUDA en compilant les exemples CUDA (nous supposons que les chemins d’accès par défaut ont été utilisés pendant l’installation de CUDA). Notez que la création de tous les exemples est une longue opération :

cd ~/NVIDIA_CUDA-9.0_Samples/
make

Après l’utilitaire d’appel deviceQuery de build réussi :

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

Si tout fonctionne bien, vous devez obtenir une sortie similaire à celle ci-dessous :

./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 déploiement GPU

À partir de CUDA version 8, le Kit de déploiement GPU fait partie du package CUDA et n’est plus nécessaire pour être installé séparément.

cuDNN

Installez la bibliothèque de réseau neuronal profond NVIDIA CUDA (cuDNN).

Important

Si vous avez déjà installé cuDNN pour une version antérieure, vérifiez que vous effectuez une mise à niveau vers la version compatible CUDA 9.0

Important

Installez cuDNN à l’aide de la version exacte et du chemin cible, comme indiqué ci-dessous. Cela est nécessaire, car il est attendu par le programme de configuration de build CNTK.

  • Utilisez les commandes suivantes :
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

FACULTATIF. CCNL

La bibliothèque NCCL de NVIDIA fournit des primitives optimisées pour la communication multi-GPU collective sur Linux. CNTK peut tirer parti de ces primitives accélérées pour les travaux parallèles s’exécutant sur un seul hôte (voir ici pour une introduction à l’apprentissage parallèle avec CNTK).

Suivez les instructions ci-dessous pour télécharger la bibliothèque 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

Ensuite, utilisez l’option --with-nccl=<path> de configuration CNTK pour activer la génération avec NVIDIA NCCL. Par exemple, si la NCCL est installée dans un dossier autre que le dossier /usrpar défaut, utilisez configure --with-nccl=<nccl install folder> (plus d’options supplémentaires) pour générer avec la prise en charge de NVIDIA NCCL.

Notes

Actuellement, la prise en charge de CNTK NVIDIA NCCL est limitée aux SGD en parallèle des données avec 32/64 bits de dégradé, à l’aide du binaire CNTK. La prise en charge des méthodes de parallélisation supplémentaires et CNTK v2 sera ajoutée à l’avenir. La publication officielle de CNTK est créée avec la NCCL activée. Toutes les roues Python linux incluent déjà le binaire NCCL. Pour les utilisateurs Brainscript sur Linux, la CCNL doit être installée. Si l’utilisateur préfère ne pas utiliser la NCCL, créez CNTK à partir de la source. Notez que la configuration détecte automatiquement l’installation de la CCNL sous /usr. Veuillez donc désinstaller la NCCL avant la génération.

CUB

Si vous installez CNTK pour Python, vous pouvez passer à la section suivante. Sinon, poursuivez.

Obtenez et installez NVIDIA CUB à l’aide des commandes ci-dessous.

Important

Installez NVIDIA CUB à l’aide de la version exacte et du chemin cible, comme indiqué ci-dessous. Cela est nécessaire, car il est attendu par le programme de configuration de build CNTK.

Utilisez les commandes suivantes :

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