BluemixのDockerコンテナ環境にTensorFlowをインストールした時の手順を共有します。
GitHubのtensorflow/tensorflowリポジトリのDockerfileを、BluemixのDevOpsサービスのBUILD&DEPLOYを使ってビルド・デプロイします。
前提として、Bluemixアカウント(トライアルで可)、GitHubのアカウント、gitコマンド実行環境が必要です。
手順は以下のとおりです。
- BluemixのDockerコンテナ環境を初期設定する(レジストリー名前空間の設定)
- GitHubにリポジトリを作成する
- tensorflow/tensorflowリポジトリの必要部分を自分のリポジトリにpushする
- Bluemixにプロジェクトを作成する
- Bluemix DevOpsサービスのBUILD&DEPLOYを設定する
- Dockerコンテナをビルド・デプロイする
※この手順のうち"3"のステップは以下のいずれかの代替手段でスキップ可能です。その場合、gitコマンド実行環境は不要になります。
- 今回私がGitHub上に作成したリポジトリ( https://github.com/takeyan/tensorflow_docker.git )からForkする
- "4"のステップで私のGitHubリポジトリを直接指定する
ただし、私のGitHubリポジトリはいずれ陳腐化して動かなくなると思いますので、"3"のステップで最新状態のオリジナルからコピーを取得することをお勧めします。
1. BluemixのDockerコンテナ環境を初期設定する(レジストリ名の登録)
Bluemixコンソールのカタログの画面で、IBM Containersを選択します。
レジストリー名前空間の設定を要求してくるので、適当に命名して保存します。
保存したらコンテナの作成の画面に戻ります。初期設定の作業はここまでです。
2. GitHubにリポジトリを作成する
リポジトリ名を適当に命名してCreate repositoryをクリックします。
リポジトリが出来上がると以下の画面が表示されます。リポジトリのURLを後でコピペして使用する(git remoteコマンドで指定する)ので、この画面はこのまま置いておきます。
3. tensorflow/tensorflowリポジトリの必要部分を自分のリポジトリにpushする
本手順ではtensorflow/tensorflowに公開されているDockerfileをそのまま利用します。Dockerfileが置かれているサブディレクトリ以下だけが必要なのですが、まずはリポジトリ全体をgit cloneで入手します。
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)にログインします。
Bluemixにログインしたのと同じブラウザでDevOpsサービスにログインすると、セッション情報を勝手に引き継いでBluemixのユーザーIDでログインしてくれます。最初の一回だけ別名の設定を要求してくるので適当に命名します。
Start Coding in a new projectを選択して、Bluemixにプロジェクトを作成します(new projectのリンクをクリックします)。
プロジェクト名を適当に命名し、Link to an existing GitHub repositoryを選択します。GitHubのユーザーID、パスワードを要求してきたら適宜応答します。
リポジトリ選択のプルダウンメニューが現れるので、先にGitHubに作成してdockerサブディレクトリ以下をgit pushしておいたプロジェクト(ここではtensorflow_docker)を選択します。
プロジェクトを選択すると更に下に選択肢が表示されますが、デフォルトのままで大丈夫です。一番下にCREATEボタンが現れるので、これをクリックします。ここのプロセスは若干時間がかかります。
5. Bluemix DevOpsサービスのBUILD&DEPLOYを設定する
DevOpsサービスの画面右上のBUILD&DEPLOYボタンをクリックします。
「パイプラインにようこそ」の画面は邪魔なので、右上の△で閉じておきます。
「ステージの追加」で「ビルド」ステージ、「デプロイ」ステージの順に作成していきます。
まずはビルドのステージです。「入力」の画面はデフォルトのままで大丈夫です。
「ジョブ」の画面では、まずジョブ・タイプの選択で「ビルド」を選択します。
ビルダー・タイプで「IBM Container Service」を選択します。
イメージ名は適当に命名します。(英小文字、数字の組み合わせが無難です)
他はデフォルトで大丈夫です。入力したら一番下の「保存」ボタンをクリックします。(以下の添付画面には「保存」ボタンは見えていません)
次に、もう一度「ステージの追加」をクリックして、デプロイのステージを作成します。ここでも「入力」の画面はデフォルトのままで大丈夫です。
「ジョブ」の画面に移って、ジョブ・タイプの選択で今度は「デプロイ」を選択します。
デプロイヤー・タイプでIBM Containers on Bluemixを選択します。
名前がデフォルトでmyApplicationNameになっているので、好みの名前に変更します。
ポート番号はデフォルトで80になっていますが、8888に変更します。
他はデフォルトのままで大丈夫です。
デプロイのステージでは環境プロパティーも設定するので、まだ「保存」はクリックしないで下さい。
「環境プロパティー」の画面では、「プロパティーの追加」をクリックして、文字プロパティとして"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)
6. Dockerコンテナをビルド・デプロイする
BUILD&DEPLOYの設定が完了すると、以下の画面の状態になっています。ここでビルドのステージの右上の▲をクリックしてビルドを開始します。ビルドが正常に終了すると、続いて自動的にデプロイが開始します。
今回の実行では、ビルド開始からデプロイ完了まで13分程度かかりました(ビルドで9分20秒、デプロイで3分30秒)。ビルド環境を一から構築してそれからビルドを実行する、というようなことを毎回やっているので時間がかかるようです。
実行状況は「ログおよび履歴の表示」で確認することができます。
以下はデプロイまで完了した状態の画面です。このコンテナにアサインされたIPアドレスが確認できます。
ダッシュボードを開くと、今デプロイしたコンテナがリストに表示されています。
最後に、コンテナにアサインされたIPアドレスのポート8888(ここでは http://169.46.159.57:8888 )にアクセスして、応答が返ることを確認します。
無事TensorFlowをBluemixのDockerコンテナ環境にインストールできました。
以上です。