猫になりたい

IT企業のデータ分析屋、計量経済とか機械学習をやっています。pyてょnは3.6を使ってマスコレルウィンストングリーン。

Ubuntu 16.04にnvidia-dockerでディープラーニング用の環境を作る2


スポンサーリンク

編集履歴
2018/04/02 cudnnのverが間違っていて動かなかったのを修正
2018/04/01 cuda toolkitのver.を9.1→9.0に変更したのに合わせてコードを修正

前回の続きです。

今回は前回作ったnvidia-dockerを使って、tensorflowとkeras、anacondaの入ったコンテナを立てます。 まず、Dockerのイメージをpullします。

# cuda9.1、cudnn7のdockerイメージを取ってくる
docker pull nvidia/cuda:9.0-cudnn7-runtime-ubuntu16.04

続いてAnaconda等を入れていきます。 本当はdockerfileを使って自動化したかったんですが、AnacondaのインストールがDockerfile経由だと上手く行かないのでイメージを新しく作ることにしました。

# testという名前のコンテナを作成、名前は適宜変更してください
nvidia-docker run --name test -it nvidia/cuda:9.0-cudnn7-runtime-ubuntu16.04

# ここからコンテナ内で作業
#  最低限必要なものをインストール
apt-get -y update && apt-get -y upgrade
apt-get install -y sudo wget bzip2
wget https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh
bash Anaconda3-5.1.0-Linux-x86_64.sh
rm -f Anaconda3-5.1.0-Linux-x86_64.sh
source ~/.bashrc
#インストール時にパスを追加し忘れたら 動作未確認
#echo export PATH='/root/anaconda3/bin:$PATH' >> ~/.bash_profile

# TensorflowとKerasのインストール
pip install --upgrade tensorflow-gpu
pip install keras

# tensorflowとcudnnのver. を合わせるためにcudnnを7.1から7.0にダウングレードする
# やらない場合以下のエラーが出る
# Check failed: stream->parent()->GetConvolveAlgorithms( conv_parameters.ShouldIncludeWinogradNonfusedAlgo<T>(), &algorithms) 
# 参考:https://github.com/tensorflow/tensorflow/issues/17566
apt-get install --allow-downgrades libcudnn7=7.0.5.15-1+cuda9.0

ここで一旦exitでコンテナから抜けます。

# 今作ったコンテナから dockerのイメージを作成
docker commit test gpu-container

# イメージを作成するのに使ったコンテナを破棄
docker rm test


# Jupyterに接続するためにコンテナからホストにポートフォワードする必要があるので
# ポートフォワードの設定をしてコンテナを起動する
nvidia-docker run --name <好きなコンテナ名> -p 8888:8888 -it gpu-container

# jupyterを起動してローカルのブラウザからlocalhost:8888繋いで見ましょう
jupyter notebook --ip=0.0.0.0

以上です、お疲れ様でした!