ホーム > カテゴリ > Python・人工知能・Django >

Docker/nvidia-docker2のコンテナ上にAnacondaをインストールする

Python/TensorFlowの使い方(目次)

TensorFlow、Chainerなどのディープラーニング用のフレームワークの種類によって、使用するNVIDIAの「CUDA Toolkit」(開発環境)「cuDNN」(ライブラリ)のバージョンが異なります。

Dockerとnvidia-docker2を使用すれば1つのホストOS上にコンテナと呼ばれる複数の環境を構築することが可能です。

※各コンテナはホストOSのカーネルを共有します。

1つのOSで複数の環境構築以外にも大きなメリットがあります。

Windows/macなどメインで使用しているパソコンのブラウザから、ホストOS上のコンテナにあるJupyter Notebookにアクセスできるようになります。

それでは、次章から各インストールの解説となります。

前提条件

Ubuntu 16.04
NVIDIAのドライバがインストール済み

※検索エンジンから訪れた方はPythonの使い方の「ディープラーニングの環境構築」もご参考にして下さい。

1. Dockerのインストール

次のコマンドを上から順に実行します。 ※Docker公式を参考

sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo apt-key fingerprint 0EBFCD88

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

sudo apt-get update

sudo apt-get install docker-ce

Dockerが正しくインストールできたかをテストします。

sudo docker run hello-world

次にdockerコマンドをsudoなしで実行できるようにします。

sudo gpasswd -a $USER docker

ここで再起動します。そして、sudoなしでdockerコマンドをテストします。

docker run hello-world

このように表示されればDockerのインストールは完了です。

2. nvidia-docker2のインストール

次のコマンドを上から順に実行します。 ※NVIDIA公式を参考

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
  
curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64/nvidia-docker.list | \
 sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt-get update

sudo apt-get install -y nvidia-docker2

sudo pkill -SIGHUP dockerd

コンテナ上でGPUが利用可能か確認します。

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

[コマンド解説]

run新しいコンテナを実行する
--runtime=nvidiaコンテナでNVIDIAランタイムを使用する
--rmコンテナ終了時、コンテナを自動的に削除
nvidia/cudaNVIDIAが提供する最新のDockerイメージ
nvidia-smiNVIDIAのシステム管理インターフェイス

runコマンドの詳細はDocker公式をご覧ください。

3. 共有フォルダを作成する

ホストOSに次のフォルダを作成します。

/home/ユーザー名/tensor

※ユーザー名は自分の環境に合わせて下さい。tensorの名称は任意です。 

4. コンテナを作成する

今回はTensorFlowに必要な環境であるCUDA Toolkit 9.0、cuDNN SDK v7でコンテナを作成します。※2018年7月時点

時間の経過で必要な環境が変わった場合は「nvidia/cudaのリポジトリ」を参考にしてください。次の9.0-cudnn7-develの箇所を変更すればOKです。

tensorというコンテナを作成してバッググラウンドで実行します。

docker run --runtime=nvidia --name tensor -d -it -p 8888:8888 -v /home/ユーザー名/tensor:/foo nvidia/cuda:9.0-cudnn7-devel

※ユーザー名は自分の環境に合わせて下さい。fooの名称は任意です。

コンテナにアタッチする。

docker attach tensor

アタッチするとターミナルがコンテナのroot@xxxになります。

これでコンテナ上の操作を行います。次章はroot@xxxでインストします。

5. コンテナにAnacondaをインストール

はじめにAnaconda公式でダウンロードするURLをコピペします。

次のコマンドを上から順に実行します。(2番目のコマンドは任意)

apt update 

apt -y upgrade

apt install -y wget

2018/7/17時点では2番目の「apt -y upgrade」を実行するとcuDNNが7.0から7.1にアップグレードされます。TensorFlow1.9.0では一部、機能が動作しませんので7.0系へのダウングレードが必要となります。

ダウングレードはTensorFlow(GPU版)/KerasのインストールからHello World の3章をご覧ください。

それか、「apt -y upgrade」を実行しないという事も可能です。

次のURLはさきほど、コピペしたURLにして下さい。

wget https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh

次のコマンドでインストールが開始されます。最初は説明があるので、Enterキーを何度も押します。以降、yes、Enter、yes、noの順番にします。

bash Anaconda3-5.1.0-Linux-x86_64.sh

そして、環境設定ファイルの内容を反映します。

source ~/.bashrc

Jupyter Notebookを起動します。

jupyter notebook --ip=0.0.0.0 --allow-root

http://の部分を右クリックでリンクを開くとJupyter Notebookがブラウザで表示されます。

rootなのでFilesは「/home/user」ではなく「/」が表示されています。

ファイルを作成する場合はコンテナ上では「/foo」(実際はホストOSの/home/ユーザー名/tensor)に作成してください。それ以外の場所に作成するとJupyter Notebookでは削除できませんのでご注意ください。

Jupyter Notebookのサーバーをシャットダウンするにはターミナルで

Ctrl+Cの次にy

を押せばサーバーを落とせます。

コンテナの操作状態(root@xxx)を解除するには

Ctrl+Pを押してからQキー

です。

Windowsなどの別マシンからJupyter Notebookにアクセスするには

http://0.0.0.0:8888/?token=長いトークン

http://ホストOSのIPアドレス:8888/?token=長いトークン

に変換するとブラウザでアクセス可能です。

また、Jupyter Notebookの「Files」タブではソースファイルなどをブラウザへドロップでアップロードできます。(日本語ファイル名除く)

6. コンテナの操作

次は最低限、必要なコマンドです。 ※詳細はDocker公式

コンテナの作成/実行docker run
コンテナの停止docker stop コンテナ名
コンテナの開始docker start コンテナ名
コンテナにアタッチdocker attach コンテナ名
コンテナの一覧(起動中)docker ps
コンテナの一覧(全て)docker ps -a
コンテナの削除docker rm コンテナID
※コンテナIDはコンテナ一覧で取得する





関連記事



公開日:2018年07月13日 最終更新日:2018年08月24日
記事NO:02701