MLの話題が続きますが、Jetson Nanoを買ったので、遊んでみます。
とりあえずはTF1.5 + Kerasが動かせるとこまで目指していきます。
SDカードを書いて初期セットアップするところまでは割愛です。公式を見ればさして嵌るところは無いと思います。セットアップはJetPack4.6で行いました。
まずはpython2がデフォルトは気に入らないので3をデフォルトにします。
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100 $ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150 $ python --version Python 3.6.9
次に必要そうなツールを入れていきます。
$ sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran $ sudo apt-get install python3-pip $ sudo pip3 install -U pip testresources setuptools==49.6.0 $ sudo apt-get install libfreetype6-dev pkg-config $ sudo apt-get install graphviz graphviz-dev $ sudo pip3 install jetson-stats
次に仮想環境を作ってTensorFlowとKerasをセットアップします。
$ python -m venv .venv $ source .venv/bin/activate (.venv) $ pip3 install -U --no-deps numpy==1.19.4 future==0.18.2 mock==3.0.5 keras_preprocessing==1.1.2 keras_applications==1.0.8 gast==0.4.0 protobuf pybind11 cython pkgconfig (.venv) $ pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v46 tensorflow==1.15.5 (.venv) $ pip3 install keras==2.3.1 (.venv) $ pip3 install matplotlib==2.2.5 opencv-python pydot (.venv) $ deactivate
これで概ね使えるようになったはずです。
あとはスクリプトを動かすときは、仮想環境の立ち上げと、変数のセットが必要です。以下でやります。
$ source .venv/bin/activate (.venv) $ export OPENBLAS_CORETYPE=ARMV8
とりあえずこれで1.15.5で書いたのコードは動くようになりました。
ただメモリはシステム共有で4GBしかないので、バッチサイズを下げたりする必要はありました。
P106(1280 CUDA Core)でバッチサイズ=32が0.4秒程度のモデルをJetson(128 CUDA Core)ではバッチサイズ=1で0.6秒ぐらいなので、まあこんなもんかなぁって言ったところです。GPUクロックやメモリの帯域も全然しょぼいので仕方ないです。
ただモデルは小さければ動くのがわかったので、小規模な実験はJetsonでやれそうです。