ML-Agentsの環境構築の備忘録

前回Anacondaの環境構築を簡単に行ったので、今回はいよいよUnityでの強化学習に必要なML-Agentsの環境構築に挑戦してみます。
# ML-Agentsのインストール
https://github.com/Unity-Technologies/ml-agents
GitHubにアクセスし、`Tag`から2023.9時点での最新バージョンである、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536729/c908a448-8526-1d82-be7c-63fdcb133f70.png)
`release_20`を選択します。
そうしたら、`Code`から、`Download Zip`を選択して、インストールしておきます。
([一応]保存場所を聞かれたら基本どこでもいいです。`ダウンロード`とかに普段入れますが、チュートリアルなどでは`デスクトップ`上に配置してわかりやすくすることもあるみたいです。自分はデスクトップをあんまり汚したくないのでダウンロードに保存しています。解凍前なので本当にどこでもいいと思います。）
インストールしたZipファイルを右クリックして、`すべて展開`します。
展開場所はおまかせします。日本語のフォルダじゃなければ基本なんでもいいと思います。
私はC:User/"username"に入れました。(cd楽だから...)
展開完了したフォルダを右クリックしてパスをコピーできます。（これ後に使います。今コピーする必要はないですが、後でコピーします。）

# Installationを参考に進めてみる
https://github.com/Unity-Technologies/ml-agents/blob/release_20/docs/Installation.md
ここに色々と環境構築の手順が書いてあるみたいです。英語ばっかりでよくわかりませんが頑張ります。
推奨されているのは以下のとおりです。
```
Unity2021.3以上
Python3.8.13以上
```

# Python環境構築
前回インストールしたAnacondaの機能を用いてPython環境を頑張って構築します。

```
conda update conda
conda install anaconda 
conda update --all
```

```
conda create -n mlagents python=3.8
conda activate mlagents
```
-n(--name)オプションは名前を指定する見たい感じで、今回は`mlagents`という仮想環境名を指定している。
`activate`すると(base)から(mlagents)に移動しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536729/1d229f20-2c66-2fe7-de5b-7ca8713e6927.png)
確認のため、
```
python --version
```
を実行すると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536729/5a4c4c8b-0cdd-db41-bfc9-348cea436c97.png)
条件を満たしていることを確認できました！！！（大変だった。。。（大変だったのはエラー備忘録参照）

そうしたらあとはML-Agentsをインストールします。
```
cd "ML-Agentsフォルダのパス"//最初にコピーできるようにしてって言ったやつです。
cd ml-agents-envs
pip install -e ./
cd ..
cd ml-agents
pip install -e ./
cd ..
```
あとは他にも必要そうなものをインストールしておきます。(pytorchなど)
```
pip3 install torch~=1.7.1 -f https://download.pytorch.org/whl/torch_stable.html
pip3 install mlagents
python -m pip install mlagents==0.30.0
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536729/3502758b-3b23-233f-c993-24f65e9e394a.png)
こんなエラーがでてできなかったら次のコマンドを実行してください。
```
pip install protobuf==3.20.*
```

###### python環境構築完了！！！！！！！
↓これはエラーの備忘録、暇つぶしに見てもOK。なにも得られませんが。
<details>
<summary>ここを押して展開、参考にしないこと！！！

#### エラー備忘録。手順通りやらないでね、普通にうまくいっていない備忘録です。

</summary>

# コマンドで解決しました。以下はただの備忘録
```
conda update conda //これでは解決しなかった
conda install anaconda //これと
conda update --all//これが解決してくれた
conda install python=3.8//これは実行してない、いらなかったみたい。

```
## 以下完全な備忘録というかもはや日記
一見`done`とかも出てきたのでCreateは完了したように思えたが、
activateしようとしてみると、できなかった。
```
EnvironmentNameNotFound: Could not find conda environment: mlagents
You can list all discoverable environments with `conda info --envs`.
```
こんな感じのエラーが出たからである。
色々調べてみたところ、そもそもCreateが正常に行われていないっぽいことがわかった。
```
PackagesNotFoundError: The following packages are not available from current channels:

  - python=3.8.18
```
Createしたときに出てきた大量の文を一個一個読んでいったら、このようなエラー文があった。
(エラーならDoneとか出てこないでよ。。。（一部完了してたんだろうけど。））
このエラーはなんかパッケージが見当たらないよみたいなことを言ってる。
じゃあパッケージをインストールしてあげます。
https://anaconda.org
ここにアクセスします。そしたら検索バーに入れたいモジュールの名前を入力します。
今回は`python3.8`
すると以下のような検索結果が出てきました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536729/42cdb3d5-fba5-09cc-f1f2-39179547786a.png)
一番上のPythonマークがついているものを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536729/b91b7ec1-3754-fbcc-bf62-ce5529755e39.png)
そしたらこんな感じの画面になるので、pipインストールの手順にしたがってインストールします。
今回は一番上のpipコマンドのみでいいと思います。（AnacondaPromptで実行します）

<details>
<summary>更にエラー余談</summary>
pipコマンドをコマンドプロンプトでやったら色々起こられました、環境がないからでしょうか。
まぁ今回はAnacondaPromptでなんとかなりました。
</details>
とりあえずインストールが完了したみたいなので、もう一度同じ操作をしてみます。

```
conda create -n mlagents python=3.8.18
conda activate mlagents
```
###### はい、できませんでした。同じエラーです。
調べたらわかりました。
```
conda install python=3.8
```
これしてなかった。；；
と思いきやこれも実行できなかった。。。。
みたいなことやってて、
```
conda update conda //これでは解決しなかった
conda install anaconda //これと
conda update --all//これが解決してくれた
conda install python=3.8//これは実行してない、いらなかったみたい。

```
最初に書いたこれに至った。疲れた。
</details>

# Unity側の操作
やっとUnityの操作に戻れます。
1.Unityプロジェクトを3Dで作成。
2.`ウィンドウ`→`パッケージマネージャー`→`+`→`ディスクからパッケージを加える`
ここまで行ったらエクスプローラに移動すると思うので、展開したML-Agentsのところまで行って、
`com.unity.ml-agents`→`Package.json`を選択する。
するとパッケージのインストールが始まるので、エラー出ないように祈りながら待ちます。
##### 成功しました。環境構築はこれで終わり。
まだ全然試せてないけど、結構ボリューミーな記事になったのでこの記事はここでおしまい。
素人にお付き合いいただきありがとうございました。