機械学習UnityLearn_MLAgents勉強メモ1

Each post also has a subtitle

pyenvとかanacondaとか色々環境を整える手順がネットには溢れていたけどunityLearnの言う通りに やるのがスムーズなのでanacondaを使う。
2020.4.3 unity公式のML-hummingbirdはこの時点で古いpythonのバージョンで環境設定しないと動かない!
3.6で環境構築したら動きました。

$ conda create -n ml-agents python=3.6

で3.6指定で学習できた。

https://www.anaconda.com
anaconda導入後から
環境のセットアップ(unityLearnで詳しく説明してる)

$ conda activate
//これでpython ver3.9で環境が作れる。
$ conda create -n ml-agents python=3.9
//これで今ある作った環境一覧が見れる。
$ conda env list
//removeで指定した環境を消せる
$ conda remove -n ml-agents --all
//作った環境(ml-agents)に入れる
$ conda activate ml-agents

//よくわからないけどこれで必要なものをインストールしてくれて揃うみたいです
//これをやらないとmlagents-learnコマンドとか使えない
$ pip3 install mlagents

$ pip3 install mlagents-envs
$ mlagents-learn -h

このコマンドでヘルプが見れる。

trainer_config.yamlのファイルを用意して設定

https://github.com/Unity-Technologies/ml-agents/blob/release_1_branch/docs/Training-Configuration-File.md
細かくはここに書いてある。

今回は用意された素材のyamlファイルを使う。cdなどを使ってファイルの階層をyamlファイルがあるところまで移動する。
ファイルの場所は適当

$ cd yamlファイルが置いてある場所のディレクトリ

以下yamlファイルが置いてある場所のディレクトリを操作する。
機械学習で動かしたいオブジェクトにつけたBehaviorParametersスクリプトのBehaviorNameに好きな名前をつけてそれをyamlファイルに設定する。
初期値でHummingbirdと設定されてる。


Agentを継承してるスクリプトがコンポーネントについてる場合、Behavior Parameters,DecisionRequesterコンポーネントがついてることが義務化されてる。
Agentのスクリプトを見ると[RequireComponent (typeof(BehaviorParameters))]がついてる。

$ mlagents-learn ./trainer_config.yaml --run-id hb_01

うまく動かない。
2021.4.2現在ではyamlファイルの設定方法が変更になったみたいでこの時点の動画通りにやってもエラーがでるため参考ページのようにファイルの記述を変更。
https://forum.unity.com/threads/trainerconfigerror-the-option-default-was-specified-in-your-yaml-file-but-is-invalid.912671/

https://docs.python.org/ja/3/tutorial/venv.html

terminal勉強用

https://reffect.co.jp/windows/full_understanding_mac

pwdコマンド:現在のディレクトリを表示

lsコマンド:現在のディレクトリにあるファイルを全部表示

whichコマンド:コマンドの実態がどこにあるか表示してくれる。ex) whick pwd

printenvコマンド:環境変数を一覧表示できる.ここにPATHがあるからpwdやlsコマンドをターミナルは理解できる。

echoコマンド:echo $PATH のようにprintenvで調べた環境変数を指定することでそれだけ見れる。

./ほにゃらら:./以下にあるファイルを指定して実行するよという意味。

どこのディレクトリからでもファイルを実行できるようにすることをPATHを通すと言う。

exportコマンド:export PATH=$PATH:/Users/mac/Documentsみたいな感じに指定するとPATHを追加できる.

このままではPATHは一時的に保存してるだけなので次に起動したときなくなってるので.bash_profileや.zshrcに保存する.これをシェルという. 自分がどのシェルを使ってるか調べるには

echo $SHELL と打ち込む。

https://gametukurikata.com/machinelearning/mlagents

//これでうまく行った

https://qiita.com/2019Shun/items/d811bbd470fc9cddcc3d

公式(hummingbirdとは別のプロジェクト) https://github.com/Unity-Technologies/ml-agents/blob/release_3_docs/docs/Getting-Started.md

conda activate ml-agents

で[ml-agents]に入ってpip3 install -e ./するとディレクトリにmlagents.egg-infoフォルダができる 自分の設定によって違う~/ml-agents/ml-agents 自分の設定によって違う~/ml-agents/ml-agents-envs の2つそれぞれのディレクトリに移動して

pip3 install -e ./

コマンドでファイル名.egg-infoフォルダを作る

unityのprojectSettingsをapi CompatibilityLevel .net4.xに変更するのも必要?確認

ディレクトリをyamlファイル(強化学習のための設定ファイル。UnityLearn参照)があるところまで移動させてから

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

この場合first3DBallRunという名前でresultフォルダの中にファイルができる

その中にある.onnxファイルをunityの中のBehaviorParametersのModelにドラッグアンドドロップする

自分のiphoneの中でもばっちり動いてくれた!

環境


active environment : ml-agents
active env location : /Users/人による/opt/anaconda3/envs/ml-agents
shell level : 1
user config file : /Users/人による/.condarc
populated config files : /Users/人による/.condarc
conda version : 4.9.2
conda-build version : 3.20.5
python version : 3.8.5.final.0
virtual packages : __osx=10.16=0
__unix=0=0
__archspec=1=x86_64
base environment : /Users/人による/opt/anaconda3 (writable)
package cache : /Users/人による/opt/anaconda3/pkgs
/Users/人による/.conda/pkgs
envs directories : /Users/人による/opt/anaconda3/envs
/Users/人による/.conda/envs
platform : osx-64
user-agent : conda/4.9.2 requests/2.24.0 CPython/3.8.5 Darwin/20.3.0 OSX/10.16
UID:GID : 501:20
netrc file : None
offline mode : False

See also