免責
この記事を見てる人は超絶初心者なので問題が起こったとしても私は責任を負わないこととします。また記事を見て進めた時点で同意したとみなします。またWindows以外のユーザーは今回扱いません。
バージョン確認
結構な速度で更新されてるML-Agentsですが2020/10/19時点の最新版であるML-Agents Release 8の環境構築とテストをしていきたいと思います。
実行環境
わかりやすく言うとインストールするものリストです。
| バージョン | インストール | |
|---|---|---|
| ML-Agents | Release 8 | 未 |
| Unity | 2019.4.1f1 | 済 |
| Anaconda3 | 2020.7 | 未 |
| Python | 3.7.9 | 未 |
Unityは2018.4以降が対応してますが、
今回はUnity2019.4.1f1で進めていきます。
同様にPython3.6.1以降が対応してますが、
今回は仮想化とは???の人のためにAnacondaで仮想環境を作っていこうと思います。
Anacondaは後述で3.7環境を作るので、3.8対応の一番新しい2020.7(2020/10/19時点)を使います。
またUnityとUnity Hubはすでにインストールが済んでいる前提で進めます。
当然ですがネット環境も必要です。
今回GPUでの学習に関しては動かすことが目的なので含んでいません、予めご了承ください。
ANACONDA3インストール手順
既にインストール済みの方は飛ばしてください。
ダウンロード場所はAnaconda3のサイトをスクロールしたところにあります。

とりあえずNEXTで読み進めていってください。

今回はディレクトリを合わせるためJust Meで

インストール先のフォルダを聞かれますが今回はC:\Users\ ユーザー名\anaconda3に素直にインストールしましょう。
最後の項目ですが下の画像のようにチェックします。赤くなっていますが気にしないでOKです。

上の項目は面倒なパスを通すために必要で、下の項目はあまり関係がないのですが今回Python3.7をメインに使う都合上外します。
チェックでき次第インストールしましょう。
インストールが済んだらコマンドプロンプトを開いてcondaと打ち確認しましょう。
コマンドプロンプトがわからない方はWindowsの検索バーにcmdと打ちアプリを開きましょう。

開くと黒地に、
C:\Users\ ユーザー名>
と表示されているので
condaと入力してエンター、以下のようにヘルプが出力されればインストール完了です。

今後このようにコマンドプロンプトからコマンドを実行する際は、
$ conda
のように表記するので覚えておいて下さい。($は、続くコマンドを実行するの意味)
ML-Agentsダウンロード手順
すでにダウンロードしている方はディレクトリ階層だけ合わせてください。
ML-Agents Release 8のサイトをスクロールしてSource code(zip)をダウンロード、
C:\Users\ ユーザー名\ 直下に解凍しましょう。

ディレクトリはC:\Users\ ユーザー名\ml-agents-release_8 となるはずです。
フォルダ内のcom.unity.ml-agentsファイルはUnityで使います。
- mlagents
- mlagents_envs
- gym_unity
のファイルは次のPythonのインストールの時に使います。
それぞれの働きについて詳しくはここを見てください。
Python3.7インストール手順
コマンドを実行します。
$ conda create -n ml-agents python=3.7
実行したら仮想環境の構築が終わるまでしばらく待ちましょう。
途中y/n?ときかれるので yを押してエンター
動作が終わると、再び
C:\Users\ ユーザー名>
と表示されるのでそれから次のステップに移ります。
以降も同様に一つのコマンドの処理が終わるまで待ってから行ってください。
$ conda activate ml-agents
コマンドプロンプトが、(ml-agents)C:\Users\ ユーザー名> のように変化します。
これで仮想環境にライブラリを追加できます。
$ pip install -e ./ml-agents-release_8/ml-agents-envs
$ pip install -e ./ml-agents-release_8/ml-agents
$ pip install -e ./ml-agents-release_8/gym-unity
上から順に入れていきます。ちゃんとディレクトリ階層があっていればインストールが始まります。
時間がかかるので焦らずお茶を飲みましょう。
$ pip list
Unityのテスト環境構築
Unity Hubを開いてプロジェクト>リストに追加をクリック。

C:\Users\ ユーザー名\ml-agents-release_8 内のProjectフォルダを選んで、フォルダーの選択。

Unityバージョンを2019.4.1f1に変更後、プロジェクト名をクリックして起動。

プロジェクトのアップグレードの確認をする。次に出てくるポップアップもYesを選択。

インポートが終わるまでお茶でも飲みましょう。
次に、Assets>ML-Agents>Examples>3DBall>Scenesフォルダから3DBall.unityをダブルクリックで実行します。

シーンが読み込まれたらUnity上部のPlayボタンを押して、シーンを実行してみます。
(少し読み込みがあるので待ちましょう)

可愛いシーンが再生されましたね!
このシーンには頭の上に乗ったボールを落とさないように学習済みのデータが設定されています。
ではPlayをもう一度押しシーンを終了して、1から学習してみましょう。
(ml-agents) C:\Users\ ユーザー名> の状態で
$ mlagents-learn ./ml-agents-release_8\config\ppo\3DBall.yaml --run-id=3DBall-1 --train
色々出てきた最後に、Start training by pressing the Play button in the Unity Editor.
と表示されたらUnityのPlayボタンを押してください。
そうするとボックス君たちが微振動を始めるかと思います。それが世界のおわr 学習の始まりです。
人によってはパソコンがブオーンと唸るかもしれませんが我慢です。(古いパソコンでさすがにヤバそうだったらPlayを停止するか、コマンドプロンプトでCtrl+Cを押して終了してください。)
しばらくはコマンドプロンプトとUnityを眺めててください。学習が終われば自動的に止まります。
コマンドプロンプトに表示されてくるMean Rewardが平均的な報酬ですので、これが高くなっていくようなら学習が順調に進んでます。
学習が終わると色々コマンドプロンプトに表示されたあと、(ml-agents) C:\Users\ ユーザー名> の状態に戻りますので、
C:\Users\ ユーザー名\results\3DBall-1ファイルを開きます。

3DBall.nnというNN形式のファイルが先ほどの学習で手に入った学習済みデータです。(NNはニューラルネットワークの意(Neural Network))
UnityのProject内にドラッグアンドドロップで移して、右クリックRenameで3DBall-NNと間違わないよう名前を変更します。
次にHierarchyから3DBallの右の矢印>をクリックして、3DBallのPrefabを開きます。

するとPrefabの設定画面に移るのでSceneの背景が青色に代わるのを確認した後、HierarchyからAgentを選択状態にすると、InspectorにBehavior Parametersというコンポーネントがあります。

そこのModelに先ほど追加した学習済みのNNファイルをドラッグアンドドロップ等で設定してください。
設定後Hierarchyの左上の小さな左矢印<でPrefabの設定画面から抜けます。
Unity上部のPlayを押してシーンを再生すると、Hierarchy内の3DBallが割り当てた学習済みファイルになってるのが確認できるかと思います。(見た目上大きな変化はないかもしれませんが、先ほど学習したデータです)
以上で学習のテストは終了です。
他にもデモシーンが用意されてるので学習時のシーンと.yamlの名前を変えながら試してみるとよいかと思います。
まっさらなUnityのプロジェクト構築
番外編ですが、デモシーン無しのまっさらなML-Agents用の新規プロジェクトの作り方です。
メニューからWindow>Package Managerを開きます。
左上の+ボタンを押してAdd package from diskを選びます。

C:\Users\ ユーザー名\ml-agents-release_8 に移動してcom.unity.ml-agentsフォルダ内のpackage.jsonを開きます。

インポートが終われば完了です。
