【DL、A3C+、OHL、Montezuma】評価環境をGCPに統一
DeepMind社のA3C+に独自機能(OHL:On-Highscore-Learning)を組込んだプログラムで、Atari2600の最難関レベルゲームMontezuma's Revenge*1の評価を継続中です。
自宅のデスクトップPCでUbuntuをDual Bootした環境で評価していましたが、評価中はデスクトップPCをWindowsで立ち上げられず不便なため、これからはGoogle Cloud Platform(GCP)に環境を統一することにしました。
以前の記事で書きましたように、GCPは無料枠内で、各リージョン(5つ)ごとに8CPUまで使え、2か月の範囲で合計$300まで無料なので、結構使い出があります。
当方がgithubにupしたスクリプトを使えば、直ぐに評価環境が構築でき、また、1つ環境を作れば、スナップショットを取って、スナップショットから新しいインスタンスを作ることで、他のリージョンに環境を簡単にコピーできます。
今のところ、下記のように、4つのリージョンを使って評価中です。
各マシンでの評価状況がすぐに確認できるように、下記のスクリプトを各マシンでnohupで動かし、見たいデータを/tmp直下に定期的(60秒毎)作成するようにしています。これにより、各マシンの/tmp/log.*を自分のPCのコピーするだけで、評価状況が直ぐに分かります。
#!/bin/bash if [ $# -ne 1 ]; then echo "Usage: $0 log-file" exit 1 fi while true do cp $1 /tmp grep Average $1 |tail -20 > /tmp/$1.avg python plot.py $1 --save mv $1.png /tmp sleep 60 done
全評価マシンの/tmp/log.*をローカルマシンへにコピーする処理もスクリプト化しておけば、スクリプトを一回走らせるだけで、全ての評価状況が得られます。下記がスクリプト例です。Windowsでも、gitのbash環境で走らせれば動きます(当方も、そのように使ってます)。
#!/usr/bin/bash #上記はgitのbash環境でのbashのパス hostips=(ホスト1のIPアドレス ホスト2のIPアドレス ホスト3のIPアドレス ホスト4のIPアドレス ) file='/tmp/log*png' key=キーファイル uid=gcpのuserid for (( i = 0; i < ${#hostips[@]}; ++i )) do hostip=${hostips[$i]} echo "scp from $hostip file=$file" scp -i $key "$uid@$hostip:$file" . done
以上、評価環境をGCPに統一することにより、評価がだいぶ楽になりました。
ただ、途中結果を見て、学習曲線が下降し始めると、気になってパラメーターを変えたくなります(例えば下記)。同じパラメーターで何STEPSまで試して見極めるのが良いか、判断が難しいですね。
評価用コード
下記に評価用コードをupしていますので、興味のある方は、ぜひ試してください。パラメーターがかなり沢山あるので、パラメーターの設定次第で、平均スコアがかなり上昇するはずです。試した結果は、下記githubのIssue#3(Experiment Results)にアップして共有して頂けると、お互いに比較ができるので、楽しく評価できると思います。なお、今のところ、610点~710点ぐらいの平均得点が得られています。
github.com
*1:強化学習の対象としての最難関ということ