GPU (NVIDIA, CUDA) いろいろ
nvidia-smi
persistent mode
電力を消費する代わりに常にドライバを読み込んでくれるので,高速化につながる.
nvidia-smi
したときが一番わかり易い.
$ sudo nvidia-smi -pm 1
使い過ぎで止まった時
0はGPUの番号
$ sudo nvidia-smi -r -i 0
$ sudo nvidia-smi -r -i 1
utilizationが100%
使いすぎてGPUが止まって再起動して nvidia-smi
したら一つだけ
GPUのutilizationが100%になっていた.
これを解決するには,どうもpersistent modeを有効にすると良いらしい.
結論 $ sudo nvidia-smi -pm 1
したらなおった.
GPU環境構築
基本,NVIDIAの公式に従うのが一番確実.
直接インストール
最新versionで現行のライブラリが対応していれば,以下のリンクからインストールをすれば基本終わりか?
- CUDA Toolkitのインストール
CUDA Toolkit 9.2 Download | NVIDIA Developer
- CuDNNのインストール
Membership Required | NVIDIA Developer
- 公式のドキュメント
Installation Guide Linux :: CUDA Toolkit Documentation
nvidia-docker2によるインストール
セットアップがまずめんどくさいということと,またLDAPとの相性などの問題諸々を考えたくないので, 今からセットアップするならDockerを使いたい.Docker自体の使用方法を覚える時間は必要だが,今後を考えるとこちらが楽.
必要なのは nvidia driver, docker, nvidia-dockerかな?
今はnvidia-dockerのバージョンが2になって,さらに便利になったらしい. ブログの記事などは古い可能性が…
基本はREADMEのQuick StartからWikiをたどっていけばできそう.
GitHub - NVIDIA/nvidia-docker: Build and run Docker containers leveraging NVIDIA GPUs
Wikiにも説明はあるが,必要なドライバのバージョンがわかるページ. ここからCUDA Toolkit入れずとも直接インストール可能.
Advanced Driver Search | NVIDIA
他にもWIKIが充実しているので,ここを見れば大体解決しそう. Home · NVIDIA/nvidia-docker Wiki · GitHub
今は実質Deepを回すとなるとpythonとセットにすることになると思うので, pythonの環境も,virtualenvやpyenvを使うのも良いが dockerに入れてしまってよいのでは.
よくやられるのはDockerfileとrequirements.txtを置いて, dockerfile内で
ARG path_to_dir=/path/to/dir
ADD requirements.txt $path_to_dir
RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r $path_to_dir/requirements.txt
としておいて,必要なライブラリ群が増えたら requirements.txtに追記していけばみんな幸せになれるかと. ただ各自の目的が違いすぎるとライブラリ間のバージョン依存の関係で詰まる可能性があるが, そこはタグ付けするなどして分けることで解決するのかな…
おそらくすでにこのような全部入りのdocker imageは誰かが作っていると思うので,それを入れたら終わってしまうかも.笑
Usage
Usage · NVIDIA/nvidia-docker Wiki · GitHub
複数人で使うときは, NVIDIA_VISIBLE_DEVICES
を指定して被りがないようにするとかやったほうが良いかも.
以下古い記事
nvidia-dockerでGPU環境セットアップ
公式のWikiだけ読んで 適宜貼ってあるリンクも読みつつ進めれば基本的には全て解決すると思う.
nvidia-dockerのインストール
事前準備
これをみて,GPUにあったバージョンのNVIDIA driverをインストールする.
NVIDIA driverをインストールしないと以下のエラーが出る.
Error: Could not load UVM kernel module. Is nvidia-modprobe installed?
CUDA toolkitはインストール不要.
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
$ sudo apt install nvidia-xxx # GPUにあったドライバーのバージョン
$ sudo reboot # 再起動
$ nvidia-smi # ちゃんと表示されればOK
インストール
$ wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb
$ sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb
$ nvidia-docker run --rm nvidia/cuda nvidia-smi # test
最後でうまく nvidia-smi
が実行できたらOK.