Udostępnij za pośrednictwem


Konfigurowanie pakietów specyficznych dla procesora GPU w systemie Linux

W tej sekcji opisano pakiety, które należy skonfigurować, aby CNTK korzystać z procesorów GPU FIRMY NVIDIA.

Sprawdzanie zgodności procesora GPU i pobieranie najnowszego sterownika

Potrzebna jest karta graficzna zgodna z cudA, która umożliwia korzystanie z CNTK możliwości procesora GPU. Możesz sprawdzić, czy karta jest zgodna z cudA tutaj i tutaj (w przypadku starszych kart). Możliwości obliczeniowe karty GPU (CC) muszą być 3.0 lub więcej.

Jeśli masz wymaganą kartę, zainstaluj najnowszy sterownik:

  • Wybierz kartę i pobierz pakiet sterowników tutaj ( zwykle dostępny jako .run plik)

  • Jeśli menedżer X Windows jest uruchomiony, instalacja sterownika prawdopodobnie zakończy się niepowodzeniem. Otwórz sesję terminalu zdalnego na maszynie i zatrzymaj menedżera Windows X. Zapoznaj się z dokumentacją platformy, aby zapoznać się z dokładnymi poleceniami.

Przykład: w przypadku systemu Ubuntu użyj następującego polecenia (przy założeniu, że lightdm jest to menedżer X Windows):

sudo stop lightdm
  • Zainstaluj sterownik, tak jak w poniższym przykładzie (pamiętaj, że nazwa pliku może być inna dla systemu):
sudo chmod +x ./NVIDIA-Linux-x86_64-384.111.run
sudo ./NVIDIA-Linux-x86_64-384.111.run

Zalecamy akceptowanie domyślnych opcji instalacji

Należy pamiętać, że program instalacyjny sterownika może narzekać na sterownik jądra nouveau. Zapoznaj się z dokumentacją platformy, aby uzyskać instrukcje dotyczące jego wyłączania. W przypadku systemu Ubuntu możesz użyć tego zestawu instrukcji.

  • Jeśli zatrzymano się podczas powyższych kroków, uruchom menedżera X Windows. Zapoznaj się z dokumentacją platformy, aby zapoznać się z dokładnymi poleceniami.

Przykład: w przypadku systemu Ubuntu użyj następującego polecenia (w przypadku lightdm menedżera X Windows):

sudo start lightdm

CUDA 9

W poniższej procedurze wyjaśniono, jak zainstalować cuda przy użyciu .run dystrybucji plików. Można również użyć DEB instalacji pakietów lub RPM . Pakiet dla systemu znajdziesz na stronie pobierania i instrukcji instalacji FIRMY NVIDIA CUDA 9.0 w dokumentacji cuda online.

Pobierz i zainstaluj zestaw narzędzi NVIDIA CUDA 9.0 Toolkit:

  • .run Znajdź plik dla swojej platformy tutaj i pobierz go.

  • Jeśli menedżer X Windows jest uruchomiony, instalacja prawdopodobnie zakończy się niepowodzeniem. Otwórz sesję terminalu zdalnego na maszynie i zatrzymaj menedżera Windows X. Zapoznaj się z dokumentacją platformy, aby zapoznać się z dokładnymi poleceniami.

Przykład: w przypadku systemu Ubuntu użyj następującego polecenia (w przypadku lightdm menedżera X Windows):

sudo stop lightdm
  • Zainstaluj zestaw narzędzi CUDA 9.0 (należy pamiętać, że .run nazwa pliku może być inna dla systemu):
chmod +x ./cuda_9.0.176_384.81_linux.run
sudo ./cuda_9.0.176_384.81_linux.run

Po wyświetleniu monitu przez instalatora:

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

Wybierz no , czy masz już zainstalowany najnowszy sterownik, wykonując kroki opisane w poprzedniej sekcji. Jeśli to nie zrobiono, wybierz pozycję yes, ale zdecydowanie zalecamy zaktualizowanie do najnowszego sterownika po zainstalowaniu zestawu narzędzi CUDA.

Jeśli instalacja sterownika została odrzucona z pakietu CUDA 9.0, na końcu instalacji zostanie wyświetlone następujące ostrzeżenie:

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

Ignoruj to ostrzeżenie.

Jeśli zatrzymano się podczas powyższych kroków, uruchom menedżera X Windows. Zapoznaj się z dokumentacją platformy, aby uzyskać dokładne polecenia.

