ローリングコンバットピッチなう!

AIとか仮想化とかペーパークラフトとか

GTX1050導入

[technology] Ubuntu 16.04 LTSにNVIDIAGPUドライバーを導入+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 … 技術評論社

ポイントのみ記載します。

  1. ドライバ

    ドライバーは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に該当リポジトリを設定しました。
    こんな使い方している人は自分だけだと思いますが。

  2. バージョン

    関連するソフトバージョンは以下の通りです。
    ソフトバージョン備考
    pythonPython 3.6.5 :: Anaconda custom (64-bit)
    chainer4.3.1
    cupy4.5.0
    NVIDIAドライバー396.54
    CUDA9.2.148-1cuda-repo-ubuntu1604-9-2-local_9.2.148-1_amd64.deb
    cuda-repo-ubuntu1604-9-2-148-local-patch-1_1.0-1_amd64.deb
    CUDNN7.4.18-1libcudnn7_7.1.4.18-1+cuda9.2_amd64.deb
    libcudnn7-dev_7.1.4.18-1+cuda9.2_amd64.deb
    この組み合わせでchainerにcupyを導入し無事動いています。
  3. インストール順序

    もともと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環境に切り替えておく必要があります。


いくつか過去に作ったchainerのニューラルネットワーク学習スクリプトGPU対応して動かしましたが学習が爆速になり超感動中です。ちゃんと計測出来ていないですが、今まで数時間かかっていた学習が分単位で終わるレベル。
1点、自分の環境的にうまくなかったのは、Xenを使っているのですがNVIDIAドライバはXenに対応しておらずXen対応のLinuxカーネルでブートするとX Windowが起動しません。ワークアラウンドがあるのは調べて判ったのですが、結局Xenはアンインストール、KVMを使う事にしました。