TX2にChainerを入れてJupyterで遠隔お勉強
JetsonTX2にChainerとJupyterを入れてブラウザで少し動かしてみたので環境構築のメモ。環境はJetPack3.1をインストールした状態。ほかは何も入れていない。
(Web検索するとTK1、TX1の情報が混ざって見つかるのでTX2での状況整理もかねて)
CuPy、Chainerのインストール
Chainer自体はこちら*1で紹介されている通りpipだけでインストール可能。ヘッダファイルやライブラリファイルへのパスを設定したりする必要は無し。
なお、CuPyのインストールはコンパイル?か何かをやっているようで結構時間がかかった。
$ sudo apt-get update
$ sudo apt-get insatll python-pip
$ sudo -H pip install -U pip
$ sudo -H pip install chainer cupy
Jupyter、matplotlibのインストール
ここからはこちら*2を参考にした。
matplotlibはこのあとお試し実行するコードで使うので一緒に入れる。Jupyter自体はmatplotlib不要。
なお、pipはsudoを付けないと/usr配下へファイルをインストールできずに失敗する。普通?は「--user」を付けてホームディレクトリ?に入れるっぽい。
$ sudo -H pip install jupyter
$ sudo apt-get install python-matplotlib
[2018/02/10 11:45追記&修正]
pipをsudoで打つときには、sudoの「-H」オプションを付けないとダメらしい。
jupyter_notebook_config.pyを生成する
以下のコマンドでホームディレクトリに.jupyter/jupyter_notebook_config.pyが生成される。
$ jupyter notebook --generate-config
Jupyter用のパスワード(ハッシュ値)を算出する
上記の参考URLだと省略されているが、passwd()関数?を実行したときにパスワードの入力を求められる。以下では「nvidia」をパスワードとして実行したときの出力を掲載している。
nvidia@tegra-ubuntu:~$ ipython
Python 2.7.12 (default, Dec 4 2017, 14:50:18)
Type "copyright", "credits" or "license" for more information.IPython 5.5.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.In [1]: from IPython.lib import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:cc27e93ff4f5:2c4a71d7af7e5c25b1ff971f932b6a3dde8493fb'In [3]: quit()
Jupyterの設定を変更する
ホームディレクトリに生成された.jupyter/jupyter_notebook_config.pyを編集する。
c.NotebookApp.password
⇒コメントアウトされているのを解除する
⇒「u''」となっている個所に先ほど算出したパスワードのハッシュ値を入れる。
⇒「c.NotebookApp.password = u'sha1:cc27e93ff4f5:2c4a71d7af7e5c25b1ff971f932b6a3dde8493fb'」c.NotebookApp.ip
⇒コメントアウトされているのを解除する
⇒「'localhost'」を「'*'」に変更するc.NotebookApp.open_browser
⇒コメントアウトされているのを解除する
⇒「True」を「False」に変更する
Jupyterの起動、ブラウザで接続
Jetson上で以下のコマンドを打つ。jupyterが動くのでそのまま動かしっぱなしにする。
$ jupyter notebook
ブラウザでJetsonの8888ポートにアクセスする。Jetsonとは別のPCからアクセスできる。
アドレスは自分の環境だと「http://192.168.10.8:8888」だった。
パスワードの入力画面が出るので先ほどpasswd()関数に入れたパスワードを入力するとログインできる。