ML-Agentsの学習を実行したらエラー発生
Unity ML-AgentsのRelease18で、Pythonでこちらの公式のドキュメントに従って、以下のコマンド
# mlagents-learn config/ppo/3DBall.yaml --run-id=first3DBallRun
でコマンドを実行していたところ、以下のようなエラーが発生。
"Previous data from this run ID was found. " mlagents.trainers.exception.UnityTrainerException: Previous data from this run ID was found. Either specify a new run ID, use --resume to resume this run, or use the --force parameter to overwrite existing data.
初めてだったので少し焦ったが、エラーメッセージを読んでわかるようにrun IDがすでに存在しているとのこと。
どうやら前回実行した時からrun ID(first3DBallRun)を変えてなかったようだ。このrun IDを適当なもの(2nd3DBallRunとか)に変えて実行したところ、問題なく実行できた。
なお、pythonで学習を実行してから時間が立ちすぎると、以下のようなエラーメッセージが出てタイムアウトしてしまう。
mlagents_envs.exception.UnityTimeOutException: The Unity environment took too long to respond. Make sure that : The environment does not need user interaction to launch The Agents' Behavior Parameters > Behavior Type is set to "Default" The environment and the Python interface have compatible versions.
この場合もrun IDは保存されてしまうので、タイムアウト後にrun IDを変えずに学習を実行しても冒頭のエラーが出るので注意。
Run IDを上書きしたいときは?
同じrun IDを指定して上書きしたいときは、以下のように–forceをつけて学習を実行すれば強制的に上書きされる。
# mlagents-learn config/ppo/3DBall.yaml --run-id=first3DBallRun --force
yamlファイルをいじって色々試すときなどはいちいちrun IDを変えるもの面倒なので、–forceをつけてやると良さそう。
参考文献
以下の本を読みつつML-Agentsを勉強してます。一部環境構築の記載などは古いけど、強化学習の概念やML-Agentsの学習方法、ゲームへの応用例などが日本語で整理してまとめられているのでオススメの本。