目次 このページのソースコードを表示

フローチャートで進む, NVIDIA GPU ドライバ, CUDA, cuDNN, tensorflow のインストール方法

公開日:
更新日:

公式リファレンスを参考しつつ, Ubuntu 上にNVIDIA GPU ドライバ, CUDA, cuDNNを入れて, tensorflow をGPUで動かす方法を, フローチャートで進めます.

はじめに

tensorflow で, NVIDIA GPU での計算を有効にするためには, 各種ドライバやライブラリが必要です[1]. その際に, tensorflowのバージョンにあった, ライブラリをインストール必要があります[2].

すでに, インターネット上では「Ubuntu にGPUドライバを入れ, tensorflowをGPUで動かす方法」に関する情報がたくさんあります[3][4][5][6][7]が, 載せられているコードが古いもの(tensorflowの更新頻度が高いのも一因)であったり, 覚書やメモのようであったり, 失敗して入れ直すときの手順がまとまっていなかったりと, 整理されていません.

本稿では, ライブラリの更新があっても, 公式のリファレンスをさかのぼって, 手順がわかるように, Ubuntu 上にNVIDIA GPU ドライバや各種ライブラリをインストールし, tensorflowでGPUを使用できる手順をフローチャートのように説明します. また, もし失敗したときの手順も説明します.

環境

筆者の環境は次のとおりです.

Ubuntu

Ubuntu 20.04.1 LTS

GPU

NVIDIA GTX950M

Python環境

pyenv + pipenv

GPUドライバの確認

NVIDIA Driver を入れる前に, すでに入っているか確認します.

Terminal を開いて, 次のコマンドを入力します.

        $ nvidia-smi

→ コマンドが見つからない

ドライバが入っていません.

次の項目ドライバのインストールを行います.

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running."と表示される.

正しく入っていないので, 入れ直します.

GPUドライバ&CUDAのアンインストールを行います.

→ 表が出た

正しく認識しています.

次に, Tensorflowのバーション確認を行います.

GPUドライバ&CUDAのアンインストール

もう一度入れ直すために, 一度消します.

Terminal を開いて, 次のコマンドを入力します.

        $ sudo apt-get purge 'nvidia-*'
        $ sudo apt-get purge 'cuda-*'
apt-get removeapt-get purge の違い

apt-get --helpを実行してみると,

apt-get remove

パッケージを削除する

apt-get purge

設定ファイルまで含めてパッケージを削除する

必要なくなったパッケージを削除します.

        $ sudo apt autoremove

CUDAをインストールしている場合

CUDAをインストールしたときの逆の手順で, ファイルを削除していきます.

例えば, もしあなたが, このようにインストールしたとすると(Installer Type: deb(local) を選択),

            $ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
            $ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
            $ wget https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda-repo-ubuntu2004-11-0-local_11.0.3-450.51.06-1_amd64.deb
            $ sudo dpkg -i cuda-repo-ubuntu2004-11-0-local_11.0.3-450.51.06-1_amd64.deb
            $ sudo apt-key add /var/cuda-repo-ubuntu2004-11-0-local/7fa2af80.pub
            $ sudo apt-get update
            $ sudo apt-get -y install cuda
1~2行目の
            $ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
            $ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
に注目して, /etc/apt/preferences.d/cuda-repository-pin-600 を消しに行きます.

それ以降の処理は, 先のapt-get purgeで消えているはずです[注 1].

一応, パッケージを update & upgrade しておきます.

        $ sudo apt update
        $ sudo apt upgrade
次に, GPUドライバのインストール を行います.

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

GPUドライバのインストール方法は, やりやすいものとして2つあります.

Ubuntuの「ソフトウェアとアップデート」→「追加のドライバ」からインストール

「アクティビティ」から「ソフトウェアとアップデート」を検索します.

「ソフトウェアとアップデート」のタブから「追加のドライバ」を選択します.

「ソフトウェアとアップデート」→「追加のドライバ」
「ソフトウェアとアップデート」→「追加のドライバ」

ドライバを選択して, インストールします.

aptでインストール

aptリポジトリにNVIDIA GPU Driverリポジトリを追加する.

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

インストール推奨Driverを確認

            $ ubuntu-drivers devices

推奨Driverをインストール

            sudo apt install nvidia-driver-450

参考ページ

"Nvidia GPU driverの再インストール方法". Qitta. accessed at 2020-08-19.

→ パスワードの設定を求められた

セキュアブートが有効になっているときに, 表示されます. パスワードを設定し覚えておきます.