Przykład: w przypadku systemu Ubuntu użyj następującego polecenia (w przypadku lightdm menedżera X Windows):

sudo start lightdm

Dodaj następującą zmienną środowiskową do bieżącej sesji i profilu .bashrc (jeśli zmodyfikowano ścieżki domyślne podczas instalacji CUDA, zmień odpowiednio poniższe wartości):

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

Następny krok jest opcjonalny. Możesz przejść dalej do następnej sekcji.

OPCJONALNE. Weryfikowanie instalacji CUDA 9.0

Możesz zweryfikować instalację CUDA, kompilując przykłady CUDA (zakładamy, że domyślne ścieżki były używane podczas instalacji CUDA). Należy pamiętać, że tworzenie wszystkich przykładów jest długotrwałą operacją:

cd ~/NVIDIA_CUDA-9.0_Samples/
make

Po pomyślnym wywołaniu deviceQuery kompilacji narzędzie:

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

Jeśli wszystko działa dobrze, należy uzyskać dane wyjściowe podobne do poniższego:

./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

Zestaw wdrażania procesora GPU

Począwszy od interfejsu CUDA w wersji 8, zestaw wdrażania procesora GPU jest częścią pakietu CUDA i nie jest już wymagany do zainstalowania oddzielnie.

cuDNN

Zainstaluj bibliotekę sieci neuronowej NVIDIA CUDA Deep Neural Network (cuDNN).

Ważne

Jeśli wcześniej zainstalowano nazwę cuDNN dla starszej wersji, upewnij się, że uaktualnienie do zgodnej wersji CUDA 9.0

Ważne

Zainstaluj nazwę cuDNN przy użyciu dokładnej wersji i ścieżki docelowej, jak określono poniżej. Jest to konieczne, ponieważ jest to oczekiwane przez program konfiguracji kompilacji CNTK.

  • Użyj następujących poleceń:
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

OPCJONALNE. Lista NCCL

Biblioteka NCCL firmy NVIDIA zapewnia zoptymalizowane elementy pierwotne do zbiorczej komunikacji z wieloma procesorami GPU w systemie Linux. CNTK mogą korzystać z tych przyspieszonych elementów pierwotnych dla zadań równoległych uruchomionych na jednym hoście (zob. tutaj, aby zapoznać się z wprowadzeniem do równoległego trenowania z CNTK).

Postępuj zgodnie z instrukcjami tutaj , aby pobrać bibliotekę NCCL firmy 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

Następnie użyj opcji --with-nccl=<path> CNTK konfiguracji, aby włączyć kompilowanie za pomocą listy NCCL firmy NVIDIA. Jeśli na przykład lista NCCL jest zainstalowana w folderze innym niż folder /usrdomyślny, użyj configure --with-nccl=<nccl install folder> (plus dodatkowych opcji) do skompilowania za pomocą obsługi listy NCCL firmy NVIDIA.

Uwaga

Obecnie obsługa CNTK dla listy NCCL firmy NVIDIA jest ograniczona do równoległej sgD danych z 32/64 bitami gradientu przy użyciu pliku binarnego CNTK. Obsługa dodatkowych metod równoległych i CNTK v2 zostanie dodana w przyszłości. Oficjalna wersja CNTK jest kompilowana z włączoną listą NCCL. Wszystkie koła języka Python z systemem Linux zawierają już pliki binarne NCCL. W przypadku użytkowników usługi BrainScript w systemie Linux należy zainstalować listę NCCL. Jeśli użytkownik nie chce używać listy NCCL, skompiluj CNTK ze źródła. Należy pamiętać, że konfiguracja automatycznie wykrywa listę NCCL zainstalowaną w katalogu /usr, więc odinstaluj listę NCCL przed kompilacją.

CUB

Jeśli instalujesz CNTK dla języka Python, możesz przejść do następnej sekcji. W przeciwnym razie kontynuuj dalej.

Pobierz i zainstaluj narzędzie NVIDIA CUB przy użyciu poniższych poleceń.

Ważne

Zainstaluj program NVIDIA CUB przy użyciu dokładnej wersji i ścieżki docelowej, jak określono poniżej. Jest to konieczne, ponieważ jest to oczekiwane przez program konfiguracji kompilacji CNTK.

Użyj następujących poleceń:

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