catlaの備忘録

忘れないように書いておきます。

CUDA/Dockerの環境構築

目標

初期状態のUbuntu18.04 LTSにCuda, Docker, nvidia-dockerの環境を構築する。

想定環境

  • OS: Ubuntu 18.04 LTS (初期状態)
  • CUDAサポートのGPUが刺さっている

Step0 : 前準備

$ sudo apt update
$ sudo apt -y upgrade

Step1 : GPUドライバ(CUDA)のインストール

Cuda Toolkitの公式サイトから以下のように選択し、表示されるものに従ってダウンロード。(ここではCuda10.2)

過去のバージョンはLegacy Releasesからインストール手順が参照可能。

f:id:katsura_jp:20190927100657p:plain

$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin

$ sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600

$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub

" aptレポジトリに追加
$ sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"

$ sudo apt-get update

" CUDAのインストール
$ sudo apt-get -y install cuda

" 確認(表示されればOK)
$ nvidia-smi


" Pathを通す
$ export PATH="/usr/local/cuda/bin:$PATH"
$ export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

Step2 : Dockerのインストール

公式のインストールガイドに従ってdocker-ceをインストールする。

" (任意) 必要に応じてaptのアップデート
$ sudo apt-get update

" HTTPSのためのソフトフェアをインストール
$ sudo apt-get -y install \
     apt-transport-https \
     ca-certificates \
     curl \
     gnupg-agent \
     software-properties-common

" Docker公式のGOG keyを追加
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88

" aptレポジトリに追加
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

" aptのアップデート
$ sudo apt-get update

" docker-ceのインストール
$ sudo apt-get -y install docker-ce docker-ce-cli containerd.io

" (任意) 正しくインストールされたか確認
$ sudo docker run --rm hello-world

" (任意) 必要に応じてuserグループに追加
" 追加するとsudoを使用する必要がなくなる。
$ sudo usermod -aG docker $USER
$ exit
【余談】docker-ceとは?

DockerはCE(コミュニティエディション)とEE(エンタープライズエディション)があり、無料版と有料版という違いがある.(個人用か商業用かの違いみたいなもの)

Step3 : nvidia-dockerのインストール

githubにある公式のレポジトリにあるREADMEのQuickStartを参照しながらインストールを行う。

github.com

最新のDocker19.03のリリースで、Nvidia GPUがDockerでネイティブにサポートされるようになったためnvidia-docker2の使用は非推奨になりました。

Docker19.03の説明は次の記事がわかりやすい。

medium.com

nvidia-docker2では--runtime=nvidiaのオプションを使いますが、19.03では--gpusのオプションが追加されたのでこれを使う。

" レポジトリのパッケージを追加する
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -sL https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
$ sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
$ sudo systemctl restart docker

" (任意) 正しくインストールされたか確認
$ docker run --gpus all nvidia/cuda:9.0-base nvidia-smi

nvidia-smiの画面が出れば完了!!