フローチャートで進む, 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 remove
と apt-get purge
の違いapt-get --help
を実行してみると,
apt-get remove
パッケージを削除する
apt-get purge
設定ファイルまで含めてパッケージを削除する
必要なくなったパッケージを削除します.
$ sudo apt autoremove
- CUDAをインストールしている場合
CUDAをインストールしたときの逆の手順で, ファイルを削除していきます.
- CUDAダウンロードページ. NVIDIA. accessedd at 2020-08-19.
例えば, もしあなたが, このようにインストールしたとすると(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. accessed at 2020-08-19.
→ Tensorflow が入っていない.
インストールしてください.
- "TensorFlow 2 をインストールする". Tensorflow. accessed at 2020-08-19.
pipenv
を使っている方は, このようになるでしょう(pipenv
の詳しい説明は, 各自調べてください).
$ pipenv install tensorflow
Tensorflowのバージョンを確認します. 各自のPythonパッケージ管理方法に合わせて確認してください. pipenv
の場合, このようになるでしょう.
$ pipenv graph
バージョン確認後, CUDAのインストールを行います.
CUDAのインストール
CUDAダウンロードページに従って, CUDAをインストールします.
- CUDAダウンロードページ. NVIDIA. accessedd at 2020-08-19.
CUDAのバージョンは, テスト済みのビルド構成 に従います.
- "テスト済みのビルド構成". Tensorflow. accessed at 2020-08-19.
インストール完了後, 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 Download". NVIDIA. accessedd at 2020-08-19.
→ ログインを求められた.
cuDNNのダウンロードには, NVIDIAアカウントが必要です. 登録して, ログインしましょう.
CUDA同様に, tensorflowのバージョンに合わせて, cuDNNのバージョンを選択します. (CUDAのバージョンに合わせて, cuDNNを選択してもいいと思います.)
下記の公式リファレンスに従って, cuDNNをダウンロード&インストールします.
- "Installing From A Debian File". NVIDIA. accessed at 2020-08-19.
\(^o^)/
次に, TensorflowがGPUを認識しているか確認します.
TensorflowがGPUを認識しているか確認
各自, パッケージ管理方法に合わせてpythonインタプリタを起動します.
$ python
次の二行を入力します.
>>> from tensorflow.python.client import device_lib >>> device_lib.list_local_devices()
出力されたメッセージ内に, device_type:GPU
があると, 認識しています!
お疲れ様でした.
→ 無い…
- nvidia driver を認識していますか?
→ GPUドライバの確認 を行う.
- tensorflowのバージョンとCUDA, cuDNNのバージョンが合っていますか?
→ Tensorflow のバージョン確認 を行う.
注釈
参考文献
- ^ "GPU support". TensorFlow. accessed at 2020-08-19.
- ^ "Build from source". TensorFlow. accessed at 2020-08-19.
- ^ "GPU付きのTensorflowをUbuntu18.04に入れる". Qitta. accessed at 2020-08-19.
- ^ "ubuntu18.04でTensorFlow-gpuを動かす". Qitta. accessed at 2020-08-19.
- ^ "Ubuntu18.04にCUDA・cuDNN・tensorflow-gpuをインストールする". Qitta. accessed at 2020-08-19.
- ^ "Ubuntu18.04にNVIDIAとCUDAを入れ直すことに". Qitta. accessed at 2020-08-19.
- ^ "Ubuntu 18.04 でCUDA, Cudnn, Tensorflow GPU のインストール". CodeLab. accessed at 2020-08-19.