はじめに

Jetson NanoにPyTorchをインストールしようとしたところ、
多少ハマったので、備忘の意味もこめて投稿します。
今では元気にPytorch & detectron2が動いています。
(dockerでインストールした方が早かった気がします。)

目次

    1. 前提

 

    1. venv インストール&設定

 

    1. jupyter-notebook インストール&設定

 

    1. PyTorch インストール&設定

 

    1. detectron2 インストール&実行

 

    まとめ

前提

Jetson Nanoはanacondaが使えないので、venvとjupyter notebookを個別インストールした上で、
仮想環境上のノートブックに別PCから接続できるように設定します。
その上で、PyTorchとdetectron2をインストールをすることで、
他の作業用PCからブラウザで遊べる推論環境の構築を目指します。

環境

    • NVIDIA Jetson Nano

 

    • CUDA: 10.2

 

    • JetPack: 4.4

 

    • KernelVersion: 4.9.140-tegra

 

    • python2: 2.7.17

 

    python3: 3.6.9

venv インストール&設定

    venv インストール

venvが入っていなかったので、インストールします。一行。

user@hostname:~$ sudo apt install python3-venv
    使い方 (ex. new_envという名前の仮想環境を作成 → activate)
user@hostname:~$ python -V
Python 2.7.17
user@hostname:~$ python3 -V
Python 3.6.9
user@hostname:~$ python3 -m venv new_env
user@hostname:~$ source new_env/bin/activate
(new_env) user@hostname:~$ 
(new_env) user@hostname:~$ python -V
Python 3.6.9

※deactivateするとき
(new_env) user@hostname:~$ deactivate
user@hostname:~$ 

以下、作成した仮想環境(new_env)にactivateした状態で作業しています。

jupyter-notebook インストール&設定

    jupyter-notebook インストール

主にこの記事を参考にさせていただきました。
https://vivinko.com/inoue/blog/2020/06/21/113534.html

うっかり必要なパッケージのインストールを忘れて思考停止で次のコマンドを打つと、
pipちゃんに、めちゃくちゃ文句言われます。

~$ pip install jupyter notebook

てことで、先に必要なパッケージのインストール。
(これを後回しにしたせいか、pyzmqが必要だのなんだの言われ、遠回りする羽目になりました。)
試行錯誤したので、結局何をすれば一発で通ったのかは分からないままですが、
先人の教えを見る限り、下のコマンドを実行していれば、たぶん大丈夫な気がします。

~$ sudo apt install libbz2-dev libsqlite3-dev libffi-dev python3-dev
~$ pip install jupyter notebook
    jupyter-notebook 設定

設定ファイルの作成、パスワードの設定、作業用ディレクトリの作成。

~$ jupyter notebook --generate-config
~$ jupyter notebook password
~$ mkdir ~/my-notebooks

設定ファイルの編集。

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

base_url = ‘/jetson/’とすることで、http://[JetsonのIPアドレス]:8888/jetson/でアクセスできるようにしています。
(他のデバイスのnotebookにもアクセスする予定なので、区別できるようにしています。)

    jupyter-notebookのサービス化(自動起動)

/etc/systemd/system/jupyter.serviceを作成し、以下の通り、編集します。
(venvを利用する場合の設定となっています。)
{USER}と{GROUP}は、自身のユーザ名とグループ名と置き換えて、
{ENV}はvenvで作成した環境名を入力して下さい。

[Unit]
Description = Jupyter Notebook
[Service]
Type=simple
PIDFile=/var/run/jupyter-notebook.pid
ExecStart=/bin/bash -c ". /home/{USER}/{ENV}/bin/activate;jupyter-notebook --notebook-dir=/home/{USER}/my-notebooks"
WorkingDirectory=/home/{USER}/my-notebooks
User={USER}
Group={GROUP}
Restart=always
[Install]
WantedBy = multi-user.target

venv環境下でサービス化するときのポイントは、
・ExecStartに、activate → jupyter-notebook 起動となるように記載すること
・jupyter-notebook起動時の–notebook-dirとWorkingDirectoryを一致させること
のようです。

後は、以下のコマンドで、jupyter.serviceの開始と自動起動設定。

~$ sudo systemctl start jupyter.service
~$ sudo systemctl enable jupyter.service

systemctl enable jupyter.serviceで、active (running)になっていればOKです。

PyTorch インストール&設定

必要なパッケージをインストールしてから、PyTorchをインストールします。

    opencv-python インストール
~$ pip install opencv-python
~~
No module named 'skbuild'

調べると、pipが古いときに言われる文句らしいので、
pipのアップデートをしてから、再度opencv-pythonインストール。

~$ pip install -U pip
~~
Uninstalling pip-9.0.1:
~~
Successfully installed pip-21.0.1

~$ pip install opencv-python

(pip-9.0.1…。そら文句言われるわ。アップデートの類は最初にしっかりしましょう…。)

    PyTorchインストール

NVIDIA公式のフォーラムを参考にインストールします。
PyTorchのversionはv1.7.0を選びました。

~$ wget https://nvidia.box.com/shared/static/cs3xn3td6sfgtene6jdvsxlr366m2dhq.whl -O torch-1.7.0-cp36-cp36m-linux_aarch64.whl
~$ sudo apt install python3-pip libopenblas-base libopenblas-dev libopenmpi-dev 
~$ pip install Cython
~$ pip install numpy torch-1.7.0-cp36-cp36m-linux_aarch64.whl

上記コマンドでインストールできるはずです。libopenblas-devを足しています。
もし、import torchした際に、Illegal instruction (core dumped)と言われたら
numpyのversionが1.19.5の時に起こる問題の可能性があるので、(参考URL)

~$ pip uninstall numpy
~$ pip install numpy==1.19.4

で、numpyのversionを下げてください。

    torchvision インストール

PyTorchのversionに合わせて、インストールします。
公式フォーラムには、PyTorch v1.7 – torchvision v0.8.1の記載があるのですが、
フォーラムに記載の方法では、v0.8.1をインストールできなかったため、
torchvisionはv0.8.0をインストールしていきます。

~$ sudo apt install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
~$ git clone https://github.com/pytorch/vision torchvision
~$ cd torchvision
~/torchvision$ git checkout v0.8.0
~/torchvision$ export BUILD_VERSION=0.8.0
~/torchvision$ python setup.py install

これで、PyTorchのインストールは完了です。

detectron2 インストール&実行

手元にdetectron2で作成したモデルがあるため、ついでにdetectron2もインストールします。

    detectron2 インストール

一行でインストール完了です。

~$ pip install 'git+https://github.com/facebookresearch/detectron2.git'
    detectron2 お試し
image.png
image.png
image.png
image.png
image.png

まとめ

Jetson NanoにPyTorch(& detectron2)をインストールできました。

公式フォーラムに、

You can now download the l4t-pytorch and l4t-ml containers from NGC for JetPack 4.4 or newer

の記載があるので、dockerで入れると一瞬だった気がしますが、気のせい、気のせい。

广告
将在 10 秒后关闭
bannerAds