AzureのNCインスタンスでChainer、Tensorflow、CNTK、DIGITSのGPU環境を作る
AzureのNCインスタンス上にChainer、Tensorflow、CNTK、DIGITSの環境を作った時の手順をまとめます。
VM作成
Azureのポータルから行いました。注意点は以下の通りです。
- LinuxはUbuntu16.04のみサポートされている。(参考URL)
- 他のバージョンでも起動はできるようですが、肝心のGPUを認識しませんでした。
- NCシリーズが使えるリージョンは限られている。
- 米国中南部、米国東部で使えますが、日本リージョンではまだ使えないようです。
- OSディスクはHDDを選択しなくてはいけない。
- リージョンのリソース状況によっては作成できないことがある。
- 時間を置けば作成できるようになります。
NVIDIA Dockerのインストール
依存関係が面倒なことになりそうだったので、dockerを使って環境を分けることにしました。NVIDIAが提供しているNVIDIA DockerはCUDAやcuDNNが既に入っているので、こちらを使うことにします。
1.GPUドライバインストール
sudo apt-get update
sudo apt install -y gcc make
wget -O /tmp/NVIDIA-Linux-x86_64-375.20.run http://us.download.nvidia.com/XFree86/Linux-x86_64/375.20/NVIDIA-Linux-x86_64-375.20.run
chmod +x /tmp/NVIDIA-Linux-x86_64-375.20.run
sudo sh /tmp/NVIDIA-Linux-x86_64-375.20.run
2.Dockerインストール
apt-get update
apt-get install apt-transport-https ca-certificates
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" >> /etc/apt/sources.list.d/docker.list
apt-get update
apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
apt-get install docker-engine
docker run hello-world
3.NVIDIA Dockerインストール
wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.0-rc.3/nvidia-docker_1.0.0.rc.3-1_amd64.deb
dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb
nvidia-docker run --rm nvidia/cuda nvidia-smi
最後のnvidia-smiでGPUの状態が出力されていれば完了です。
各フレームワークのインストール
ここから各フレームワークのDockerコンテナを作っていきます。GPUも使えるように作っています。
1.DIGITS
sudo nvidia-docker run --name digits -d -p 8080:34448 nvidia/digits
これでDockerホストの8080ポートでDIGITSが起動します。
2.Chainer
sudo nvidia-docker run -it --name chainer nvidia/cuda:cudnn /bin/bash
でコンテナを起動し、
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get wget git -y
のように必要なものを適当に準備し、データサイエンティストを目指す人のpython環境構築 2016のLinuxの場合を見ながらanacondaの設定をしました。最後に
pip install chainer
でchainerがインストールできました。
3.Tensorflow
Chainerと同様にしてコンテナを作り、anacondaの設定までした後、
export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0rc1-cp35-cp35m-linux_x86_64.whl
pip install --ignore-installed --upgrade $TF_BINARY_URL
でtensorflowがインストールできました。
4.CNTK
Microsoftがdockerイメージを提供していたので、それを利用しました。
CNTK Docker Containers
こちらの手順通りに実行すればCNTKがインストールできました。
(ビルドに時間がかかるのと、途中赤い文字がたくさん見えてどきどきします。)
まとめ
以上で、Chainer、Tensorflow、CNTK、DIGITSでGPUが使える環境を作ることができました。NVIDIA Docker様々です。
参考ページ
Azure NシリーズでNVIDIA DIGITSをサクッと動かす
Azure で NVIDIA GPU を使うには
データサイエンティストを目指す人のpython環境構築 2016
nvidia-dockerとは?
TensorFlow Get Started - Anaconda installation
Pythonの環境構築からTensorFlowインストール
CNTK Docker Containers