St_Hakky’s blog

Data Science / Human Resources / Web Applicationについて書きます

Ubuntu 16.04でDocker CEをインストールしてNVIDIA DriverとNVIDIA Dockerを入れるまでやった作業メモ

こんにちは。

今日は研究でGPUを使うことになったので、Dockerでやるかと思い、この記事を作業メモとして残す意味を込めて書こうと思います。

○なぜDockerでGPUを動かすのか

  • ガチでやると設定が面倒な記憶しかない。
  • ミスって時間を潰している人生の余裕がない。

○環境

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"

Docker CEのインストール

○公式ドキュメント

最新情報をやるためにうも、公式ドキュメントを読んだほうがいいです。

docs.docker.com

○Prerequisites

Ubuntuの要件はかわっているかもしれませんが、Ubuntuの16を使っている人は、以下の要件を満たす必要があります。

  • Ubuntu 16.04(LTS)
  • 64bit

64bitじゃないと行けないンゴです。

○Dockerのインストール

■Update the apt package index
sudo apt-get update
■Install packages to allow apt to use a repository over HTTPS:
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
■Add Docker’s official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

key fingerprintが「9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88」であることを確認します。

sudo apt-key fingerprint 0EBFCD88
■install stable docker ce

今回は、「x86_64」の環境なので、以下のコマンドを使用して、まずはstableなレポジトリをセットアップします。他の環境を使用する場合は公式ドキュメントを参照すること。

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

正直にいうと上のコマンドでは私はなんかうまくいかなかったので、「$(lsb_release -cs)」を普通にターミナル上から動かして、その出力結果を代わりに入れました。そしたら動きました。

その後、Docker CEをインストールします。

sudo apt-get update
sudo apt-get install docker-ce

○Dockerがインストールされたかどうかの確認

sudo docker run hello-world

NVIDIAのDriverインストール

○手動でドライバをインストール

以下のページから手動でダウンロードして、インストールしていく。

Download Drivers | NVIDIA

これは、もしかしたらいらないかもしれないが、私はこれをインストールしてやったので、一応書いておきます。

# lightdmを止める
sudo systemctl stop lightdm

これで、ディスプレイが消えるので、仮想コンソールから実行するために「Ctrl + Alt + F1」を入力する。

入力したあとに、もしnvidia-dockerを先にインストールしていた人は、こちらも実行します。ちなみに、私はこれで若干はまりました(笑)

sudo systemctl stop nvidia-docker

ダウンロードしたnvidiaのドライバを実行する。

cd /path/to/download/directory
chmod +x NVIDIA-Linux-x86_64-384.69.run
sudo ./NVIDIA-Linux-x86_64-384.69.run

実行したら、画面に出てくる質問に適当に答えてインストールをしていきます。インストール後、再起動します。

sudo reboot

"Proprietary GPU Drivers" PPAに存在するドライバをapt-getでインストール

こちらを参考にさせていただきました。

# リポジトリを追加、アップデート
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update

# インストール可能なドライバ一覧を取得
sudo apt-cache search nvidia-\d+

# ドライバをインストール。今回は手動でインストールしたドライバと同じものをいれた。
sudo apt-get install nvidia-384

# reboot
sudo reboot

NVIDIA Docker

○公式ドキュメント

公式ドキュメントを読みましょう。

github.com

○Install

以下のコマンドを実行するのみ。

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がenableになっているかの確認は以下の通り。

systemctl is-enabled nvidia-docker

○動作確認

以下のコマンドから、動作確認を行います。

nvidia-docker run --rm nvidia/cuda nvidia-smi

○nvidia-modprobeがインストールされてないっぽい。

本来であれば動作確認コマンドを実行して、「はい、これでおわり」となるのですが、私の場合は、以下のようなエラーがでました。

Error: Could not load UVM kernel module. Is nvidia-modprobe installed?

なので、以下のコマンドでインストールします。

sudo apt-get install nvidia-modprobe

その後、テスト実行をしてみます。

nvidia-docker run --rm nvidia/cuda nvidia-smi


これでうまく行けば実行できているはずです。

これで環境が整いました。まぁ、結構はまりましたね、、、。