コメント 0

Jetson nanoのJupyter Notebookのインストールと、外部からの接続設定

この間、GCP上にJupyter Notebookの環境を作る話を書きました。実は、今はGCPじゃなくてAzureで同じような環境が動いているのですが、家にはJetson nanoもあるので、これにもJupyter Notebookの環境を作って、外部から接続できるようにしていきたいと思います。

Google Cloud Platform(GCP)には、Always Freeという期限のない無料枠があります。その中にはスペックはそれほどではないものの、仮想マシンが含まれてお

ちょうどTensorFlowでモデルを作らないといけないお仕事ができたので、それをJetson nanoでやってみようという魂胆です。

anyenv + pyenvのインストール

例によって、anyenv + pyenv環境を作ります。これは、公式サイトのインストールガイドのままで問題ありません。

次にpyenvを使ってPythonをインストールしたいのですが、Jetson nanoではAnacondaやminicondaといったバイナリで配布されているPythonディストリビューションは使えないので、ここではPython 3.7.7をインストールします。

まず、必要なパッケージのインストールしてから、Pythonのインストールです。

sudo apt install libbz2-dev libsqlite3-dev libffi-dev

/home/{username}/devで普段作業しているので、このように。

pip install 3.7.7
cd ~/
mkdir dev
cd dev
pyenv local 3.7.7

Jupyter Notebookのインストール

Jupyter NotebookのインストールはこれだけでOKです。

pip install jupyter notebook

次に設定ファイルの作成とパスワードの設定を行います。

jupyter notebook --generate-config
jupyter notebook password

設定ファイルは、~/.jupyter/jupyter_notebook_config.pyにあるので、下記の編集を行います。
base_urlは、後で別サーバからリバースプロキシを設定したい(さらに別サーバ自体に入っているJupyter Notebookと区別したい)ので、/jetson/としました。

c.NotebookApp.allow_remote_access = True
c.NotebookApp.base_url = '/jetson/'
c.NotebookApp.open_browser = False
c.NotebookApp.ip = '0.0.0.0'

Jupyter Notebookの自動起動

GCPの時の記事にも書きましたが、/etc/systemd/system/jupyter.serviceを作成し、下記のようにします。{USER}{GROUP}については、適宜置き換えてください。

[Unit]
Description = Jupyter Notebook
[Service]
Type=simple
PIDFile=/var/run/jupyter-notebook.pid
ExecStart=/home/{USER}/.anyenv/envs/pyenv/shims/jupyter notebook
WorkingDirectory=/home/{USER}/dev
User={USER}
Group={GROUP}
Restart=always
[Install]
WantedBy = multi-user.target

あとは、下記のとおり。

systemctl start jupyter
systemctl enable jupyter

別サーバのNginxからリバースプロキシ

いま、ウチのネットワーク環境はこの記事に書いたようになっています。Jetson nanoは、この自宅ネットワークの中にあります。

昨日の投稿で、DS-Lite環境だと、IPv4アドレスが他のユーザと共有になり、一部のポートのみしか占有にならないという話をしました。 https://inoccu.com/bl

そこで、別サーバ(Azure VM)上で動いているNginxからリバースプロキシを設定して、Jetson nanoのJupyter Notebookを呼び出します。

location /jetson/ {                                                                                                                                   
    proxy_pass http://192.168.1.xxx:8888;                                                                                                               
}

Jetson nano自体がインターネット上から直接見えるなら、そのまま8888番ポートを公開するなり、Nginxのリバースプロキシの宛先をhttp://127.0.0.1:8888にすれば良いでしょう。

あとは、Nginxにこの設定を読み込ませれば、外部からJetson nanoのJupyter Notebookにアクセスできるようになります。

systemctl reload nginx

Follow me!

コメントを残す