やってみた!

やってみた!

試したことを中心に、書評や興味のあること、思ったこととか

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

(5)GoogleのJupyter 拡張機能

 以下のコマンドでインストールします。

pip install jupyter_http_over_ws
jupyter serverextension enable --py jupyter_http_over_ws

 参考 Colaboratory – Google

3.ローカルランタイム起動

  • スタート-Anaconda-Anaconda Promptを起動します。
  • 以下のコマンドでjupyterを起動します。googleからのアクセスを許可します。
jupyter notebook --NotebookApp.allow_origin='https://colab.research.google.com' --port=8888 --NotebookApp.port_retries=0

  Prompt画面にColaboratoryからの接続用キーが表示されるのでコピーします。

f:id:akifukka:20200127215341j:plain

 コピーできない場合はPromptを右クリックしてプロパティーオプションー簡易編集モードにチェックをいれます。

4.Colaboratoryから接続する

 Golaboratoryの接続-ローカルランタイムに接続

f:id:akifukka:20200127215733j:plain

バックエンド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づつ学習は進んでるんですが・・・。いったい何日かかることやら。

では!