Colabortoryをローカルランタイムで使ってみる
2020年1月30日 改訂1
エラーが表示されjupyterがうまく実行されず、ipykernelをアップグレードした件について、最後に追記しました。
-------------------------------------
Google Colaboratoryは大変便利なのですが、90分と12時間の時間制限がたまに傷です。実はColaboratoryはGoogleが用意しているホストの他、ローカルのjupyterランタイムに接続して使うことができ、この場合は時間制限はありません(当たり前か)。
ちょっと試してみて、画像認識のように大量のデータを使うわけではなければ、GPUを持たないノートPCでも結構使い物になることがわかりましたので、使い方を紹介します。
1.注意事項
手っ取り早く環境構築するためWindows10ベースでjupyterローカルランタイムを構築しました。そのためGoogleのホスト(Linux)とは一部互換性がありません。例えば、以下のような違いがあります。
- Googleドライブをマウントできません。Googleドライブをマウントするライブラリgoogle.colabがLinuxでしか使えないライブラリを使っているためです。
- Open AI gymの拡張env、gym[Box2D]、gym[classic_control]等を使えません。Open AI gymの拡張envがWindows用に実装されていないためです(Open AI gymのWindows実装自体が実験的実装とされていて拡張部は実装されていません)。
- その他、Linux特有の処理は実行できません。Colaboratoryで実行している深層強化学習のソースも若干修正が必要になります。
2.インストール
(1)anaconda
pythonの実行環境anacondaをインストールします。jupyter、pythonの各種ライブラリも同時にインストールされます。pythonバージョン3.x用をインストールします。
ユーザ全員か、自分だけかを聞かれるので自分だけ(Just Me)としました。
(2)Pytorch
スタート-Anaconda-Anaconda Promptを起動します。Pytorhのホームぺージでインストール設定を選択するとインストールコマンドが表示されます。
例えばWindows、conda(Anacondaのこと)、GPU無しの場合は以下のコマンドをAnaconda Promptで実行します。
conda install pytorch torchvision cpuonly -c pytorch
(3)Open AI gym
以下のコマンドでインストールします。
pip install gym
(4)PyBullet
以下のコマンドでインストールします。
!pip install pybullet
以下のコマンドでインストールします。
pip install jupyter_http_over_ws
jupyter serverextension enable --py jupyter_http_over_ws
3.ローカルランタイム起動
- スタート-Anaconda-Anaconda Promptを起動します。
- 以下のコマンドでjupyterを起動します。googleからのアクセスを許可します。
jupyter notebook --NotebookApp.allow_origin='https://colab.research.google.com' --port=8888 --NotebookApp.port_retries=0
Prompt画面にColaboratoryからの接続用キーが表示されるのでコピーします。
コピーできない場合はPromptを右クリックしてプロパティーオプションー簡易編集モードにチェックをいれます。
4.Colaboratoryから接続する
Golaboratoryの接続-ローカルランタイムに接続
バックエンドURLに先ほどコピーした接続先をペーストして接続を押します。
5.Colaboratoryのソースリスト修正
深層強化学習のソースリストを例に修正箇所を記します。
(1)ファイルシステム
Googleドライブは使えないのでファイルの読み書きはローカルパソコン上に行います。カレントディレクトリは「ローカルディスク」-「ユーザ」-「ユーザ名」になります。
私はここにjupyterといったフォルダを作って使っています。この場合、ソースリスト中のファイル指定先を例えば次のように変更します。
'/content/drive/My Drive/model_Humanoid_SAC'
→ 'jupyter/model_Humanoid_SAC'
(2)ライブラリインストール
- apt-getは使えませんのでコメントアウトします。
- pip3をpipに変更します。pip3はpython3用pipの意味でpython2のpipと区別するためのものです。今回はpython3しかインストールされておらずpipがpython3にあてがわれていてpip3は使えません。
- 'gym[Box2D]'、'gym[classic_control]'は使えないのでコメントアウトします。
(3)Colaboratoryでの画像表示設定をコメントアウト
Linux用の命令でディスプレイドライバを持たないGoogleホスト用なのでコメントアウトします。Windowsではこれらの命令を実行しなくても画像データを生成してくれます。
#display = Display(visible=0, size=(1024, 768))
#display.start()
#import os
#os.environ["DISPLAY"] = ":" + str(display.display) + "." + str(display.screen)
これで時間を気にすることなく思う存分学習させることができます。
最近Colaboratoryの使い過ぎでGPUが割り当てられなくなっていたところですし、深層強化学習ならGPUなくてもたいして変わらないし。
6.追記(2020年1月30日)
jupyterにうまく接続できず、コンソールに次のようなエラー表示がされたことがあります。パソコンを再起動しても効果なし。
ValueError: signal only works in main thread
以下の通りipykernelをアップグレードしたら解消しました。
pip install --upgrade ipykernel
Humanoid flag runについて
ちなみにHumanoid flag run 全然報酬が上昇しません・・・。1日200万stepづつ学習は進んでるんですが・・・。いったい何日かかることやら。
では!