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 /usr
par 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