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のインストール

NVIDIA/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.