見出し画像

toio と Unity ML-Agents ではじめるロボットの強化学習 (2) - 学習の高速化

スタンドアロンアプリ化した学習環境の複数同時起動で、学習の高速化を行います。

【最新版の情報は以下で紹介】

・Unity 2019.4.5f1
・UniTask 2.0
・toio SDK for Unity v1.0.2
・Xcode 12.1
・Unity ML-Agents Release 9

前回

1. 学習の高速化

前回は、Unityエディタ上で学習しました。これでも学習可能ですが、時間がかかります。今回は、スタンドアロンアプリ化した学習環境の複数同時起動で、学習の高速化を行います。

2. 学習環境のスタンドアロンアプリ化

「toio SDK for Unity」はWindows/Macのスタンドアロンアプリの出力に対応していません。そこで、「toio-sdk/Scripts」下のスクリプトの「#defineディレクティブ」を書き換えることで、学習環境をスタンドアロンアプリとして出力できるようにします。

 #if UNITY_EDITOR

 ↓

 #if (UNITY_EDITOR || UNITY_STANDALONE)

「toio SDK for Unity v1.0.2」の場合は、以下が修正対象になります。

・CubeConnector.cs
・CubeReal.cs
・MatEditor.cs
・NearestScanner.cs
・NearScanner.cs

メニュー「Edit → Project Settings → Player → Fullscreen Mode」で「Windowed」を指定し、ウィンドウ表示にします。

画像2

メニュー「File → Build Settings」の「Platform」で「PC, Mac & Linux Standalone」を選択し、「Build」ボタンでビルドします。

画像1

スタンドアロンアプリ(HelloToio.app)が出力されます。

3. スタンドアロンアプリ化した学習環境の複数同時起動

スタンドアロンアプリ化した学習環境の複数同時起動して学習するコマンドは、次のとおりです。

$ mlagents-learn config/sample/HelloToio.yaml --run-id=HelloToio-ppo-2 --time-scale=1 --env=HelloToio --num-envs=8
画像3

今回は8個のスタンドアロンアプリを同時起動しています。結果は、次のとおりです。平均報酬1.0になるまでステップ数は同じ(左グラフ)ですが、時間は半分以下(右グラフ)になりました。

画像4

4. スタンドアロンアプリ化した学習環境の複数同時起動 + グラフィックなし

「スタンドアロンアプリ化した学習環境の複数同時起動 + グラフィックなし」による学習も試してみます。

$ mlagents-learn config/sample/HelloToio.yaml --run-id=HelloToio-ppo-3 --time-scale=1 --env=HelloToio --num-envs=8 --no-graphics

結果は、次のとおりです。平均報酬1.0になるまでステップ数は同じ(左グラフ)ですが、時間は若干ですが高速(右グラフ)になりました。

画像5

・オレンジ : Unityエディタでの学習
・青 : スタンドアロンアプリ化した学習環境の複数同時起動 による学習
・赤 : スタンドアロンアプリ化した学習環境の複数同時起動 + グラフィックなし による学習



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