Einrichten von GPU-spezifischen Paketen unter Linux
In diesem Abschnitt werden die Pakete beschrieben, die Sie einrichten müssen, damit CNTK NVIDIA GPUs nutzen können.
Überprüfen der GPU-Kompatibilität und Abrufen des neuesten Treibers
Sie benötigen eine CUDA-kompatible Grafikkarte, um CNTK GPU-Funktionen zu verwenden. Sie können überprüfen, ob Ihre Karte hier undhier (für ältere Karten) CUDA-kompatibel ist. Ihre GPU-Karte Compute-Funktion (CC) muss 3.0 oder mehr sein.
Wenn Sie über die erforderliche Karte verfügen, installieren Sie den neuesten Treiber:
Wählen Sie Ihre Karte aus, und laden Sie das Treiberpaket hier herunter (in der Regel als
.run
Datei verfügbar)Wenn Ihr X-Windows-Manager ausgeführt wird, schlägt die Treiberinstallation wahrscheinlich fehl. Öffnen Sie eine Remote-Terminalsitzung auf Ihrem Computer, und beenden Sie den X-Windows-Manager. Weitere Informationen finden Sie in ihrer Plattformdokumentation für die genauen Befehle.
Beispiel: Verwenden Sie für Ubuntu den folgenden Befehl (vorausgesetztlightdm
, sie sind Ihr X Windows Manager):
sudo stop lightdm
- Installieren Sie den Treiber wie im folgenden Beispiel (beachten Sie, dass sich der Dateiname möglicherweise für Ihr System unterscheidet):
sudo chmod +x ./NVIDIA-Linux-x86_64-384.111.run
sudo ./NVIDIA-Linux-x86_64-384.111.run
Es wird empfohlen, die Standardinstallationsoptionen zu akzeptieren.
Beachten Sie, dass sich das Treiberinstallationsprogramm möglicherweise über den Nouveau-Kerneltreiber beschweren kann. Weitere Informationen zum Deaktivieren finden Sie in ihrer Plattformdokumentation. Für Ubuntu können Sie diese Anleitungen verwenden.
- Wenn sie während der obigen Schritte beendet wurden, starten Sie X Windows Manager. Weitere Informationen finden Sie in ihrer Plattformdokumentation für die genauen Befehle.
Beispiel: Verwenden Sie für Ubuntu den folgenden Befehl (im Fall von lightdm
X Windows Manager):
sudo start lightdm
CUDA 9
Im folgenden Verfahren wird erläutert, wie Sie CUDA mithilfe der .run
Dateiverteilung installieren. Sie können auch die Installation von RPM
Paketen verwendenDEB
. Sie finden das Paket für Ihr System auf der NVIDIA CUDA 9.0 Downloadseite und Installationsanweisungen in der CUDA Online-Dokumentation.
Laden Sie das NVIDIA CUDA 9.0 Toolkit herunter und installieren Sie sie:
Suchen Sie die
.run
Datei für Ihre Plattform hier , und laden Sie sie herunter.Wenn Ihr X-Windows-Manager ausgeführt wird, schlägt die Installation wahrscheinlich fehl. Öffnen Sie eine Remote-Terminalsitzung auf Ihrem Computer, und beenden Sie den X-Windows-Manager. Weitere Informationen finden Sie in ihrer Plattformdokumentation für die genauen Befehle.
Beispiel: Für Ubuntu verwenden Sie den folgenden Befehl (im Falle ihres lightdm
X Windows-Managers):
sudo stop lightdm
- Installieren Sie das CUDA 9.0 Toolkit (beachten Sie, dass sich der
.run
Dateiname möglicherweise für Ihr System unterscheidet):
chmod +x ./cuda_9.0.176_384.81_linux.run
sudo ./cuda_9.0.176_384.81_linux.run
Wenn Sie vom Installationsprogramm aufgefordert werden:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit:
Wählen Sie aus no
, ob Sie den neuesten Treiber bereits installiert haben, indem Sie die Schritte im vorherigen Abschnitt ausführen. Wenn Sie dies nicht getan haben, wählen Sie yes
aus, aber es wird dringend empfohlen , nach der Installation des CUDA-Toolkits auf den neuesten Treiber zu aktualisieren.
Wenn Sie die Treiberinstallation vom CUDA 9.0-Paket abgelehnt haben, erhalten Sie die folgende Warnung am Ende der 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
Ignorieren Sie diese Warnung.
Wenn sie während der obigen Schritte beendet wurden, starten Sie X Windows Manager. Weitere Informationen finden Sie in ihrer Plattformdokumentation für genaue Befehle.
Beispiel: Für Ubuntu verwenden Sie den folgenden Befehl (im Falle ihres lightdm
X-Windows-Managers):
sudo start lightdm
Fügen Sie der aktuellen Sitzung und Ihrem .bashrc
Profil die folgende Umgebungsvariable hinzu (wenn Sie die Standardpfade während der CUDA-Installation geändert haben, ändern Sie die folgenden Werte entsprechend):
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
Der nächste Schritt ist optional. Sie können weiter zum nächsten Abschnitt springen.
OPTIONAL. Überprüfen der CUDA 9.0-Installation
Sie können Ihre CUDA-Installation überprüfen, indem Sie die CUDA-Beispiele kompilieren (wir gehen davon aus, dass die Standardpfade während der CUDA-Installation verwendet wurden). Beachten Sie, dass es sich bei der Erstellung aller Beispiele um einen langen Vorgang handelt:
cd ~/NVIDIA_CUDA-9.0_Samples/
make
Nach dem erfolgreichen Build-Aufrufprogramm deviceQuery
:
~/NVIDIA_CUDA-9.0_Samples/1_Utilities/deviceQuery/deviceQuery
Wenn alles gut funktioniert, sollten Sie eine Ausgabe wie die folgende erhalten:
./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
GPU-Bereitstellungskit
Ab CUDA Version 8 ist das GPU Deployment Kit Teil des CUDA-Pakets und muss nicht mehr separat installiert werden.
cuDNN
Installieren Sie NVIDIA CUDA Deep Neural Network Library (cuDNN).
Wichtig
Wenn Sie cuDNN zuvor für eine ältere Version installiert haben, stellen Sie sicher, dass Sie ein Upgrade auf die kompatible CUDA 9.0-Version durchführen.
Wichtig
Installieren Sie cuDNN mithilfe des genauen Versions- und Zielpfads wie unten angegeben. Dies ist erforderlich, da es vom CNTK Buildkonfigurationsprogramm erwartet wird.
- Verwenden Sie die folgenden Befehle:
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
OPTIONAL. NCCL
Die NCCL-Bibliothek von NVIDIA bietet optimierte Grundtypen für die kollektive Multi-GPU-Kommunikation unter Linux. CNTK können diese beschleunigten Grundtypen für parallele Aufträge nutzen, die auf einem einzigen Host ausgeführt werden (vgl. hier für eine Einführung in parallele Schulungen mit CNTK).
Bitte folgen Sie den Anweisungen hier , um die NVIDIA NCCL-Bibliothek herunterzuladen.
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
Verwenden Sie dann die option CNTK konfigurieren--with-nccl=<path>
, um das Erstellen mit NVIDIA NCCL zu aktivieren.
Wenn NCCL beispielsweise in anderen Ordnern als dem Standardordner /usr
installiert ist, verwenden Sie configure --with-nccl=<nccl install folder>
(plus zusätzliche Optionen), um mit NVIDIA NCCL-Unterstützung zu erstellen.
Hinweis
Derzeit ist die Unterstützung von CNTK für NVIDIA NCCL auf daten parallele SGD mit 32/64 Farbverlaufsbits beschränkt, wobei die CNTK Binärdatei verwendet wird. Die Unterstützung zusätzlicher Parallelisierungsmethoden und CNTK v2 wird zukünftig hinzugefügt. Die offizielle Version von CNTK ist mit NCCL aktiviert. Alle Linux Python-Räder enthalten bereits NCCL-Binärdatei. Für Brainscript-Benutzer unter Linux muss NCCL installiert werden. Wenn der Benutzer NCCL lieber nicht verwenden möchte, erstellen Sie CNTK aus der Quelle. Beachten Sie, dass die Konfiguration ncCL automatisch erkennt, die unter /usr installiert ist. Deinstallieren Sie daher NCCL vor dem Build.
CUB
Wenn Sie CNTK für Python installieren, können Sie zum nächsten Abschnitt springen. Andernfalls fahren Sie weiter fort.
Rufen Sie NVIDIA CUB mit den folgenden Befehlen ab und installieren Sie sie.
Wichtig
Installieren Sie NVIDIA CUB mithilfe der genauen Version und des Zielpfads wie unten angegeben. Dies ist erforderlich, da es vom CNTK Buildkonfigurationsprogramm erwartet wird.
Verwenden Sie die folgenden Befehle:
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