在 Linux 上設定 GPU 特定套件
本節概述您需要設定的套件,以便CNTK利用 NVIDIA GPU。
檢查 GPU 相容性並取得最新的驅動程式
您需要CUDA相容的圖形卡,才能使用 CNTK GPU 功能。 您可以在這裡檢查卡片 是否與 CUDA 相容, 在這裡 (較舊的卡片) 。 您的 GPU 記憶卡 計算功能 (CC) 必須是 3.0 或更多。
如果您有必要的卡片,請安裝最新的驅動程式:
選取您的卡片並 從這裡 下載驅動程式套件, (通常可作為
.run
檔案)如果您的 X Windows 管理員正在執行,驅動程式安裝可能會失敗。 開啟電腦的遠端終端機機會話,並停止 X Windows 管理員。 如需確切的命令,請參閱您的平臺檔。
範例:針對 Ubuntu,請使用下列命令 (假設 lightdm
您的 X Windows 管理員) :
sudo stop lightdm
- 如下列範例所示安裝驅動程式, (請注意,您的系統檔案名可能不同) :
sudo chmod +x ./NVIDIA-Linux-x86_64-384.111.run
sudo ./NVIDIA-Linux-x86_64-384.111.run
我們建議接受預設安裝選項
請注意,驅動程式安裝程式可能會抱怨 nouveau 核心驅動程式。 如需停用平臺檔的指示,請參閱您的平臺檔。 針對 Ubuntu,您可以使用 這組指示。
- 如果在上述步驟期間停止,請啟動 X Windows 管理員。 如需確切的命令,請參閱您的平臺檔。
範例:若為 Ubuntu,請使用下列命令 (作為 lightdm
X Windows 管理員) :
sudo start lightdm
CUDA 9
下列程式說明如何使用檔案散發來安裝 CUDA .run
。 您也可以使用 DEB
或 RPM
套件安裝。 您可以在CUDA Online 檔中找到您系統的套件 NVIDIA CUDA 9.0 下載頁面和安裝指示。
下載並安裝 NVIDIA CUDA 9.0 工具組:
.run
在這裡尋找您平臺的檔案,並加以下載。如果您的 X Windows管理員正在執行,安裝可能會失敗。 開啟電腦的遠端終端機機會話,並停止 X Windows 管理員。 如需確切的命令,請參閱您的平臺檔。
範例:針對 Ubuntu,請使用下列命令 (作為 lightdm
X Windows 管理員) :
sudo stop lightdm
- 安裝 CUDA 9.0 Toolkit (請注意,
.run
系統) 的檔案名可能不同:
chmod +x ./cuda_9.0.176_384.81_linux.run
sudo ./cuda_9.0.176_384.81_linux.run
安裝程式出現提示時:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit:
執行上一節中的步驟,選取 no
您是否已安裝最新的驅動程式。 如果您尚未這麼做,請選取 yes
,但 強烈建議 在安裝 CUDA 工具組之後更新至最新的驅動程式。
如果您從 CUDA 9.0 套件拒絕驅動程式安裝,則會在安裝結束時收到下列警告:
***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
忽略這個警告。
如果在上述步驟期間停止,請啟動 X Windows 管理員。 如需確切的命令,請參閱您的平臺檔。
範例:針對 Ubuntu,請使用下列命令 (作為 lightdm
X Windows 管理員) :
sudo start lightdm
如果您在 CUDA 安裝期間修改了預設路徑,請將下列環境變數新增至目前的會話和 .bashrc
設定檔 (,請據以變更下列值) :
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
下一個步驟是選擇性的。 您可以進一步跳到 下一節。
選擇性。 驗證 CUDA 9.0 安裝
您可以藉由編譯 CUDA 範例來確認 CUDA 安裝, (我們假設 CUDA 安裝期間使用了預設路徑) 。 請注意,建置所有範例是冗長的作業:
cd ~/NVIDIA_CUDA-9.0_Samples/
make
成功建置叫 deviceQuery
用公用程式之後:
~/NVIDIA_CUDA-9.0_Samples/1_Utilities/deviceQuery/deviceQuery
如果一切正常運作,您應該會收到類似以下的輸出:
./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 部署套件
從 CUDA 第 8 版開始,GPU 部署套件是 CUDA 套件的一部分,不再需要個別安裝。
cuDNN
安裝 NVIDIA CUDA 深度類神經網路程式庫 (cuDNN) 。
重要
如果您先前為舊版安裝 cuDNN,請確定您升級至 CUDA 9.0 相容版本
重要
使用下面指定的確切版本和目標路徑來安裝 cuDNN。 這是必要的,因為它必須是CNTK組建組態程式。
- 使用下列命令:
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
選擇性。 NCCL
NVIDIA 的 NCCL 程式庫 針對 Linux 上的共同多 GPU 通訊提供優化的基本類型。 CNTK可以利用這些加速的基本類型,在單一主機上執行的平行作業 (cf。這裡提供使用 CNTK) 的平行定型簡介。
請遵循 這裡的 指示來下載 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
然後,使用 [CNTK設定] 選項 --with-nccl=<path>
來啟用使用 NVIDIA NCCL 進行建置。
例如,如果 NCCL 安裝在預設資料夾以外的資料夾中 /usr
,請使用 configure --with-nccl=<nccl install folder>
(加上其他選項,) 使用 NVIDIA NCCL 支援進行建置。
注意
目前,CNTK NVIDIA NCCL 的支援僅限於具有 32/64 漸層位的資料平行 SGD,使用 CNTK 二進位檔。 未來將新增其他平行處理方法和CNTK v2 的支援。 CNTK的官方版本是啟用 NCCL 所建置。 所有 Linux Python 方向盤都已經包含 NCCL 二進位檔。 針對 Linux 上的 Brainscript 使用者,必須安裝 NCCL。 如果使用者偏好不使用 NCCL,請從來源建置CNTK。 請注意,設定會自動偵測在 /usr 下安裝的 NCCL,因此請在建置之前卸載 NCCL。
CUB
如果您要安裝適用于 Python 的CNTK,您可以跳到下一節。 否則,請繼續進行。
使用下列命令取得並安裝 NVIDIA CUB。
重要
使用下面指定的確切版本和目標路徑來安裝 NVIDIA CUB。 這是必要的,因為它必須是CNTK組建組態程式。
使用下列命令:
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