Unity ML-Agents(ver.0.15.1)で強化学習。-セットアップ編-

Unity ml-agents(ver.0.13.0)でいろいろ強化学習を試していたのですが、そろそろ本格的にゲームとの融合をさせていきたいと思い、ml-agentsのバージョンアップがてら備忘録も兼ねて記事にしていこうと思います。こちらの公式ドキュメントをがっつり参考にさせていただきました。

1.セットアップの流れ

①Unityのインストール(2018.4 以降)
②Pythonのインストール(3.6.1 以降) → 自分はAnacondaを使用
③GitリポジトリのClone
④「com.unity.ml-agents」というUnity packageのインストール
⑤「mlagents」というPython packageのインストール

2.具体的な手順

①Unity

UnityのインストールはUnityHubからがおすすめです。この辺はいろんな方が記事を書いてくださっているので、詳細は割愛です。2018.4以降でないといけないようです。

②Python(自分はAnaconda)

この辺もいろんな記事があるので割愛。
ちなみにPython3.6か3.7を奨励とのことなので、自分はこちらの記事を参考にmlagents用の仮想環境をつくりました。
conda create -n mlagents python=3.6
で仮想環境作成、
activate mlagents
で仮想環境が有効化できます。ただし上記コマンドはAnacondaを使っているときに限ります。特に下の⑤は仮想環境を有効にしてから行います。

③Gitリポジトリのクローン

最新安定版(現時点1.15.1)は、好きなフォルダに移動してから、
git clone --branch latest_release https://github.com/Unity-Technologies/ml-agents.git
でインストールできます。

④UnityPackage

具体手順としては、Unity上で「Window」→「PackageManager」→「+」→「Add package from disk…」でダウンロードしたmlagentsリポジトリの中の「com.unity.ml-agents」→「package.json」を選択すればいいようです。

以前のバージョンではml-agents/UnitySDK/Assetsの中の「ML-Agents」フォルダをAsset内にコピペして、「Barracuda」というパッケージを入れて、という感じだったのですが、「Ml-Agents」というパッケージを入れる(現段階では手動で)、というシンプルな形式に変更になったようですね。その際にBarracudaは自動でインストールされます。コピペしていた中身は「Asset」と同列にある「Packages」の中に入る模様です。 さらには、いろんな強化学習の実例の入った「Examples」フォルダはその中にはなく、ダウンロードしたリポジトリのフォルダの中の「Project」フォルダの中に入ってますので、実例を見たい場合はそのフォルダをUnityのAssetの中にD&Dする必要アリです(下の画像参照)。
ちなみに自分はこのExamples/SharedAssetsの中にある「JointDriveController.cs」 (+これが依存している「GroundContact.cs」および「TargetContact.cs」) を使いたかったので、これらのみ「Asset」に追加しましたが無事に使えています。

⑤Python Package

pipで入れるんですが、普通に入れるとtensorflowおよびtensorflow-gpuのバージョン関係でエラーがでました。
バージョンの互換性に関して詳しくなかったので
pip install tensorflow-gpu==1.14.0
pip install tensorflow==1.14.0

で全部1.14.0(調べた限り安定してそう)にそろえてひとまず事なきを得ました。(仮想環境でPython3が指定されているのでpipでやっていますが、そうでない場合はpip3で。)

また、「mlagents」と「mlagents-envs」そのものに変更を加えうる可能性のある人は、
pip install -e ./ml-agents-envs
pip install -e ./ml-agents

をした方がいいと書かれています。これを行うことで、PythonのMLAgentsライブラリと、Gitでクローンしたリポジトリ内の「ml-agents」「ml-agents-env」フォルダが紐づけられるようです。自分はそこまではしないのでとりあえず何もせず。ちなみにこの順番は重要なようで、逆にしてしまうと「ml-agents」が依存している「ml-agents-envs」がPypiから勝手にインストールされてしまい問題があるみたいです。

以上で基本的なセットアップは終わりです。