Condividi tramite


Configurare pacchetti specifici della GPU in Linux

Questa sezione descrive i pacchetti che è necessario configurare per poter CNTK sfruttare le GPU NVIDIA.

Controllare la compatibilità della GPU e ottenere il driver più recente

È necessaria una scheda grafica compatibile con CUDA disponibile per l'uso di funzionalità GPU CNTK. È possibile verificare se la scheda è compatibile con CUDA qui e qui (per le schede meno recenti). La funzionalità di calcolo della scheda GPU deve essere 3.0 o più.

Se si dispone della scheda necessaria, installare il driver più recente:

  • Selezionare la scheda e scaricare il pacchetto driver da qui (in genere disponibile come .run file)

  • Se il gestore di Windows X è in esecuzione, l'installazione del driver avrà probabilmente esito negativo. Aprire una sessione del terminale remoto nel computer e arrestare il gestore di Windows X. Vedere la documentazione della piattaforma per i comandi esatti.

Esempio: per Ubuntu, usare il comando seguente (presupponendo lightdm che sia il gestore X Windows):

sudo stop lightdm
  • Installare il driver come nell'esempio seguente (si noti che il nome del file può essere diverso per il sistema):
sudo chmod +x ./NVIDIA-Linux-x86_64-384.111.run
sudo ./NVIDIA-Linux-x86_64-384.111.run

È consigliabile accettare le opzioni di installazione predefinite

Si noti che il programma di installazione del driver può lamentarsi del driver kernel nouveau. Per istruzioni per disabilitarla, vedere la documentazione della piattaforma. Per Ubuntu è possibile usare questo set di istruzioni.

  • Se interrotto durante i passaggi precedenti, avviare X Windows manager. Vedere la documentazione della piattaforma per i comandi esatti.

Esempio: per Ubuntu, usare il comando seguente (nel caso di lightdm come gestore di Windows X):

sudo start lightdm

CUDA 9

La procedura seguente illustra come installare CUDA usando .run la distribuzione di file. È anche possibile usare o RPM installare DEB pacchetti. Il pacchetto per il sistema è disponibile nella pagina di download e nelle istruzioni di installazione di NVIDIA CUDA 9.0 nella documentazione di CUDA Online.

Scaricare e installare la Toolkit NVIDIA CUDA 9.0:

  • Trovare il .run file per la piattaforma qui e scaricarlo.

  • Se il gestore di Windows X è in esecuzione, l'installazione avrà esito negativo. Aprire una sessione del terminale remoto nel computer e arrestare il gestore di Windows X. Vedere la documentazione della piattaforma per i comandi esatti.

Esempio: per Ubuntu usare il comando seguente (nel caso di lightdm come gestore di Windows X):

sudo stop lightdm
  • Installare il Toolkit CUDA 9.0 (si noti che il nome del file può essere diverso per il .run sistema):
chmod +x ./cuda_9.0.176_384.81_linux.run
sudo ./cuda_9.0.176_384.81_linux.run

Quando richiesto dal programma di installazione:

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

Selezionare no se il driver più recente è già stato installato eseguendo i passaggi nella sezione precedente. Se non è stato fatto, selezionare , ma è consigliabile aggiornare yesil driver più recente dopo l'installazione del toolkit CUDA.

Se l'installazione del driver è stata rifiutata dal pacchetto CUDA 9.0, verrà visualizzato l'avviso seguente alla fine dell'installazione:

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

Ignorare questo avviso.

Se interrotto durante i passaggi precedenti, avviare X Windows manager. Per i comandi esatti, vedere la documentazione della piattaforma.

Esempio: per Ubuntu usare il comando seguente (nel caso di lightdm come gestore di Windows X):

sudo start lightdm

Aggiungere la variabile di ambiente seguente alla sessione corrente e .bashrc al profilo (se sono stati modificati i percorsi predefiniti durante l'installazione di CUDA, modificare i valori seguenti):

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

Il passaggio successivo è facoltativo. È possibile ignorare ulteriormente la sezione successiva.

FACOLTATIVO Verifica dell'installazione di CUDA 9.0

È possibile verificare l'installazione di CUDA compilando gli esempi CUDA (si presuppone che i percorsi predefiniti siano stati usati durante l'installazione di CUDA). Si noti che la compilazione di tutti gli esempi è un'operazione prolungata:

cd ~/NVIDIA_CUDA-9.0_Samples/
make

Dopo aver completato l'utilità di richiamare deviceQuery la compilazione:

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

Se tutto funziona bene, è consigliabile ottenere un output simile a quello seguente:

./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 di distribuzione GPU

A partire da CUDA versione 8, il Kit di distribuzione GPU fa parte del pacchetto CUDA e non è più necessario installare separatamente.

cuDNN

Installare la libreria di rete neurale profonda NVIDIA CUDA (cuDNN).

Importante

Se in precedenza è stato installato cuDNN per una versione precedente, assicurarsi di eseguire l'aggiornamento alla versione compatibile con CUDA 9.0

Importante

Installare cuDNN usando la versione esatta e il percorso di destinazione come specificato di seguito. Questo è necessario perché è previsto dal programma di configurazione di compilazione CNTK.

  • Usare il seguente comando:
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

FACOLTATIVO NCCL

La libreria NCCL di NVIDIA offre primitive ottimizzate per la comunicazione multi-GPU collettiva in Linux. CNTK può sfruttare queste primitive accelerate per i processi paralleli in esecuzione su un singolo host (vedere qui per un'introduzione al training parallelo con CNTK).

Seguire le istruzioni qui per scaricare la libreria NCCL NVIDIA.

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

Usare quindi l'opzione --with-nccl=<path> di configurazione CNTK per abilitare la compilazione con NVIDIA NCCL. Ad esempio, se l'NCCL viene installato nella cartella diversa dalla cartella /usrpredefinita, usare configure --with-nccl=<nccl install folder> (più opzioni aggiuntive) per compilare con il supporto NCCL NVIDIA.

Nota

Attualmente, il supporto di CNTK per NVIDIA NCCL è limitato a SGD parallelo ai dati con 32/64 bit sfumature, usando il CNTK binario. Il supporto per altri metodi di parallelizzazione e CNTK v2 verranno aggiunti in futuro. La versione ufficiale di CNTK viene compilata con NCCL abilitata. Tutte le ruote Python linux includono già il binario NCCL. Per gli utenti brainscript in Linux, l'ncCL deve essere installato. Se l'utente preferisce non usare NCCL, compilare CNTK dall'origine. Si noti che la configurazione rileva automaticamente l'NCCL installata in /usr, quindi disinstallare NCCL prima della compilazione.

CUB

Se si installa CNTK per Python, è possibile passare alla sezione successiva. In caso contrario, procedere ulteriormente.

Ottenere e installare NVIDIA CUB usando i comandi seguenti.

Importante

Installare NVIDIA CUB usando la versione esatta e il percorso di destinazione come specificato di seguito. Questo è necessario perché è previsto dal programma di configurazione di compilazione CNTK.

Usare il seguente comando:

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