1
2

More than 3 years have passed since last update.

Jetson nanoで「現場で使える!TensorFlow開発入門」のサンプルを動かす

Last updated at Posted at 2020-12-28

現場で使える!TensorFlow開発入門 Kerasによる深層学習モデル構築手法

書影

この本を写経したりサンプルをダウンロードして動かそうとしたのだけど、 tensorflowのバージョンが1.15のため、Nvidia NGCが提供する NVIDIA L4T MLでは素直に動かせなかった。

なので、tensorflow 1.15のサンプルをほぼそのままで動かせるよう Docker環境を構築した。

※ 今 NVIDIA L4T MLを確認したら "* TensorFlow 1.15"って書いてた...最初に動かしたときは確かに 2.x系になっていたはずなのだが。といってもせっかく作った Dockerfileがもったいないので、学習の記録として記事に残しておくことにする (opencvなんかも必要だし)。

準備

Jetson nanoに swapを追加しないとビルドに失敗した。6GBくらいのスワップファイルを作っておく。
https://qiita.com/n-yamanaka/items/dd82996312ab333fe9b2

Dockerfile

githubに上げた。
https://github.com/Nunocky/JetsonNano_Docker_Containers

FROM nvcr.io/nvidia/l4t-tensorflow:r32.4.4-tf1.15-py3

RUN apt-get update
RUN apt-get install -y fonts-ipaexfont
RUN apt-get install -y libffi-dev
RUN apt-get install -y python-pip
RUN apt-get install -y python3-pip
RUN pip3 install -U pip
RUN pip3 install notebook
RUN pip3 install matplotlib
RUN pip3 install pandas
RUN pip3 install scipy
RUN pip3 install opencv-contrib-python

RUN mkdir /tf
RUN chmod 777 /tf

ADD jupyter_notebook_config.py /root/.jupyter/

CMD ["jupyter", "notebook"]

Dockerfileと同じ場所に jupyter_notebook_config.pyを用意する。
Jupyter notebookのパスワードは jetsonnano に設定した。 パスワードを変えたい場合は
ここを参考にすると良い。

jupyter_notebook_config.py
c.NotebookApp.notebook_dir = '/tf'
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
c.NotebookApp.password = u'argon2:$argon2id$v=19$m=10240,t=10,p=8$kDrfziXaxPvbrLZfP2oTKA$zSNR85lqmziWEVjx/ApauQ'    

ここまで出来たらビルド

sudo docker build -t tensorflow:1 .

matplotlib, opencvなどのビルドで数時間かかる。

実行

sudo docker run -it --rm --runtime nvidia --network host tensorflow:1

起動時に -v オプションでホストのディレクトリと dockerコンテナ上の /tf を関連付ければ作業記録を消さなくても済むが、それは dockerの基本の話なので割愛

tensorboardは Jetson nano上から docker execで実行。

sudo docker exec -it <container id> tensorboard --host 0.0.0.0 --logdir /tf/log --port 6006

注意

大量の画像を扱う 10章以降のサンプルはそのままでは ResourceExhaustedError が出て動かせないことがある。

その時はバッチやエポックの数を調整し、GPUに渡すデータの大きさを変えると良い。

深層学習とかでのtensorflowエラー「tensorflow.python.framework.errors_impl.ResourceExhaustedError: 2 root error(s) found. 」への対処

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2