docker
Bluemix
TensorFlow

BluemixのDockerコンテナ環境にTensorFlowをインストールする

More than 1 year has passed since last update.

BluemixのDockerコンテナ環境にTensorFlowをインストールした時の手順を共有します。
GitHubのtensorflow/tensorflowリポジトリのDockerfileを、BluemixのDevOpsサービスのBUILD&DEPLOYを使ってビルド・デプロイします。
前提として、Bluemixアカウント(トライアルで可)、GitHubのアカウント、gitコマンド実行環境が必要です。

手順は以下のとおりです。

  1. BluemixのDockerコンテナ環境を初期設定する(レジストリー名前空間の設定)
  2. GitHubにリポジトリを作成する
  3. tensorflow/tensorflowリポジトリの必要部分を自分のリポジトリにpushする
  4. Bluemixにプロジェクトを作成する
  5. Bluemix DevOpsサービスのBUILD&DEPLOYを設定する
  6. Dockerコンテナをビルド・デプロイする

※この手順のうち"3"のステップは以下のいずれかの代替手段でスキップ可能です。その場合、gitコマンド実行環境は不要になります。

ただし、私のGitHubリポジトリはいずれ陳腐化して動かなくなると思いますので、"3"のステップで最新状態のオリジナルからコピーを取得することをお勧めします。


1. BluemixのDockerコンテナ環境を初期設定する(レジストリ名の登録)

Bluemixコンソールのカタログの画面で、IBM Containersを選択します。
スクリーンショット 2016-10-12 20.05.33.png

コンテナの作成の画面でコンテナイメージをひとつ選択します。
スクリーンショット 2016-10-12 20.12.29.png

レジストリー名前空間の設定を要求してくるので、適当に命名して保存します。
保存したらコンテナの作成の画面に戻ります。初期設定の作業はここまでです。
スクリーンショット 2016-10-12 20.15.43.png

2. GitHubにリポジトリを作成する

GitHubにログインし、リポジトリを新たに作成します。
スクリーンショット 2016-10-12 20.20.51.png

リポジトリ名を適当に命名してCreate repositoryをクリックします。
スクリーンショット 2016-10-12 20.23.26.png

リポジトリが出来上がると以下の画面が表示されます。リポジトリのURLを後でコピペして使用する(git remoteコマンドで指定する)ので、この画面はこのまま置いておきます。
スクリーンショット 2016-10-12 20.27.55.png

3. tensorflow/tensorflowリポジトリの必要部分を自分のリポジトリにpushする

本手順ではtensorflow/tensorflowに公開されているDockerfileをそのまま利用します。Dockerfileが置かれているサブディレクトリ以下だけが必要なのですが、まずはリポジトリ全体をgit cloneで入手します。
スクリーンショット 2016-10-12 20.34.55.png

terminalを開いて以下のコマンドを実行します。

$ git clone https://github.com/tensorflow/tensorflow.git

カレントディレクトリ下にtensorflowというディレクトリができます。ここからDockerfileのあるサブディレクトリに移動します。

$ cd tensorflow/tensorflow/tools/docker

dockerサブディレクトリに移動したら、ここでgitプロジェクトを作成して、commitします。

$ git init
$ git add .
$ git commit -m "initial commit" 

あらかじめGitHubに作成しておいたプロジェクトにこのgitプロジェクトをpushします。以下のコマンド例を参考にしてください。
git remoteコマンドの引数は、先に作成したGitHubのプロジェクトのURLをコピペして下さい。
git pushコマンドを実行するとGitHubのユーザーID、パスワードを要求してくるので、適宜応答して下さい。

$ git remote add origin https://github.com/takeyan/tensorflow_docker.git
$ git push -u origin master

4. Bluemixにプロジェクトを作成する

Bluemix DevOpsサービス(hub.jazz.net)にログインします。
スクリーンショット 2016-10-12 20.55.53.png

Bluemixにログインしたのと同じブラウザでDevOpsサービスにログインすると、セッション情報を勝手に引き継いでBluemixのユーザーIDでログインしてくれます。最初の一回だけ別名の設定を要求してくるので適当に命名します。
スクリーンショット 2016-10-12 21.04.12.png

スクリーンショット 2016-10-12 21.05.42.png

Start Coding in a new projectを選択して、Bluemixにプロジェクトを作成します(new projectのリンクをクリックします)。
スクリーンショット 2016-10-12 21.08.44.png

プロジェクト名を適当に命名し、Link to an existing GitHub repositoryを選択します。GitHubのユーザーID、パスワードを要求してきたら適宜応答します。
スクリーンショット 2016-10-12 21.13.00.png

