2018.08.15

GPUを利用するためのDocker プラグイン「NVIDIA Docker」とは?導入手順は?(後編)

岡田一哉
ソフトバンク コマース&サービス株式会社
ICT事業本部 MD本部 ICTソリューション販売推進統括部
新規事業推進部 NVIDIA&AI事業推進課
このエントリーをはてなブックマークに追加

前回は、インストール準備まで行いましたので、今回はいよいよdocker、nvidia-dockerをインストールしていきたいと思います。

NVIDIA HPC/ディープラーニング系製品階層

180803_nvidia_3.jpg

nvidia-dockerのインストール手順

3. Docker インストール

旧バージョンdockerを削除します。

# sudo yum remove docker \
> docker-client \
> docker-client-latest \
> docker-common \
> docker-latest \
> docker-latest-logrotate \
> docker-logrotate \
> docker-selinux \
> docker-engine-selinux \
> docker-engine

必要パッケージをインストールし、dockerリポジトリを追加します。

# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yumからDockerをインストールし、動作確認を行います。

# sudo yum install docker-ce
# sudo docker run hello-world
Hello from Docker!
~~

これでNVIDIAドライバとdockerのインストールまで完了しました。
最後にnvidia-dockerをインストールします。

4. nvidia-dockerのインストール

旧バージョンのnvidia-dockerを削除します。

# sudo docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
# sudo yum remove nvidia-docker

下記を参照しnvidia-dockerのリポジトリをインストールします。
https://nvidia.github.io/nvidia-docker/

# distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
# curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo

nvidia-docker2のインストール、設定をリロードします。

# sudo yum install nvidia-docker2
# sudo pkill -SIGHUP dockerd

nvidia-docker2上からnvidia-smiを起動し、動作確認をします。

# sudo docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

これでドライバインストール時と同じnvidia-smiの結果が表示されれば、インストール完了です!

5. nvidia-dockerの使い方

通常のdockerコマンド利用時にruntimeオプションを指定、またはnvidia-dockerコマンドを利用します。

# sudo docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
# sudo nvidia-docker run -rm nvidia/cuda nvidia-smi

6. GPUを利用できるコンテナ

基本的にnvidia/cudaと指定すれば最新バージョンのコンテナを利用可能ですが、特定のバージョンやCUDAの開発用パッケージも必要な場合は、https://hub.docker.com/より「nvidia」で検索すると、nvidia/cudaが表示されます。
「9.1-cudnn7-devel-centos7」のように必要なバージョンを指定すれば利用可能です。
他にDIGITS(ディープラーニングをGPUベースで学習・推論実行できるアプリケーション)もラインナップにありますので、試してみてはいかがでしょうか。


180815_nvidia_1.jpg

また、今回は手順までご紹介しませんが、NVIDIA GPU CLOUDというリポジトリがNVIDIAから提供されています。
こちらを使用すると、TensorFlowやCNTKといったディープラーニングフレームワークとCUDAがインストールされているコンテナイメージが利用可能になります。

NVIDIA HPC/ディープラーニング系製品階層

180815_nvidia_2.png

NVIDIA GPU CLOUDを使用すると、ディープラーニングフレームワークのバージョンによって、サポートされているCUDAのバージョンが違うことから発生するバージョン地獄から開放され、便利です。
ユーザー登録は無料ですので、是非お試しください。

この記事の著者:岡田一哉

ソフトバンク コマース&サービス株式会社
ICT事業本部 MD本部 ICTソリューション販売推進統括部
新規事業推進部 NVIDIA&AI事業推進課

以前はSEとして、アプリケーション基盤や、SSOシステムなどの構築・運用、オフショア移管などを担当。
その後、ソフトバンクC&S社内で業務システムへの機械学習導入を担当し、
現在はその経験を活かし、NVIDIAのGPU製品についてセミナー、ハンズオンなどの販促活動を担当している。


DevOps Hubのアカウントをフォローして
更新情報を受け取る

  • Like on Feedly
    follow us in feedly

関連記事

このエントリーをはてなブックマークに追加

お問い合わせ

DevOpsに関することなら
お気軽にご相談ください。

Facebook、TwitterでDevOpsに関する
情報配信を行っています。