機械学習をクラウドで実行できるGoogle Colab
機械学習を行うのに、メモリやCPU/GPUを増強が必須ですが、Googleがブラウザ上で動作するJupyter notebook環境Google Colabを無料でリリースしたことで、機械学習の実行がとても容易になりました。
正直、非常に重い機械学習でなければGoogle Colabで十分です。
Google Colabの問題点は制限時間
「Google Colabが最強」と思うかもしれませんが、問題点もあります。それが制限時間です。
- ノートブックのセッションが切れてから90分経過
- 新しいインスタンスを起動してから12時間経過
という2つの制限時間があります。
2つ目の12時間については、学習データや中間データをGoogle Driveに一時的に格納することで、学習を再開することが可能です。
また、1つ目の90分については、定期的にブラウザでアクセスすることで継続することが可能です。しかし、実行中のノートブックを90分ごとにリロードしなければならないのでかなり面倒です。
モニタリングツールHyperdashで90分の制限時間を回避
90分の時間制限を回避する方法として、ローカルPCからColabのノートブックにアクセスするスクリプトを作成する方法があります。ですが、これは自分のスクリプトを実行するためにローカルPCを常時起動しておく必要があります。これだと少々面倒ですよね?
スクリプトを作らなくても回避する方法がHyperdashです。Hyperdashはモニタリング機能のサービスで、Hyperdashが定期的にログをアプリに送ることで90分の制限時間を回避します。
スマートフォンのアプリを開くと下記のようにモデルの一覧が表示されます。
モデルの1つを開くと、下記のようにノートブックに出力されるはずのログがHyperdash上に出力されます。
Hyperdashの記述
個別にログ出力をする場合
Hyperdashを実行するには以下の記述が必要です。
- インストール&読み込み
- アカウント入力
- Experimentの初期化
- ログの出力
- Experimentの終了
まず最初に、pipでインストールします。次に、ユーザー登録を行いますが、登録はメールアドレスかGithubのアカウントでの認証の2種類があります。Githubのアカウントで認証する場合、ブラウザで認証ページが開かれるのでそこで承認し、出力されたURLをノートブック上にペーストします。
!pip install hyperdash
from hyperdash import monitor_cell
!hyperdash signup --github
!hyperdash signup --email
続いて、最初にExperimentオブジェクトを生成します。
そして、繰り返し実行される箇所でmetric()を呼びます。下記の例のkey ,value がHyperdashに送られて、ログ出力されます。
最後に end()でモニタリングを終了します。途中でエラー等でノートブックがこのendまでたどり着かずに終了してしまうと、Hyperdashアプリではいつまでもログの出力待ち状態となります(一定時間が経過すると終了しますがかなり待たされます)ので、注意しましょう。
from hyperdash import Experiment
exp = Experiment(namae)
:
# 機械学習コード
exp.metric('key', value)
:
exp.end()
ループ以外で実行する場合
機械学習等で明示的にループ処理を書かなくても実際には繰り返し処理が行われるケースがあります。そのような場合は、%%monitor_cell でHyperdashにログを送ります。model.fit(verbose=1)などでログ出力をする際に、自動的にHyperdashへ送られます。
from hyperdash import Experiment
%%monitor_cell "Experiment XXX"
:
# 機械学習コード
:
しかし、こちらの場合、”Buffered data was truncated after reaching the output size limit.”というアラートが出力されることがあります。これが発生しても学習自体は続きますが、これ以降はログが出力されません。
コメント