概要

Unity ML-AgentsをDockerで実行するのにイメージをBuildする必要がありますが、Google Cloud Buildを利用するようにしてみました。

今回は、トリガーを利用せず、ローカルでコマンドを実行してビルドしてみました。

Google Cloud Buildについては以下をご参考ください。

Google Cloud Build
https://cloud.google.com/cloud-build/?hl=ja

Google Cloud Buildとは一体何者なのか
https://swet.dena.com/entry/2018/08/20/170836

手順

GCPのプロジェクトとgcloud コマンドが利用できる前提となります。

cloudbuild.yamlの用意

Google Cloud BuildでDockerイメージが作成できるように

> mkdir 任意のディレクトリ
> cd 任意のディレクトリ
> touch cloudbuild.yaml

Dockerイメージのタグ名を直接記述していますが、トリガー起動する場合には$TAG_NAME を利用することもできるようです。

利用できる変数については下記をご参考ください。

Cloud Build 変数値の置換
https://cloud.google.com/cloud-build/docs/configuring-builds/substitute-variable-values

ビルドする際に、パスを./ml-agents として、ML-Agentsのソースのみが含まれるようにしています。

unity_ml_agents は任意の名称でOKです。

cloudbuild.yaml

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/$PROJECT_ID/unity_ml_agents:0.5.0a', './ml-agents']
images: ['gcr.io/$PROJECT_ID/unity_ml_agents:0.5.0a']

Unity ML-Agentsの取得

サブモジュールとして取得します。
※ Google Cloud Buildのトリガーでビルドする場合、サブモジュールも取得してくれるのか未検証なので、トリガー機動する場合にはgit clone で取得したほうが良いかもしれません。

> git submodule add https://github.com/Unity-Technologies/ml-agents.git

Unity ML-Agentsのバージョンを変更してビルドする場合は、以下のようにします。

> cd ml-agents
> git tag
(略)
0.3.1b
0.4.0
0.4.0a
0.4.0b
0.5.0
0.5.0a
v0.1
> git checkout 0.5.0

ビルド実行

準備ができたので、Google Cloud Buildにジョブ開始のコマンドを実行します。

> cd 任意のディレクトリ
> gcloud builds submit --config=cloudbuild.yaml .
(略)
DONE
-------------------------------------------------------------------------------------------------------------------

ID                                    CREATE_TIME                DURATION  SOURCE                                                      IMAGES                                                    STATUS
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  2018-10-02T05:15:41+00:00  6M38S     gs://GCPのプロジェクトID_cloudbuild/source/1538457217.11-48d929e28e27491aa8a3fa4fde554756.tgz  gcr.io/GCPのプロジェクトID/unity_ml_agents:0.5.0a  SUCCESS

GCP管理コンソールでもジョブの実行が確認できます。

Google Container RegistryにもイメージがPushされていることも確認できます。

これでローカルにDockerがインストールされていなくても、イメージ作成ができるようになりました。

作成したイメージの利用については下記をご参考ください。

DockerでUnity ML-Agentsを動作させる(v0.5.0対応)
https://qiita.com/kai_kou/items/df3f3518a5a27b66f617

Google Kubernetes EngineでUnity ML-Agentsを動かしてみる(V0.5.0対応)
https://cloudpack.media/43540

参考

Google Cloud Build
https://cloud.google.com/cloud-build/?hl=ja

Google Cloud Buildとは一体何者なのか
https://swet.dena.com/entry/2018/08/20/170836

Cloud Build 変数値の置換
https://cloud.google.com/cloud-build/docs/configuring-builds/substitute-variable-values

DockerでUnity ML-Agentsを動作させる(v0.5.0対応)
https://qiita.com/kai_kou/items/df3f3518a5a27b66f617

Google Kubernetes EngineでUnity ML-Agentsを動かしてみる(V0.5.0対応)
https://cloudpack.media/43540

元記事はこちら

Google Cloud Buildを利用してUnity ML-AgentsのDockerイメージを作成する(v0.5.0対応)