KerasがGPUを認識できなくなった
スポンサーリンク
2018年12月時点ではGPUで動いていたコードが2019年1月になるとGPUを認識できずにCPUで動くようになっていた。
Ubuntu自体のアップデート、Pythonパッケージのアップデートをしていた気がするのでそれが原因か?
記事執筆時点(2019年1月21日)での各バージョンは下記の通り。
学習を開始すると
failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected
が出て学習自体は動くが、GPUを使っていないため遅い。
GPUドライバの再インストール
最終的にはGPUドライバの再インストールはおそらく不要?
nvidia-396/now 396.54-0ubuntu0~gpu16.04.1 amd64
のgpu16.04.1
部分がUbuntuのバージョンを16.04からdist-upgrade
したときの残骸?のような感じで怪しいのでGPUドライバを再インストールしてみる。
削除後、一応再起動。
$ sudo apt remove nvidia-396 $ sudo apt autoremove $ sudo reboot
アップデート後、最新版を確認してみる
$ sudo apt update $ sudo apt search nvidia nvidia-396/now 396.54-0ubuntu0~gpu16.04.1 amd64 [設定が残存] (none)
[設定が残存]
になっているので
$ sudo apt purge nvidia-396 $ sudo reboot
完全に消えたのでppaを追加してインストールする。
nvidia-396はリポジトリにはなかったので、代わりにnvidia-390をインストールする。
$ sudo add-apt-repository ppa:graphics-drivers/ppa $ sudo apt update $ sudo apt install nvidia-390
CUDA_VISIBLE_DEVICESが原因
コードのはじめの方でGPUが一枚しかないのに
os.environ["CUDA_VISIBLE_DEVICES"] = "1"
としていたことが原因。
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
やCUDA_VISIBLE_DEVICESを設定しなければ問題なくGPUで動いた。