なぜ設定するのかも, そこに書いてあると思うので読んでおきましょう[注 2].

再起動します.

→ 青い画面(Perform MOK management)が出た.

セキュアブートが有効なときに表示されます.

おそらく, 選択されている「Continue boot」ではなく, その下にある, 「Enroll MOK」を選択し, 先で設定したパスワードを入力します.

参考ページ

"Ubuntu に NVIDIA のドライバをインストール (Enroll MOK に注意)". Qitta. accessed at 2020-08-19.

→ 正しいパスワードを入れているはずなのに, はじかれる

パスワードに記号が含まれていませんか? 例えば, アンダースコア_.

日本語配列キーボードが英字配列と認識されているかもしれません. アンダースコア_のところを, shift + =(0のとなり)で入力してみてください.

次に, GPUドライバの確認を行います.

Tensorflow のバージョン確認

後の手順で, CUDAのインストールを行いますが, tensorflowのバージョンにあった, CUDA及びcuDNNバージョンを選択する必要があります.

→ Tensorflow が入っていない.

インストールしてください.

pipenvを使っている方は, このようになるでしょう(pipenvの詳しい説明は, 各自調べてください).

            $ pipenv install tensorflow

Tensorflowのバージョンを確認します. 各自のPythonパッケージ管理方法に合わせて確認してください. pipenvの場合, このようになるでしょう.

        $ pipenv graph

バージョン確認後, CUDAのインストールを行います.

CUDAのインストール

CUDAダウンロードページに従って, CUDAをインストールします.

CUDAのバージョンは, テスト済みのビルド構成 に従います.

インストール完了後, cudaのバージョンを確認します.

        cat /usr/local/cuda/version.txt

→ インストールされたバージョンが, 入れようとしたものと異なる.

詳しい原因はわかりませんが,

一度, GPUドライバ&CUDAのアンインストールからもう一度フローチャートを進み, CUDAインストールの最後の手順にあると思われる(今後の更新で無いかもしれない)次のコマンド

            sudo apt-get -y install cuda

の代わりに, 次のコマンドを試します. cuda-10-1のところは, 適宜変えてください(cuda-10-2等).

            sudo apt-get -y install cuda-10-1
参考ページ

"Installing CUDA 10.1 on Ubuntu 20.04". Stephen Gregory. accessed at 2020-08-19.

次に, cuDNNのインストールを行います.

cuDNNのインストール

cuDNNダウンロードページに行きます.

→ ログインを求められた.

cuDNNのダウンロードには, NVIDIAアカウントが必要です. 登録して, ログインしましょう.

CUDA同様に, tensorflowのバージョンに合わせて, cuDNNのバージョンを選択します. (CUDAのバージョンに合わせて, cuDNNを選択してもいいと思います.)

下記の公式リファレンスに従って, cuDNNをダウンロード&インストールします.

あともう少しです!

\(^o^)/

次に, TensorflowがGPUを認識しているか確認します.

TensorflowがGPUを認識しているか確認

各自, パッケージ管理方法に合わせてpythonインタプリタを起動します.

        $ python

次の二行を入力します.

        >>> from tensorflow.python.client import device_lib
        >>> device_lib.list_local_devices()

出力されたメッセージ内に, device_type:GPU があると, 認識しています!

お疲れ様でした.

→ 無い…

注釈

  1. ^ 自信ない… (^^ゞ
  2. ^ そこに方法が書いてあったのに, 読んでなくて時間をとかした.

参考文献

  1. ^ "GPU support". TensorFlow. accessed at 2020-08-19.
  2. ^ "Build from source". TensorFlow. accessed at 2020-08-19.
  3. ^ "GPU付きのTensorflowをUbuntu18.04に入れる". Qitta. accessed at 2020-08-19.
  4. ^ "ubuntu18.04でTensorFlow-gpuを動かす". Qitta. accessed at 2020-08-19.
  5. ^ "Ubuntu18.04にCUDA・cuDNN・tensorflow-gpuをインストールする". Qitta. accessed at 2020-08-19.
  6. ^ "Ubuntu18.04にNVIDIAとCUDAを入れ直すことに". Qitta. accessed at 2020-08-19.
  7. ^ "Ubuntu 18.04 でCUDA, Cudnn, Tensorflow GPU のインストール". CodeLab. accessed at 2020-08-19.
「https://contentsviewer.work/Master/Ubuntu/Install/nvidia-tf/nvidia-tf」から取得