M1 MacでUnity ML-Agents Release 18を動かす

開発環境構築には慎重だったM1 Macも少しづつ安定してきたので、Unityの強化学習環境を構築。いくつかハマった部分も含めて手順メモ。

インストール環境

macOS Big Sur 11.5.1

Unity = 2020.3.15f2

Unity Hub = 3.0.0-beta2

Python = 3.8.2(Miniforge)

ML-Agents Release 18

ML-Agents Toolkitのダウンロード

git clone --branch release_18 https://github.com/Unity-Technologies/ml-agents.git

Document/Unityフォルダ(ここは任意)にml-agentsをクローン。

M1はMiniforgeで環境構築していたので、Unity用の仮想環境を構築します。

conda create -n unity python=3.8.6
conda activate unity

Python環境の設定

Pytorch1.8.0インストール

ハマりポイント1〜M1 macにpytorch1.8.0をインストール。

最近pip install torchでインストールできるようになったのですが、導入される1.9.0では不具合がおきるので、ソースからビルドも試したのですがうまくいかず、結局、あらかじめ有志が用意したバイナリーからインストールしました。(ここは自己責任で!)

上記ファイルをDownloadsフォルダにいれインストール

pip install ~/Downloads/torch-1.8.0a0-cp38-cp38-macosx_11_0_arm64.whl
pip install torchvision
pip install torchaudio

ml-agentsパッケージのインストール

次にml-agentsを導入します。公式のインストール手順通りだとエラーがでたので、いくつか事前にファイルを追加。

conda install grpcio h5py

先ほどgit cloneでインストールしたml-agentsディレクトリーに移動して

pip install -e ./ml-agents-envs
pip install -e ./ml-agents

公式のインストール手順の確認

ml-agents/Installation.md at main · Unity-Technologies/ml-agents
Unity Machine Learning Agents Toolkit. Contribute to Unity-Technologies/ml-agents development by creating an account on GitHub.

Unityにml-agentsパッケージを設定

ハマりポイント2〜これまでのAssets追加方法だとエラーが出るので、以下の手順で。

Unity Hubから直接ml-agents/Pojectフォルダを開く。(従来のように、ml-agents/Project/Assets/ML-AgentsフォルダをUnityのAssetsフォルダーにドラックする方法だとエラー

この手順だと、公式にあるPackage Panager -> 「+ → Add package from disk」で「com.unity.ml-agents/package.json」などのインストール手順がないのですが、インストールされたml-agentsパッケージの更新はわすれずに。(ここも更新しないとエラーが発生

ML-Agentsを動かす

Assets/ML-Agents/ExamplesにあるプロジェクトのScenesから動かしたいシーンファイルを選択。

ここでは、3DBallプロジェクトを立ち上げ。

ターミナルでml-agents フォルダーに入り以下のコマンドを起動。

mlagents-learn config/ppo/3DBall.yaml --run-id=3DBall01

シーン名と同じyamlファイルを設定して –run-id=のところ(ここでは[3DBall01])は毎回任意の名前を設定してください。

待ち受け状態になるので、スタートボタンを押すと学習が始まります。

学習が終わるか、スタートボタンを押す、もしくはターミナルでCtrl + Cを押すと止まります。

学習途中で止めた時など、続きから学習を重ねたい場合は

mlagents-learn config/ppo/3DBall.yaml --run-id=3DBall01 --resume

末尾に「–resume」を加えて起動。再度Unityのスタートボタンを押します。

学習曲線の確認

学習曲線を表示するには

tensorboard --logdir results

コマンド入力後、http://localhost:6006/ で確認ができます。

その他

その他、学習したファイルでの確認などは、以下のGetting Started Guideを参考に。

また追記していきます。

ml-agents/Getting-Started.md at main · Unity-Technologies/ml-agents
Unity Machine Learning Agents Toolkit. Contribute to Unity-Technologies/ml-agents development by creating an account on GitHub.