UbuntuでのGPUディープラーニング環境の構築【Ubuntu 18.04 LTS対応】:機械学習&ディープラーニング環境構築入門(2/3 ページ)
GPUを活用したTensorFlow/PyTorch/Chainerなどによるディープラーニングを実践するための環境をUbuntu上に構築する際の選択ポイントと手順を説明する。
2. NVIDIA GPU環境の準備
NVIDIA GPUを使用するには、まずはそのドライバと開発環境であるNVIDIA CUDA Toolkit(単にCUDAとも表現される)をインストールする必要がある。また、ディープラーニング環境を構築するためには、ディープ・ニューラル・ネットワーク(DNN)ライブラリのcuDNNをインストールする必要がある。さらに必要に応じて、GPUが使えるDockerであるnvidia-dockerのインストールもこのタイミングで行うとよい。
この章では、こういったNVIDIA GPU環境の構築方法を説明する。CPUを使う場合は、この章はスキップしてよい。
2.1. NVIDIAドライバとCUDA Toolkitのバージョン要件の確認
ドライバも、CUDA Toolkitも、基本的には最新版をインストールしておけば問題ないはずである。しかし、使いたいディープラーニングのライブラリによっては、CUDA Toolkitのバージョン要件が細かく指定されている可能性があるので、念のために事前に調べるようにしてほしい。
執筆時点(2019年8月時点)でCUDA Toolkitの最新バージョンは10.1であるが、例えばTensorFlowの場合、
- CUDA Toolkit 10.0
- CUDA Toolkit 10.0に対応したNVIDIA GPUドライバ
- cuDNN v7.4.1以降
- CUDA Compute Capability 3.5以上のGPUカード
- CUPTI(CUDA Profiling Tools Interface)(CUDA Toolkitに付属)
というサポート要件が指定されている。
なお、ここで言う「GPUカード」とはNVIDIA製のグラフィックボード(=ビデオカード)のことで、各GPUカードのCompute Capability(計算能力)はこちらの公式ページ(英語)で調べられる。公式ページによると、本稿で使用したGPUカードの「GeForce GTX 1060」は6.1で、「Tesla M60」は5.2となっており、どちらも上記の要件をクリアしている。最新のNVIDIA GPUを使っていればこの要件は問題なくクリアできる可能性が高いので、心配する必要はないだろう。
上記の「CUDA Toolkit 10.0」はUbuntu 18.04 LTSと16.04 LTSと14.04 LTSをサポートしている。ちなみに、TensorFlow自体はUbuntu 16.04 LTS以降をサポートしている。
現在使用中のUbuntuバージョン用にCUDA Toolkitの各バージョンが提供されているかは、CUDA Toolkit Archive(英語)から確認するとよい。まず使いたいCUDA Toolkitのバージョン(今回は10.0)を選択して、[Operating System]欄はLinux、[Architecture]欄はx86_64、[Distribution]欄はUbuntuを選択すると、対応するUbuntuバージョンを確認できる(図6)。
2.2. NVIDIAドライバ(=CUDAドライバ)
インストールするCUDA Toolkitのバージョンを決めたら、次にPCに搭載したNVIDIA GPUカードを認識させるためのドライバをインストールする。
対応ドライバは、こちらで検索できる。
- 製品のタイプ: Tesla
- 製品シリーズ: M-Class
- 製品ファミリー: M60
- オペレーティングシステム: Linux 64-bit Ubuntu 18.04 (※「全てのオペレーティング システムを表示する」を選択すると選択肢が増える)
- CUDA Toolkit: 10.0 (※選択した製品によっては表示されない。その場合は選択なしのままでよい)
- 言語: Japanese
上記のような条件を指定して検索したページから、ドライバのDebian用インストーラーパッケージ(.debファイル)をダウンロードする。通常通りにクリックしてダウンロードしてもよいが、本稿ではwgetコマンドを使う方法で説明しよう。まず、検索結果のページにある[ダウンロード]をクリックして、次のページの[ダウンロード](の同意)ボタンリンクを右クリックしてリンクのアドレスをコピーし、リスト2.1のようにコマンドを実行する(※当然ながら、wgetに指定するダウンロードリンクは、各自でコピーしたものに差し替える必要がある)。
$ wget http://jp.download.nvidia.com/tesla/410.104/nvidia-diag-driver-local-repo-ubuntu1804-410.104_1.0-1_amd64.deb \
-O nvidia-driver.deb
このコマンド例ではnvidia-driver.debファイルがダウンロードされる。
それでは、ダウンロードしたdebパッケージからドライバをインストールしよう。リスト2.2のようにコマンドを実行する(※ファイル名は適切なものに差し替えてほしい)。
$ sudo dpkg -i nvidia-driver.deb
……省略……
The public CUDA GPG key does not appear to be installed.
To install the key, run this command:
sudo apt-key add /var/nvidia-diag-driver-local-repo-384.66/7fa2af80.pub
// 上記の指示に従って、次のコマンドも実行
$ sudo apt-key add /var/nvidia-diag-driver-local-repo-410.104/7fa2af80.pub
$ sudo apt -y update
$ sudo apt -y install cuda-drivers
最後に、アップグレード可能なパッケージはアップグレードして、念のため再起動もしておこう(リスト2.3)。
$ sudo apt -y upgrade
$ sudo reboot
以上でNVIDIAドライバのインストールは完了だ。
2.3. NVIDIA GPUの状態確認
これでNVIDIA GPUが認識されて使えるようになったはずだ。さっそくリスト2.4のコマンドを実行して、正常にNVIDIA GPUカードが認識されているかを確認してみよう。
$ lspci | grep -i nvidia
059e:00:00.0 VGA compatible controller: NVIDIA Corporation GM204GL [Tesla M60] (rev a1)
lspciコマンドとgrepコマンドで、nvidiaという表記(大文字と小文字を区別しない)があるPCIデバイスを絞り込んで表示している。確かにTesla M60というNVIDIA GPUが確認できる。
さらに、NVIDIAのシステム管理インタフェースを意味するnvidia-smiコマンドを実行して、NVIDIA GPUが利用可能な状態かを確認してみよう。リスト2.5のように表示されるはずだ。Driver Version: 410.104という表記がドライバのバージョンになるが、「公式サイト:ドライバ」(日本版。通常版はこちら)を見ると、執筆時点で最新のドライバがインストールされているのが分かる。
$ nvidia-smi
Mon Aug 26 17:41:47 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.104 Driver Version: 410.104 CUDA Version: 10.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla M60 On | 0000059E:00:00.0 Off | Off |
| N/A 39C P0 38W / 150W | 0MiB / 8129MiB | 3% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
ちなみにnvidia-smiコマンドは、GPUの実行状態を確認する際によく使うので、ぜひ覚えてほしい。
2.4. nvidia-docker(OS環境切り替え)[オプション]
nvidia-dockerは、NVIDIAが公式に提供している「NVIDIA GPUをDockerでも有効にするためのDockerエンジンユーティリティ」で、執筆時点でバージョン2.1.1がリリースされている。
前述したように、nvidia-dockerを使うと、DockerコンテナごとにUbuntuのバージョンを切り替えられるようになる。TensorFlow/PyTorch/Chainerなど、ディープラーニングのライブラリは多数あり、必要に応じて使い分けが必要になる可能性があるが、その場合に、大本(おおもと)のOSレベルで切り替えられるようになる。Dockerコンテナは非常に素早く起動し、作成・利用・削除も手軽であることから、1つのライブラリしか使わないと決めている人でなければ、ここでインストールするとよい。もちろん後からインストールすることも可能なので、必要になったらインストールするということでも構わない。
なお、「複数のディープラーニングのライブラリを使い分けるのに、なぜ環境を切り替える必要があるのか」と思った人もいるかもしれない。これは、各ディープ・ラーニング・ライブラリの要件(主にcuDNNライブラリやPythonなどの対応バージョン)が異なっているからである。全てのライブラリ要件を満たす環境を構築するのは、1つのライブラリの要件を満たす環境を構築するのに比べて大変であり、実際に複数ライブラリが動く環境が作れたとしても、久しぶりに別のライブラリを動かしてみたら、以前は動作していたライブラリが動作しなくなっていたという状況が起こりかねない。このような問題に対処し続けるよりは、必要に応じてDockerコンテナでまっさらな環境を新規構築して、必要なくなったら捨てるというやり方の方が気軽で健全である。
というわけで筆者としては、多少のオーバーヘッドはあるかもしれないが、nvidia-dockerの使用をお勧めする。
2.4.1. nvidia-dockerを使う場合のシステム構成
nvidia-dockerによるシステム構成は、図7に示すようになる。
- サーバマシン上にNVIDIA GPUs(※複数搭載可能なためsが付与されている)が搭載され、その上にホストOS(Ubuntu)が存在する
- ホストOSの上にはCUDAドライバ(=本稿ではNVIDIAドライバと表現)があり、その上にDockerエンジンがある
- nvidia-dockerでコンテナOS(Ubuntu)を実行する際に、CUDA Toolkitを含めて起動することができる(詳細後述)。その上で任意のアプリケーションを実行する。このようなコンテナは1〜N個と複数作成できる
それでは、nvidia-dockerをインストールし、コンテナを1つ作って起動してみよう。
2.4.2. Docker
まずはDocker本体のインストールが必要である。本稿ではDocker CE(Community Edition、コミュニティー版)をインストールした。利用要件やインストール方法は、公式ドキュメント(日本語)を参照してほしい。ここでは参考までにどのようなコマンドを実行したのかを、リスト2.6に提示しておこう。
// パッケージインストール前に念のため、apt用リポジトリをアップデート
$ sudo apt update
// 「HTTPS越しにリポジトリを使うためのapt」を有効にするパッケージをインストール
$ sudo apt -y install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
// Dockerの公式GPG鍵を追加:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo apt-key add -
// 鍵の指紋(fingerprint)が「9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88」かを、指紋の最後の8文字を検索することによって検証する
$ sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ 不明 ] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
// stable(安定版)リポジトリをセットアップする。「amd64」は、x86_64(=64 bitのARMv8)のこと(「uname -m」コマンドを実行すると、「x86_64」と表示される)。他には「armhf」(=32 bitのARMv7、Raspberry Piなど)」や「s390x」(=IBM z Systems)がある。「lsb_release -cs」コマンドは「bionic」(参照:前掲の脚注*3)となる。
$ sudo add-apt-repository -y \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
// Dockerの最新版をインストール
$ sudo apt update
$ sudo apt -y install docker-ce
// インストールされたDockerのバージョンを確認
$ sudo docker version
Client: Docker Engine - Community
Version: 19.03.1
API version: 1.40
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:21:05 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.1
API version: 1.40 (minimum version 1.12)
……省略……
// 「hello-world」イメージを実行することによって、Docker CEが正常にインストールされたかを検証
$ sudo docker run hello-world
……省略……
Hello from Docker!
This message shows that your installation appears to be working correctly.
……省略……
// dockerグループにユーザーを追加してsudoなしでも実行できるようにする(ここでは「既に存在します」となっているが、念のため実行している)
$ sudo groupadd docker
groupadd: グループ 'docker' は既に存在します
$ sudo gpasswd -a $USER docker
ユーザー <現在のユーザー名> をグループ docker に追加
$ newgrp docker
2.4.3. nvidia-docker
続いて、NVIDIAが提供するnvidia-dockerをインストールする。要件などの詳細は、公式ドキュメント(英語)を参照してほしいが、本稿の内容でインストールしてきたのであれば要件はクリアしているはずなので、あとはリスト2.7のコマンドを実行すればよい。
// Ubuntuディストリビューション用のnvidia-dockerリポジトリを構成する
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
sudo apt-key add -
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
$ sudo apt update
// nvidia-container-toolkitパッケージをインストール
$ sudo apt-get install -y nvidia-container-toolkit
// 最後にOSを再起動して、OS全体をリセットしておこう
$ sudo reboot
以上でnvidia-dockerのインストールは完了だ。
2.4.4. Dockerコンテナ上でのGPU状態の確認
さっそく、NVIDIAが提供するDockerイメージをrunしてGPU付きコンテナを起動し、コンテナ上にある任意のコマンドを実行してみよう(リスト2.8)。
// Dockerコンテナ上でGPUが利用可能かを確認するためにnvidia-smiコマンドを実行
$ docker run --gpus all --rm nvidia/cuda nvidia-smi
Mon Aug 26 18:30:28 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.104 Driver Version: 410.104 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla M60 On | 0000059E:00:00.0 Off | Off |
| N/A 38C P0 38W / 150W | 0MiB / 8129MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
// CUDA Toolkit 最新バージョンのイメージでコンテナ上のコマンドをテスト実行
$ docker run --gpus all --rm nvidia/cuda nvcc --version
……省略……
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Apr_24_19:10:27_PDT_2019
Cuda compilation tools, release 10.1, V10.1.168
// CUDA Toolkit 10.0+cuDNN 7のイメージでコンテナ上のコマンドをテスト実行
$ docker run --gpus all --rm nvidia/cuda:10.0-cudnn7-devel nvcc --version
……省略……
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130
リスト2.8を見ると分かるように、Dockerコンテナ上でGPUが認識されていることが確認できた。
docker runコマンドに指定されている各引数には、次の意味がある。
- —gpus allオプション: コンテナで使用する対象のGPU。ここではall(つまり全てのGPU)が指定されている。Docker 19.03以降でサポートされているオプションなので、注意してほしい(※ちなみに2019年8月時点ではdocker-composeがこのオプションにまだ対応していない問題がある。いずれ対応すると思われるが、当面はこちらの記事を参考に対処してほしい)
- --rmオプション: コンテナ終了時にそれを自動的に削除するモード。コマンドをテスト実行したいときに使いやすい
- nvidia/cudaイメージ: Dockerイメージ。ここではNVIDIA CUDA Toolkitの最新(latest)バージョンがインストール済みのDockerイメージが指定されている
- nvcc --versionコマンド: NVIDIA CUDAコンパイラードライバのバージョン情報を出力するために、--versionコマンドライン引数を付けてnvccコマンドを実行している
3つ目のコマンド実行では、nvidia/cudaではなく、nvidia/cuda:10.0-cudnn7-develというイメージが指定されている。これは、CUDA Toolkit 10.0+cuDNNライブラリ7(正確には7.6.2.24)+CUDA開発環境(devel)がインストール済みのDockerイメージであることを意味する。このように、NVIDIAはnvidia-docker用に各バージョンがインストール済みのDockerイメージを提供しており、後述するCUDA Toolkit 10.0やcuDNNライブラリはインストールしなくてもすぐに実行できる状態が整っている。どのようなイメージがあるかは、次のリンク先を参照してほしい。
nvidia/cudaリポジトリでは、下記の3つのフレーバーのDockerイメージが提供されている。
- base: 事前ビルドされたCUDAアプリケーションを展開するための最小構成のイメージ。CUDA Toolkit 9.0以降のみ
- runtime: CUDA toolkitから全ての共有ライブラリを追加したCUDA実行用のイメージ
- devel: 共有ライブラリだけでなくコンパイラーチェーン、デバッグ用ツール、スタティックライブラリなどが追加されたCUDA開発用のイメージ
以上で、nvidia-dockerを利用できる環境が整った。
2.4.5. GPU付きDockerコンテナの実行
上記のnvidia/cuda:10.0-cudnn7-develイメージでGPU付きDockerコンテナを作成して起動すれば、あとはアタッチして使えばよい。この手順を簡単に紹介しよう。
なお、このイメージを使った場合には、CUDA ToolkitやcuDNNライブラリのインストールは不要なので、この後の2.5と2.6の手順はスキップしてほしい。2.7の「CUPTI(CUDA Profiling Tools Interface)のインストール」からの手順は必要になる。
$ docker run --gpus all --name mycontainer -d -it -p 7777:8888 nvidia/cuda:10.0-cudnn7-devel bash
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
654cc0cf01e2 nvidia/cuda:10.0-cudnn7-devel "bash" 15 seconds ago Up 12 seconds 0.0.0.0:7777->8888/tcp mycontainer
まずdocker runコマンドに指定されている各引数のうち、まだ説明していないものには以下がある。
- --name mycontainerオプション: コンテナの名前。ここではmycontainerという名前が指定されている
- -dオプション: デタッチドモードで起動するモード。コンテナがバックグラウンドで実行され続ける。前述の-rmオプションと違い、終了しても削除されない
- -itオプション: -i(=--interactive)と-t(=--tty)の2つのオプションが合体している。これにより、ターミナル上でコンテナの標準入出力ができるようになる
- -p 7777:8888オプション: 外部からアクセスされるポート番号(この例では7777)とコンテナ側のポート番号(この例では8888)を指定。コンテナ側のJupyter Notebookにホスト側からアクセスしたりするときに使用する
コンテナが作成できたので、あとはこれにアタッチする(リスト2.10)。コンテナ側のbashシェルセッションに入るので、そこで以降の各種インストール処理を実行すればよい(※この例ではrootユーザーによるコマンド実行になるので、sudoが不要になる点に注意してほしい)。
$ docker attach mycontainer
root@<コンテナID>:/#
root@<コンテナID>:/# apt update // aptパッケージのアップデート。sudoは不要
root@<コンテナID>:/# apt -y upgrade // 既存パッケージのアップグレード
root@<コンテナID>:/# apt install -y wget // wgetコマンドのインストール
// 必要に応じて、前述のデスクトップ環境のインストールなどを行ってもよい。
※コマンド実行後に何も表示されない場合は、もう一度、[Enter]キーを押してみてほしい。
一連の作業が終わってコンテナ側のbashシェルセッションを抜けるには、[Ctrl]キーを押しながら[P]キーに続けて[Q]キーを押せばよい。
なお、コンテナを終了したい場合や再起動したい場合は、リスト2.11のようにすればよい。
// コンテナを終了する
$ docker stop mycontainer
// コンテナを起動する
$ docker start mycontainer
以上、必要最小限のコマンドだけ紹介したが、機会があれば別記事でnvidia-dockerを使う方法をより詳しく説明したい。
基本的にnvidia-dockerは必要になってから使えばよいので、取りあえずコンテナは終了して、ホスト側に下記の2.5以降のインストール手順を実行してほしい。
2.5. CUDA Toolkit(開発環境)
本稿ではTensorFlowの要件に合わせてCUDA Toolkit 10.0をインストールする。
まずはCUDA Toolkit 10.0のベースインストーラー(本稿の例ではcuda-repo-ubuntu1704-9-0-local_8.0.176-1_amd64.deb)をダウンロードする。これには、CUDA Toolkit Archiveから前掲の図6の続きで、[Distribution]欄の次の[Installer Type]欄はdeb (local)を選択する。これにより、図8のように[Download Installers for Linux Ubuntu 18.04 x86_64]枠が表示される。この枠に、CUDA Toolkitのインストール方法(英語)が記載されているので、これに従ってインストールすればよい。
参考までに、本稿では[Base Installer]欄にある[Download]リンクを右クリックしてリンクのアドレスをコピーして、リスト2.12のようにコマンドを実行した(※当然ながら、wgetに指定するダウンロードリンクは、各自でコピーしたものに差し替える必要がある)。
$ wget https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64 \
-O cuda-toolkit.deb
このコマンド例ではcuda-toolkit.debという名前のファイル(=Debian用のインストーラーパッケージで、通常は.debという拡張子が付く)がダウンロードされる。念のため、ファイルが壊れていないかをチェックサムで確認しておくとよい。そのためのコマンドはリスト2.13のようになる。
$ md5sum cuda-toolkit.deb
816f80220e13a77fb6bb05620114691d cuda-toolkit.deb
816f80220e13a77fb6bb05620114691dがチェックサムの値になるが、図6に示したインストール方法の説明の中にある[Installer Checksums]リンクからファイルに対する正常なチェックサム値を参照して、両者が一致するか確認すればよい。
それでは、ダウンロードしたdebパッケージからCUDA Toolkitをインストールしよう。リスト2.14のようにコマンドを実行する。
$ sudo dpkg -i cuda-toolkit.deb
……省略……
cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48 (1.0-1) を設定しています ...
$ cuda_toolkit_version="10-0-local-10.0.130-410.48"
$ sudo apt-key add /var/cuda-repo-${cuda_toolkit_version}/7fa2af80.pub
$ sudo apt update
$ sudo apt -y install cuda
今回の例では[Base Installer]欄の下[Patch 1 (Released May 10, 2019)]という記載があり、パッチもインストールできる。このインストール方法もここまでの説明と同様なので、リスト2.15にコマンド例だけ示す。
$ wget http://developer.download.nvidia.com/compute/cuda/10.0/Prod/patches/1/cuda-repo-ubuntu1804-10-0-local-nvjpeg-update-1_1.0-1_amd64.deb \
-O cuda-patch1.deb
$ md5sum cuda-patch1.deb
00cf7362d220e73e77543de4d935ebb1 cuda-patch1.deb
$ sudo dpkg -i cuda-patch1.deb
……省略……
cuda-repo-ubuntu1804-10-0-local-nvjpeg-update-1 (1.0-1) を設定しています ...
$ cuda_toolkit_version="10-0-local-nvjpeg-update-1"
$ sudo apt-key add /var/cuda-repo-${cuda_toolkit_version}/7fa2af80.pub
$ sudo apt update
$ sudo apt -y upgrade
$ sudo reboot
以上でCUDA Toolkit(開発環境)のインストールは完了だ。
2.6. cuDNN(ディープラーニング用ライブラリ)
cuDNNは、CUDAを活用するDeep Neural Network(DNN)開発ライブラリである。具体的な内容は公式サイト(英語)を、インストール手順は公式ガイド(英語)を参照してほしい。
ここでは参考までにどのようなコマンドを実行したのかを、リスト2.16に提示しておこう。
なお、cuDNNインストーラーの.debファイルをダウンロードするためには認証が必要になるので注意してほしい。このため、wgetコマンドではなく、公式のcuDNN Downloadページ(英語)をデスクトップ環境のブラウザで開いてから(※メンバーシップにJoinしてからLoginする必要あり)、[Download cuDNN v7.6.3 (August 23, 2019), for CUDA 10.0]欄にある下記の3つのファイルをダウンロードしてほしい(【〜】内に記述したのは、リネームした後のファイル名)。
- 「cuDNN v7.6.3 Runtime Library for Ubuntu 18.04 (Deb)」【cudnn7.deb】
- 「cuDNN v7.6.3 Developer Library for Ubuntu 18.04 (Deb)」【cudnn7-dev.deb】
- 「cuDNN v7.6.3 Code Samples and User Guide for Ubuntu 18.04 (Deb)」【cudnn7-doc.deb】
// 3つのdebパッケージをインストール
$ sudo dpkg -i cudnn7.deb
$ sudo dpkg -i cudnn7-dev.deb
$ sudo dpkg -i cudnn7-doc.deb
// ホームディレクトリにサンプルコードをコピー
$ mkdir ~/samples
$ cp -r /usr/src/cudnn_samples_v7 ~/samples
// cuDNNライブラリを利用するプログラムをビルド
$ cd ~/samples/cudnn_samples_v7/mnistCUDNN
$ make clean && make
// cuDNNライブラリが利用できるかテスト
$ ./mnistCUDNN
……省略……
Test passed!
2.7. CUPTI(CUDA Profiling Tools Interface)
CUPTI(CUDA Profile Tools Interface)は、GPU内の挙動を確認(プロファイリング)するのに役立つ。前述の通り、TensorFlowなどではインストール要件となっているが、CUPTIはCUDA Toolkitに同梱されている。具体的には/usr/local/cuda/extras/CUPTI/ディレクトリの配下にインストール済みである。CUPTIライブラリの実体は、その中のlib64ディレクトリにあるので、そのパスを環境変数LD_LIBRARY_PATHに追加しておこう(リスト2.17)。
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64
以上でGPU利用環境が整った。次はディープラーニングの開発環境を構築していく。
Copyright© Digital Advantage Corp. All Rights Reserved.
![[CUDA Toolkit 10.0]をクリック](https://image.itmedia.co.jp/ait/articles/1908/29/di-06-1.gif)


