Hello Wor.log

IT系大学生4人による備忘録のようなもの

hydrogenとリモート環境【python】

CPPXのXです。

hydrogenでリモートにあるjupyterに繋ぎたい!
というのをやっていきます。

hydrogenの説明とかは省きます。
エディタ上でインタラクティブにコードを実行してくれるすごいやつです。

環境

remote

jupyterの環境導入とかは省きます。

~/.jupyter/jupyter_notebook_config.py に以下を書きます。

c = get_config()

c.NotebookApp.ip = '*'
c.NotebookApp.password = u'sha1:***************'
c.NotebookApp.token = 'secret token'

c.NotebookApp.open_browser = False

c.NotebookApp.port = 9999

sha1:の後ろにはハッシュ値を入れます。

from IPython.lib import passwd
passwd('適当に')

のようにipythonで実行してハッシュ値を取得しておくといいです。

c.NotebookApp.ip = '*'の箇所ですが、does not appear to be an IPv4 or IPv6 addressみたいなエラーが出た場合、'*''0.0.0.0'としたら動きました。

configが書き終わったら、以下を打ってjupyterを動かします。

nohup jupyter notebook 2> /dev/null 1> /dev/null &

リモート側は以上です。

local

atomとか、hydrogenの環境導入は省きます。

hydrogenのsettingsページで、Kernel Gatewaysの項目に以下を書きます。

[
  {
    "name": "remote1",
    "options": {
      "baseUrl": "http://<ip address>:<port>/",
      "token": "<secret token>"
    }
  }
]

nameは、接続したいリモートサーバーを選ぶ時に表示される名前です。
ip address, portはjupyterの場所を書いておきます。
secret tokenはconfigに書いたものを書いておきます。

設定は以上です。
繋ぐ時は、コマンドパレットからHydrogen: Connect To Remote Kernelを実行するとリモートのjupyterに繋がります。

テスト

繋がってるか確認します。

リモート環境にGPUがあるので、それを見て確認してみます。

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

まず、通常通りローカルの環境を使ってみます。 f:id:cppx:20180705143326p:plain CPUだけしか認識されてないです。

リモートに繋いでみます。 f:id:cppx:20180705143430p:plain GPUが認識されてる!!