MESOSでDeep Learning用のGPU付きコンテナを起動

Mesosはノードに対してタスクの割り振りを行ってくれるソフトウェアです。必要であればノードへのタスク割り振り時に、実行環境セットアップの為にコンテナの配置もしてくれます。今回はDeep Learningの実行環境でこのMesosを使って簡易的なMesos環境のセットアップと、コンテナへのGPUのAllocationをやってみました。Mesos上で動くフレームワークであるMarathonや、Chronos/Metronomeは今回取り上げません。

Mesosのインストール

Mesosの環境はMesosphereがパッケージングしている環境もありますが、今回はUbuntu 14.04にコンパイル後にインストールしました。基本的に以下の手順に従っています。

https://mesos.apache.org/gettingstarted/

以下のコマンドで環境をセットアップします。

$ sudo apt-get update
$ sudo apt-get install -y tar wget git openjdk-7-jdk
$ sudo apt-get -y install build-essential python-dev libcurl4-nss-dev libsasl2-dev libsasl2-modules maven libapr1-dev libsvn-dev
$ wget http://www.apache.org/dist/mesos/1.1.0/mesos-1.1.0.tar.gz
$ tar -zxf mesos-1.1.0.tar.gz

ビルドしてインストールします。

$ cd mesos
$ mkdir build
$ cd build
$ ../configure
$ make
$ make install

手順から外れてしまいますが、動作には以下の手順が必要でした。

$ sudo bash -c "cat > /etc/ld.so.conf.d/mesos.conf << EOF
/usr/local/lib
EOF"
$ sudo ldconfig
$ sudo apt-get install python-pip
$ pip install mesos.cli

GPU付き環境の起動

GPU付きでAgentを起動します。以下の手順に従っています。Agentが動作するホストでは事前にnVidiaのDriverをインストールしておきます。

http://mesos.apache.org/documentation/latest/gpu-support/

Mesos MasterとAgentを起動します。以下は同一のホストでMasterとAgentを起動してます。

$ mesos-master \
      --ip=127.0.0.1 \
      --work_dir=/var/lib/mesos

$ mesos-agent \
      --master=127.0.0.1:5050 \
      --work_dir=/var/lib/mesos \
      --image_providers=docker \
      --executor_environment_variables="{}" \
      --isolation="docker/runtime,filesystem/linux,cgroups/devices,gpu/nvidia"

MasterとAgent起動後にブラウザでlocalhost:5050にアクセスすると、Agent(Slave)のGPUを認識している事がわかります。

ws000014

以下のコマンドでMesos上にFrameworkを作成すると、コンテナを起動してコンテナ上でnvidia-smiを実行してGPUが認識されているか確認します。

$ mesos-execute \
      --master=127.0.0.1:5050 \
      --name=gpu-test \
      --docker_image=nvidia/cuda \
      --command="nvidia-smi" \
      --framework_capabilities="GPU_RESOURCES" \
      --resources="gpus:1"

実行後にGUIの画面から、Framworksの中で実行済みFrameworksを選択後、Sandboxでstdoutを確認するとnvidia-smiの実行結果が表示されるはずです。

ws000019さらに一歩進んで、Tensorflowの入った環境を準備して、Jupiter Notebookで操作する場合は以下のコマンドを実行します。

$ mesos-execute \
      --master=127.0.0.1:5050 \
      --name=gpu-test \
      --docker_image=gcr.io/tensorflow/tensorflow:latest-gpu \ 
      --command="jupyter-notebook" \ 
      --framework_capabilities="GPU_RESOURCES" \ --resources="gpus:1"

まとめ

複数のノードのDeep Learning環境のセットアップにMesosを使ってみたいと思い、まずはベーシックな所の確認を行いました。

広告
MESOSでDeep Learning用のGPU付きコンテナを起動

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中