【Unity】 ML-Agentsで”Previous data from this run ID was found. “と表示が出た時の対処&Run IDの上書き方法

投稿日:2022年1月22日
最終更新日:2022年1月22日

 

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の学習方法、ゲームへの応用例などが日本語で整理してまとめられているのでオススメの本。

 


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください