[technology] Ubuntu 16.04 LTSにNVIDIAのGPUドライバーを導入+chainer
最近Core2Duoから第7世代Core i7に乗り換えて、chainerでのディープラーニング実験がかなり捗る様になったのですが、せっかく新マシンにはnVIDIAのGeForce GTX1050が載っているので、chainerからGPUコンピューティング出来る環境を作りました。
だいたいこの手の作業については先人のブログとかにやり方は書いてあるのですが、時間とともにドライバーのバージョンが上がっていったり、人により微妙に手順が違っていたりなので、自分の備忘録としてポイントと使ったソフトのバージョンを記載します。
大枠は下記サイトを参考にしつつ、
tadaoyamaoka.hatenablog.com
以下のサイトの情報等も利用して、判断しながら進めました。
Ubuntu 16.04LTSにNVIDIAドライバ(nvidia-390)とCUDA 9.1を入れた時のメモ - swytelの日記
UbuntuにNVIDIAドライバを入れる手順 - Qiita
第454回 Ubuntu 16.04 LTSにNVIDIA製ドライバーをインストールする3つの方法:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社
ポイントのみ記載します。
- ドライバ
ドライバーはNVIDIAのサイトではなく以下の様にリポジトリからaptで取得しました。$ sudo add-apt-repository ppa:graphics-drivers/ppa $ sudo apt update $ sudo apt-get install nvidia-390
ここでsudo apt updateがうまく行かず引っかかったのですが、原因は広告フィルタ目的で自前で立てているproxyでした。(Privoxyを使っています)
なぜかlaunchpadのリポジトリだけprivoxy経由でアクセスできないので、no_proxyに該当リポジトリを設定しました。
こんな使い方している人は自分だけだと思いますが。
- バージョン
関連するソフトバージョンは以下の通りです。ソフト バージョン 備考 python Python 3.6.5 :: Anaconda custom (64-bit) chainer 4.3.1 cupy 4.5.0 NVIDIAドライバー 396.54 CUDA 9.2.148-1 cuda-repo-ubuntu1604-9-2-local_9.2.148-1_amd64.deb
cuda-repo-ubuntu1604-9-2-148-local-patch-1_1.0-1_amd64.debCUDNN 7.4.18-1 libcudnn7_7.1.4.18-1+cuda9.2_amd64.deb
libcudnn7-dev_7.1.4.18-1+cuda9.2_amd64.deb - インストール順序
もともとchainerは導入済みの環境だったため、以下の順に作業をしました。
- Nouveau kernel driver のdisable
- NVIDIAドライバをリポジトリからapt-getで導入
- カーネルのドライババージョンを固定
ググれば色々なところに情報がありますが、下記等を参考に。NVIDIAドライバはカーネルバージョンアップすると大変とあちこちに書いてあるので、固定にしました。
yoheikikuta.github.io
- cuda toolkit導入
基本的にはNVIDIAの公式サイト通りの手順。
- CUDNN導入
- cupyインストール
chainerはインストール済みなので、cupyのみをpipでインストールします。anaconda3の仮想環境のため、pip実行前にchainerをインストールしたpython3.6環境に切り替えておく必要があります。
- Nouveau kernel driver のdisable
いくつか過去に作ったchainerのニューラルネットワーク学習スクリプトをGPU対応して動かしましたが学習が爆速になり超感動中です。ちゃんと計測出来ていないですが、今まで数時間かかっていた学習が分単位で終わるレベル。
1点、自分の環境的にうまくなかったのは、Xenを使っているのですがNVIDIAドライバはXenに対応しておらずXen対応のLinuxカーネルでブートするとX Windowが起動しません。ワークアラウンドがあるのは調べて判ったのですが、結局Xenはアンインストール、KVMを使う事にしました。