AzureのNシリーズでChainer、Tensorflow、CNTK、DIGITSのGPU環境を作る

  • 9
    いいね
  • 0
    コメント

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