Linux での GPU 固有のパッケージのセットアップ
このセクションでは、CNTKが NVIDIA GPU を利用するためにセットアップする必要があるパッケージについて説明します。
GPU の互換性を確認し、最新のドライバーを取得する
CNTK GPU 機能を使用するには、CUDA 互換のグラフィック カードが必要です。 お使いのカードがCUDAと互換性があるかどうかを確認できます(古いカードの場合)。 GPU カード のコンピューティング機能 (CC) は 3.0 以上である必要があります。
必要なカードがある場合は、最新のドライバーをインストールします。
カードを選択し、 ここから ドライバー パックをダウンロードします (通常はファイルとして
.run
利用可能)X Windows マネージャーが実行されている場合、ドライバーのインストールが失敗する可能性があります。 コンピューターへのリモート ターミナル セッションを開き、X Windows マネージャーを停止します。 正確なコマンドについては、プラットフォームのドキュメントを参照してください。
例: Ubuntu の場合は、次のコマンドを使用します (X Windows マネージャーを想定していますlightdm
)。
sudo stop lightdm
- 次の例のようにドライバーをインストールします (ファイル名がシステムで異なる場合があることに注意してください)。
sudo chmod +x ./NVIDIA-Linux-x86_64-384.111.run
sudo ./NVIDIA-Linux-x86_64-384.111.run
既定のインストール オプションを受け入れることをお勧めします
ドライバーのインストール プログラムは、ヌーボー カーネル ドライバーについて不平を言う可能性があることに注意してください。 無効にする手順については、プラットフォームのドキュメントを参照してください。 Ubuntu の場合は、 この一連の手順を使用できます。
- 上記の手順で停止した場合は、X Windows マネージャーを起動します。 正確なコマンドについては、プラットフォームのドキュメントを参照してください。
例: Ubuntu の場合は、次のコマンドを使用します (X Windows マネージャーの場合lightdm
)。
sudo start lightdm
CUDA 9
以下の手順では、ファイル配布を使用して CUDA をインストールする .run
方法について説明します。 インストールを使用 DEB
したり、パッケージをインストールしたり RPM
することもできます。 システムのパッケージについては、 NVIDIA CUDA 9.0 のダウンロード ページ とインストール手順に 関する CUDA Online ドキュメントを参照してください。
NVIDIA CUDA 9.0 Toolkitをダウンロードしてインストールします。
ここでプラットフォームの
.run
ファイルを見つけてダウンロードします。X Windows マネージャーが実行されている場合、インストールは失敗する可能性があります。 コンピューターへのリモート ターミナル セッションを開き、X Windows マネージャーを停止します。 正確なコマンドについては、プラットフォームのドキュメントを参照してください。
例: Ubuntu の場合は、次のコマンドを使用します (X Windows マネージャーの場合lightdm
)。
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 の場合は、次のコマンドを使用します (X Windows マネージャーの場合lightdm
)。
sudo start lightdm
現在のセッションとプロファイルに次の環境変数を .bashrc
追加します (CUDA のインストール中に既定のパスを変更した場合は、それに応じて以下の値を変更します)。
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 Deployment Kit は 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は、1 つのホストで実行される並列ジョブに対してこれらの高速プリミティブを利用できます (ここでは、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 が既定のフォルダー以外のフォルダーにインストールされている場合は、NVIDIA NCCL サポートを使用してビルドするために (さらに追加のオプションを使用します) を使用configure --with-nccl=<nccl install folder>
します/usr
。
注意
現在、CNTKの NVIDIA NCCL のサポートは、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