ML-Agentsバージョンは0.4.0となります。ML-Agents)をクラウド上で動作させるのに適切な環境を探しています。ML)上で動作するものなのか、検証してみました。ML-AgentsはTensorflowを利用した強化学習ができるライブラリです。MLで動かないわけがない。一言で説明するなら「機械学習を実行するためのクラウドサービス」です。そのため、DataRobotなどの他のクラウドサービスのようにサービス上で開発は行えません。ML-Agentsは、新世代のロボット、ゲームをはじめさまざまな分野において、迅速かつ効率的に新しいAIアルゴリズムの開発を行い、テストする柔軟な方法を提供します。MLやUnity、ML-Agentsの環境構築が済んでいる前提です。環境がないという方は下記をご参考ください。ML-Agentsの環境を構築するhttps://qiita.com/kai_kou/items/6478fa686ce1af5939d8UnityでアプリをビルドするML-Agentsでは実際にUnityアプリを動作させつつ強化学習がすすみます。ML上で動作させる必要があるので、Linux用のビルドとなります。アプリはML-Agentsに含まれる[3DBall]アプリを利用します。手順は下記記事のDockerに関する手順以外をすすめてビルドします。フォルダに以下ファイルとフォルダが用意できたと思います。MLで実行するための下準備です。MLを利用するリージョンなどを変数に設定します。BUCKET_NAMEとJOB_NAMEは任意で指定してください。今回は動作確認が目的となりますので、学習のステップを少なくします。ML-Agentsライブラリにtrainer_config.yamlというハイパーパラメータを指定するYAMLがあるので、そちらでmax_stepsの指定をして5,000ステップ実行して終了するようにします。Storageに置いて利用することになります。Storageにコピーしておきます。Linux用ビルドはDataフォルダがないとアプリが起動しません。フォルダのままだと取り回しが面倒なので、ZIPファイルに圧縮しておきます。MLで動作できるように以下の準備をします。MLにPythonでパッケージ化されたファイルをアップして実行するので、その準備をします。Storageへ保存する実装を追加します。今回、ファイル名を固定していますが、とりあえず動作検証のためなので、あしからず。Storageからのファイル取得・アップにgsutilコマンドを利用していますが、ここはPythonで実装してもOKです。MLの操作に利用するgcloudコマンドにはパッケージを自動作成する機能もありますが、ここでは手動でパッケージングします。MLへジョブ登録して学習を実行してみましょう。パラメータ指定に--がありますが、これ以降のパラメータが--module-nameで指定したlearn.pyにパラメータとして渡されるので、取ってはいけません。ジョブが登録されたか確認しましょう。0.01ジョブ実行されたかログを見てみましょう。successfully.はい。ML上で実行されて、modelsフォルダに結果ファイルが出力されているはずです。Storageにコピーしてるので、フォルダをローカルにコピーして、Unityアプリにbytesファイルを組み込んで動作させることができます。gs://任意のバケット名/$JOB_NAME/modelsgs://任意のバケット名/gcp_ml_cloud_run_01/models/3DBall_gcp_ml_cloud_run_01.bytesgs://任意のバケット名/gcp_ml_cloud_run_01/models/checkpointgs://任意のバケット名/gcp_ml_cloud_run_01/models/model-5001.cptk.data-00000-of-00001gs://任意のバケット名/gcp_ml_cloud_run_01/models/model-5001.cptk.indexgs://任意のバケット名/gcp_ml_cloud_run_01/models/model-5001.cptk.metags://任意のバケット名/gcp_ml_cloud_run_01/models/raw_graph_def.pbtensorboardでも結果が確認できます。--logdir=ローカルの任意のフォルダ/models実行できることが確認できました。