你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 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 Toolkit:
.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 的支持仅限于使用 CNTK 二进制CNTK的 32/64 渐变位的数据并行 SGD。 将来将添加对其他并行化方法和 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