Unity ML-AgentsをDockerで実行するにはイメージを作成する必要がありますが、Google Cloud Buildを利用するようにしてみました。
今回はトリガーを利用せず、ローカルでgcloud
コマンドを利用してビルドしてみました。
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
コマンドが利用できる前提となります。
コマンドのインストール方法は下記が参考になります。
Cloud SDK のインストール | Cloud SDK のドキュメント | Google Cloud
https://cloud.google.com/sdk/downloads?hl=JA
cloudbuild.yaml
の用意
Google Cloud BuildでDockerイメージが作成できるようにcloudbuild.yaml
ファイルを用意します。
> mkdir 任意のディレクトリ
> cd 任意のディレクトリ
> touch cloudbuild.yaml
gitでリポジトリを取得後、リポジトリに含まれているDockerfile
からイメージを作成します。
steps:
- name: 'gcr.io/cloud-builders/git'
args: ['clone', 'https://github.com/Unity-Technologies/ml-agents.git', '-b', $TAG_NAME, '--depth', '1']
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/unity-ml-agents:$TAG_NAME', './ml-agents']
images: ['gcr.io/$PROJECT_ID/unity-ml-agents:$TAG_NAME']
$TAG_NAME
を利用して、Unity ML-Agentsのバージョンを指定するようにしました。$TAG_NAME
はコマンド実行時にパラメータ指定します。
他に利用できる変数については下記をご参考ください。
Cloud Build 変数値の置換
https://cloud.google.com/cloud-build/docs/configuring-builds/substitute-variable-values
git clone
で取得したリポジトリにあるDockerfile
が参照されるように./ml-agents
を指定します。
イメージ名unity-ml-agents
は任意の名称でOKです。
ビルド実行
準備ができたので、Google Cloud Buildにジョブ開始のコマンドを実行します。
> gcloud builds submit \
--config=cloudbuild.yaml \
--substitutions=TAG_NAME="0.9.1"
Creating temporary tarball archive of 1 file(s) totalling 413 bytes before compression.
Uploading tarball of [.] to [gs://GCPのプロジェクトID_cloudbuild/source/1566436194.89-b50bc19f2aec4fafa922c3b61ca9e8ce.tgz]
Created [https://cloudbuild.googleapis.com/v1/projects/GCPのプロジェクトID/builds/2860d702-303d-4c55-a5ff-fbfd6bc27e25].
Logs are available at [https://console.cloud.google.com/gcr/builds/2860d702-303d-4c55-a5ff-fbfd6bc27e25?project=xxxxxxxxxxxx].
----------------------------------------------------- REMOTE BUILD OUTPUT -----------------------------------------------------
starting build "2860d702-303d-4c55-a5ff-fbfd6bc27e25"
FETCHSOURCE
Fetching storage object: gs://GCPのプロジェクトID_cloudbuild/source/1566436194.89-b50bc19f2aec4fafa922c3b61ca9e8ce.tgz#1566436196515961
Copying gs://GCPのプロジェクトID_cloudbuild/source/1566436194.89-b50bc19f2aec4fafa922c3b61ca9e8ce.tgz#1566436196515961...
/ [1 files][ 391.0 B/ 391.0 B]
Operation completed over 1 objects/391.0 B.
BUILD
Starting Step #0
Step #0: Already have image (with digest): gcr.io/cloud-builders/git
Step #0: Cloning into 'ml-agents'...
Step #0: Note: checking out 'd11229820f3d7f090341c76edea7bad83fc0eeec'.
Step #0:
Step #0: You are in 'detached HEAD' state. You can look around, make experimental
Step #0: changes and commit them, and you can discard any commits you make in this
Step #0: state without impacting any branches by performing another checkout.
Step #0:
Step #0: If you want to create a new branch to retain commits you create, you may
Step #0: do so (now or later) by using -b with the checkout command again. Example:
Step #0:
Step #0: git checkout -b <new-branch-name>
Step #0:
Finished Step #0
Starting Step #1
Step #1: Already have image (with digest): gcr.io/cloud-builders/docker
Step #1: Sending build context to Docker daemon 199.6MB
Step #1: Step 1/20 : FROM ubuntu:16.04
(略)
0.9.1: digest: sha256:3573056b2abca07328ac0ec7179e7625793aea9721d58d641898a45ff6cecb2b size: 3259
DONE
-------------------------------------------------------------------------------------------------------------------------------
ID CREATE_TIME DURATION SOURCE IMAGES STATUS
2860d702-303d-4c55-a5ff-fbfd6bc27e25 2019-08-22T01:09:58+00:00 7M53S gs://GCPのプロジェクトID_cloudbuild/source/1566436194.89-b50bc19f2aec4fafa922c3b61ca9e8ce.tgz gcr.io/GCPのプロジェクトID/unity-ml-agents:0.9.1 SUCCESS
Google Container RegistryにもイメージがPushされていることも確認できます。
これでローカルにDockerがインストールされていなくても、イメージ作成ができるようになりました。
参考
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
Cloud SDK のインストール | Cloud SDK のドキュメント | Google Cloud
https://cloud.google.com/sdk/downloads?hl=JA