google colaboratoryを使うと無料で学習させられるので、セッションが途切れないようにするためにブラウザを起動する必要はありますが、自分のローカルPCのリソースを利用したくないときに便利です。
UnityのML-Agents(に限らないですが)の学習をさせる上で、こうすると便利だなと思ったことをまとめてみました。
ML-Agentsのinstall
!git clone https://github.com/Unity-Technologies/ml-agents.git -b 0.8.1
!pip install ./ml-agents/ml-agents/
versionは各自使っているバージョンをあわせてください。
Google Driveをマウントする
せっかく長い時間学習させたのに成果物をダウンロードする前にセッションが切れて初期化、、、なんてことがあると悲しいですよね。
また、実行を停止したときに、学習済みモデルが生成される前に処理が終わってしまうこともあります。
そこで、Google Driveをマウントして逐一ドライブ上で保存する ようにしましょう。
from google.colab import drive
drive.mount('/content/drives') #もしくは好きなパス
これをセル上で実行するだけで、認証画面に飛び、コードを入力するだけでドライブをマウントできます。これで/content/drives/"My Drive" 以下にGoogle Driveの内容がマウントされている状態になるので、
%cd /content/drives/"My Drive"/
とかでディレクトリを変えて内部で実行すると、学習途中のファイルが保存されます。
頻繁に保存するために、mlagents-learnを実行する際のオプションで--save-freq=10000
みたいに頻度を上げておくと不慮の事故を避けられるのでおすすめです。
envとconfig.yamlをgithubで管理する
ML-Agentsで学習させる上でenvをbuildし直したり、configファイルをいじると思うのですが、それらをまとめてgithub上で管理しておき、Colab上で毎回クローンして利用すると便利です。
Tensorboardを利用する
別のノートブックを作成して、学習させているランタイムと同じランタイムを指定して次のコードを実行すると、tensorboardがcolab上で出力されて便利です、と言いたいところなのですが、、、
%load_ext tensorboard.notebook
%tensorboard --logdir /content/drives/"My Drive"/summaries
セッションがクラッシュして、リアルタイムに見ることが私が試した限りでは今の所できませんでした。
こちらの記事によると同じランタイムに複数のノートブックで使えそうなのですが、どうも上手くいきません。
tensorboardが見れないとRewardの平均と標準偏差からしか学習の進行状況がわからないのでだいぶ不便です。
どなたかうまいやり方をご存知でしたらぜひ教えてくださいませ、、、