共用方式為


在 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 。 您也可以使用 DEBRPM 套件安裝。 您可以在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