リポジトリ選択のプルダウンメニューが現れるので、先にGitHubに作成してdockerサブディレクトリ以下をgit pushしておいたプロジェクト(ここではtensorflow_docker)を選択します。
スクリーンショット 2016-10-12 21.17.48.png

プロジェクトを選択すると更に下に選択肢が表示されますが、デフォルトのままで大丈夫です。一番下にCREATEボタンが現れるので、これをクリックします。ここのプロセスは若干時間がかかります。
スクリーンショット 2016-10-12 21.19.26.png

作成が完了すると以下の画面に切り替わります。
スクリーンショット 2016-10-12 21.24.29.png

5. Bluemix DevOpsサービスのBUILD&DEPLOYを設定する

DevOpsサービスの画面右上のBUILD&DEPLOYボタンをクリックします。
スクリーンショット 2016-10-13 9.51.57.png

「パイプラインにようこそ」の画面は邪魔なので、右上の△で閉じておきます。
「ステージの追加」で「ビルド」ステージ、「デプロイ」ステージの順に作成していきます。
スクリーンショット 2016-10-13 9.55.07.png

まずはビルドのステージです。「入力」の画面はデフォルトのままで大丈夫です。
スクリーンショット 2016-10-13 10.00.54.png

「ジョブ」の画面では、まずジョブ・タイプの選択で「ビルド」を選択します。
スクリーンショット 2016-10-13 10.03.54.png

ビルダー・タイプで「IBM Container Service」を選択します。
イメージ名は適当に命名します。(英小文字、数字の組み合わせが無難です)
他はデフォルトで大丈夫です。入力したら一番下の「保存」ボタンをクリックします。(以下の添付画面には「保存」ボタンは見えていません)
スクリーンショット 2016-10-13 10.09.52.png

次に、もう一度「ステージの追加」をクリックして、デプロイのステージを作成します。ここでも「入力」の画面はデフォルトのままで大丈夫です。
「ジョブ」の画面に移って、ジョブ・タイプの選択で今度は「デプロイ」を選択します。
スクリーンショット 2016-10-13 10.16.50.png

デプロイヤー・タイプでIBM Containers on Bluemixを選択します。
名前がデフォルトでmyApplicationNameになっているので、好みの名前に変更します。
ポート番号はデフォルトで80になっていますが、8888に変更します。
他はデフォルトのままで大丈夫です。
デプロイのステージでは環境プロパティーも設定するので、まだ「保存」はクリックしないで下さい。
スクリーンショット 2016-10-13 10.20.36.png

「環境プロパティー」の画面では、「プロパティーの追加」をクリックして、文字プロパティとして"CONTAINER_SIZE","medium"と入力します。この指定でコンテナに2GBのRAMを割り当てます。これがBluemixのトライアルアカウントのRAM割当の上限(※)です。
入力したら「保存」をクリックします。
※全てのコンテナのRAMサイズの合計が2GBに制限されますので、コンテナを複数作成したい場合はRAMサイズを控えめにして下さい。2GB RAMのコンテナをひとつ作成すると、それ以上コンテナを作成できなくなります。
CONTAINER_SIZEの選択肢とRAMサイズ(MB)を以下に列挙します。デフォルトはmicroです。

  • pico (64)
  • nano (128)
  • micro (256)
  • tiny (512)
  • small (1024)
  • medium (2048)
  • large (4096)
  • x-large (8192)
  • 2x-large (16384)

スクリーンショット 2016-10-13 10.28.05.png

6. Dockerコンテナをビルド・デプロイする

BUILD&DEPLOYの設定が完了すると、以下の画面の状態になっています。ここでビルドのステージの右上の▲をクリックしてビルドを開始します。ビルドが正常に終了すると、続いて自動的にデプロイが開始します。
スクリーンショット 2016-10-13 10.35.11.png

今回の実行では、ビルド開始からデプロイ完了まで13分程度かかりました(ビルドで9分20秒、デプロイで3分30秒)。ビルド環境を一から構築してそれからビルドを実行する、というようなことを毎回やっているので時間がかかるようです。
実行状況は「ログおよび履歴の表示」で確認することができます。

以下はデプロイまで完了した状態の画面です。このコンテナにアサインされたIPアドレスが確認できます。
スクリーンショット 2016-10-13 11.13.41.png

ダッシュボードを開くと、今デプロイしたコンテナがリストに表示されています。
スクリーンショット 2016-10-13 11.17.48.png

コンテナの詳細は以下のとおりです。
スクリーンショット 2016-10-13 11.20.24.png

最後に、コンテナにアサインされたIPアドレスのポート8888(ここでは http://169.46.159.57:8888 )にアクセスして、応答が返ることを確認します。
スクリーンショット 2016-10-13 11.25.44.png

無事TensorFlowをBluemixのDockerコンテナ環境にインストールできました。

以上です。