0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

UbuntuにGPU環境を構築する

Last updated at Posted at 2021-08-08

ディープラーニングを始めようと思ったら、処理時間の短縮のためにGPUの使用を考えるべきです。
GPUを使うためには、GPU(NVIDIA)付きのPCを手に入れて環境を構築する必要があります。

ここでは、フレームワークとしてTensorFlow、Kerasを使う予定で構築していきます。

システム環境

OS:Ubuntu Desktop 18.04.4
GPU:GeForce GTX 1660Ti

NVIDIAドライバーのインストール

セキュアブートの無効化

LinuxカーネルではUEFI(BIOS)でセキュアブートが有効になっていると、NVIDIAのドライバーをロードすることができません。
なので無効化します。

起動中のロゴ画面でF2ボタンを押し続けると、以下のようなUEFI画面になります。
ここでセキュアブートを無効化します。
setup-gpu-1

nouveauの無効化

nouveauと呼ばれるフリーのドライバーがデフォルトでロードされているのですが、これがロードされているとNVIDIAのドライバーと競合する可能性があります。
なので無効化します。

nouveauがロードされているかは以下のコマンドで確認できます。
何かしら出力されていればロードされています。

$ lsmod | grep -i nouveau

以下のコマンドを入力し、/etc/modprobe.d/blacklist-nouveau.confを作成します。

$ sudo vi /etc/modprobe.d/blacklist-nouveau.conf

このファイルには次のように書き込んで保存します。

blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0

以下のコマンドでカーネルモジュールを再読み込みし、再起動します。

$ sudo update-initramfs -u

再起動後、再び以下のコマンドを入力し、nouveauがロードされているか確認します。
何も出力されなければ、nouveauの無効化は完了です。

$ lsmod | grep -i nouveau

リポジトリの追加

通常のリポジトリには最新のドライバーが含まれていないので、以下のコマンドでリポジトリを追加します。

$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update

インストール

まず、以下のコマンドでNVIDIAドライバーのバージョンを確認します。
僕の環境では「nvidia-driver-440」でした。

$ ubuntu-drivers devices

以下のコマンドでNVIDIAのドライバーをインストールします。

$ sudo apt install nvidia-driver-440

インストールが完了したら再起動して、さらに以下のコマンドを入力します。

$ nvidia-smi

以下のような結果が表示されれば成功です。
setup-gpu-2

各種バージョン確認

TensorFlowは、CUDA、cuDNNのバージョンに依存しますので、事前にインストールするバージョンを確認しておきます。

まず以下のサイトからインストールするCUDA、cuDNNのバージョンを確認します。
「テスト済みのビルド構成」のセクションを確認します。
https://www.tensorflow.org/install/source

今回はTensorFlow2.1.0をインストールしていきたいと考えていますので、対応するバージョンはCUDA10.1、cuDNN7.6ということがわかります。

次に以下のサイトからNVIDIAドライバーとCUDAのバージョンに問題ないかどうか確認します。
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

僕の環境ではNVIDIAドライバーはバージョン440なので、問題ないことが確認できました。

CUDAのインストール

以下のサイトからバージョン10.1の中で一番新しいものを選び、端末にダウンロードします。
ここではcuda-repo-ubuntu1804_10.1.243-1_amd64.debを選びました。
http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/

以下のコマンドを入力し、インストールを行います。

$ sudo dpkg -i cuda-repo-ubuntu1840_10.1.243-1_amd64.deb
$ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/
$ ubuntu1804/x86_64/7fa2af80.pub
$ sudo apt update
$ sudo apt install cuda-toolkit-10-1

インストール後、環境設定を行います。

$ sudo vim ~/.bashrc
.bashrc
export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

再起動後、以下のコマンドを入力してバージョン等が表示されれば、CUDAのインストールに成功しています。

$ nvcc -V
setup-gpu-3

cuDNNのインストール

以下のサイトからdebファイルをダウンロードします。

種類は 以下の3つです。

  • cuDNN Runtime Library for Ubuntu 18.04 (Deb)
  • cuDNN Developer Library for Ubuntu 18.04 (Deb)
  • cuDNN Code Samples and User Guide for Ubuntu 18.04 (Deb)

なお事前に無料のアカウント登録が必要です。
https://developer.nvidia.com/rdp/cudnn-download

以下のコマンドでインストールを行います。

$ sudo dpkg -i libcudnn7_7.6.5.32-1+cuda10.1_amd64.deb
$ sudo dpkg -i libcudnn7-dev_7.6.5.32-1+cuda10.1_amd64.deb
$ sudo dpkg -i libcudnn7-doc_7.6.5.32-1+cuda10.1_amd64.deb

以下のコマンドでインストールテストを行い、「Test passed!」と表示されることを確認します。

$ cp -r /usr/src/cudnn_samples_v7/ $HOME
$ cd $HOME/cudnn_samples_v7/mnistCUDNNN
$ make clean && make
$ ./mnistCUDNAA
setup-gpu-4

TensorFlowのインストール

TensorFlowをインストールしていきます。
なおPythonのバージョンは3.6.9です。

python3-dev、python3-pip、python3-venvをインストールします。

python3-dev、python3-pipは以下のサイトに指定があったので、インストールします。
https://www.tensorflow.org/install/pip?hl=ja

python3-venvは仮想環境の構築のために、インストールします。

$ sudo apt install python3-venv python3-pip python3-venv

仮想環境を有効化します。

$ python3 -m venv venv36dl
$ . venv36dl/bin/activate

pipをアップグレードしておきます。

$ pip install --upgrade pip

バージョンを指定し、インストールします。

$ pip install tensorflow==2.1.0

以下のコマンドでインストールテストを行います。

$ python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
setup-gpu-5

またTensorFlowがGPUを認識しているかをPythonインタプリタで確認します。
GPUの表記があれば認識しています。

$ python
インタプリタ
>>> from tensorflow.python.client import device_lib
>>> device_lib.list_local_devices()
setup-gpu-6

補足

TensorFlowについてですが、バージョン1.1.5以前は、tensorflow(CPU用)とtensorflow-gpu(GPU用)に分かれていましたが、バージョン1.1.5より新しいものはtensorflowパッケージでGPUサポートも含まれています。
https://www.tensorflow.org/install/gpu?hl=ja

KerasはTensorFlowとは独立したパッケージとTensorFlowに統合されたパッケージの2種類あります。
ですが、最近開発者がTwitter上で「Keras=tf.keras」で発言していることもあり、今後はTensorFlowに統合されたパッケージが主流になっていくだろうとのことです。
https://www.atmarkit.co.jp/ait/articles/2005/13/news017.html

僕もTensorFlowに統合されたパッケージを使っていく予定です。

参考サイト

参考文献

TensorFlowではじめるDeepLearning実装入門

PythonとKerasによるディープラーニング

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?