見出し画像

Unity ML-Agents Release 13 の変更点

Unity ML-Agents Release 13」がリリースされました。InputActuatorComponentとml-agentsのプラグインシステムが追加されました。そして、TensorFlowによる学習は廃止され、PyTorch必須になりました。

前回

1. パッケージのバージョン

「Unity ML-Agents Release 13」のパッケージのバージョンは、次のとおり。

・com.unity.ml-agents (C#) : v1.8.0
・com.unity.ml-agents.extensions (C#) : v0.1.0-preview
・ml-agents (Python) v0.24.0
・ml-agents-envs (Python) : v0.24.0
・gym-unity (Python) : v0.24.0
・Communicator (C#/Python) : v1.4.0

2. 新機能と改善点

◎ com.unity.ml-agents / com.unity.ml-agents.extensions
・「InputActuatorComponent」が追加されました。InputActionAssetから行動空間を生成できます。この機能を使用するには、Input System Package v1.1.0-preview.3以降が必要です。

◎ ml-agents / ml-agents-envs / gym-unity (Python)
・TensorFlowは削除されました。PyTorchを使用してください。
・mlagents-learnのプラグインシステムが追加されました。カスタムStatsWriter実装を定義し、学習中に呼び出すように登録できます。将来的には、より多くの種類のプラグインが追加される予定です。

3. マイナーな変更

◎ com.unity.ml-agents / com.unity.ml-agents.extensions (C#)
・ActionSpecコンストラクターがpublicになりました。以前は、コードからcontinuousとdiscreteの両方を使用してActionSpecを作成することはできませんでした
・StatAggregationMethod.SumをStatsRecorder.Add()に渡すことができるようになりました。これにより、TensorBoardに書き込まれるときに、値が(平均ではなく)合計されます。
・Playerで学習する時に、タイムスケールの上限(mlagents-learnの--time-scaleでの設定による)が削除されました。Editorでは、100にクランプする必要があります。
・IHeuristicProviderインターフェイスが追加されました。IActuatorsがAgentと同じようにヒューリスティック関数を実装できます。
・BasicとMatch3のサンプルがActuatorを使うように更新されました。
・com.unity.ml-agents.extensionsのクラスの名前空間とファイル名を変更しました。
・VectorSensor.AddObservation(IList <float>)が追加され、VectorSensor.AddObservation(IEnumerable <float>)が非推奨になりました。IList版は、追加のメモリ割り当てを生成しないため、推奨されます。
・ObservationWriter.AddList()が追加され、ObservationWriter.AddRange()が非推奨になりました。AddList()は、追加のメモリ割り当てを生成しないため、推奨されます。
・Barracudaのバージョンが1.3.0になりました。
・ActuatorComponent.CreateActuatorsが追加され、非推奨のActuatorComponent.CreateActuatorが廃止されました。デフォルトの実装では、ActuatorComponent.CreateActuatorを配列でラップし、それを返します。 
・InferenceDevice.Burstが追加されました。BarracudaのBurstバックエンドを使用して実行できます。

◎ ml-agents / ml-agents-envs / gym-unity (Python)
・TensorBoardは、環境報酬をスカラーとヒストグラムの両方としてログに記録するようになりました。
・デフォルトのtorch.deviceを設定する--torch-deviceコマンドラインオプションをmlagents-learnに追加しました。
・--cpuコマンドラインオプションは削除されました。--torch-device = cpuを使用して、CPU学習を強制します。
・mlagents_env APIが変更され、BehaviorSpecにObservationSpecのリストを含むobservation_specsプロパティが追加されました。ObservationSpecの詳細については、こちらを参照してください。

4. バグ修正

◎ com.unity.ml-agents (C#)
・GrpcExtensions.csで廃止された列挙型の使用に関するコンパイル警告を修正しました。 
・GraphicsDeviceがnullの場合、CameraSensorはエラーをログに記録するようになりました。
・ActuatorManager.UpdateActionArray()の不要なメモリ割り当てを削除しました。
・SensorShapeValidator.ValidateSensors()の不要なメモリ割り当てを削除しました。
・SideChannelManager.GetSideChannelMessage()の不要なメモリ割り当てを削除しました。
・推論中に発生したいくつかのメモリ割り当てを削除しました。 テストシーンでは、これにより割り当てられるメモリの量が約25%削減されました。
・離散行動による推論中に発生したいくつかのメモリ割り当てを削除しました。 
・タイマーファイルを書き込むときに、アクセス許可エラーを適切にキャッチします。 
・学習の初期化およびシャットダウン中の予期しない例外がログに記録されるようになりました。 「noisy」ログが表示された場合は、お知らせください。 

◎ ml-agents / ml-agents-envs / gym-unity (Python)
・RunOptionsがpickleを介して逆シリアル化されたときに例外が発生するバグを修正しました。
・マルチ環境の学習中に動作が発生する可能性がある場合にクラッシュを引き起こす可能性があるバグを修正しました。
・連続行動のエントロピーの計算を修正しました。
・UnityEnvironmentが完全なタイムアウトを待機する原因となるバグを修正しました。
・接続を閉じずに実行可能ファイルがクラッシュした場合にUnityEnvironmentがタイムアウト期間全体を待機し、誤解を招くエラーメッセージを報告するバグを修正しました。 接続を待機している間、プロセスステータスを定期的にチェックし、クラッシュした場合により適切なエラーメッセージを表示するようになりました。
・--env-argsオプションの-logfileオプションをmlagents-learnに渡すと
上書きされなくなりました。
load_weights関数がGhostTrainerで不必要に頻繁に呼び出され、学習の速度が低下していました。 

次回



この記事が気に入ったらサポートをしてみませんか?