【Jetson nano】ラジコン自動運転開発日記(7)~Docker環境の構築~

ラジコン自動運転

はじめに

ラジコンにjetson nanoを搭載することで簡易的な自動運転車両*1(Jetracer)を作ることができます.

市販のJetracer*2は高額のため,安く車体が大きいものを活用して作成していきます.

今回はTensorFlow,PyTorch,onnxなどが一括で入っているNVIDIA NGC*3のDockerを使用します.

前提条件

機材

jetson nano

NVIDIA Jetson Nano 2GB デベロッパーキット (945-13541-0000-000)
「NVIDIA Jetson Nano 2GB デベロッパーキットでAIとロボットのパワーを発見しましょう。 小さくてパワフルで、誰にとっても低価格です。 つまり、教育者、学生、その他の愛好家がGPU加速されたNVIDIAソフトウェアスタック全体を使用して迅速かつ効率的なAIでプロジェクトを簡単に作成できます。これによ...

Jetpack

Jetpackは4.5系のものが入っています.

maki@maki-jetson2:~$ dpkg-query --show nvidia-l4t-core
nvidia-l4t-core 32.5.2-20210709090126

NVIDIA NGC

NVIDIA NGC*3が提供するL4Tは,TensorFlow,PyTorch,onnx,numpy,pandas,scipy,scikit-learn,JupyterLab などディープラーニングを含む機械学習で必要なパッケージがすべて含まれています.

file

NVIDIA NGC™ は,AI 技術者が AI ソリューションを開発するための GPU 最適化ソフトウェアのカタログを提供しています。また,モデルのトレーニングを行う NVIDIA Base Command,モデルをデプロイおよび監視する NVIDIA Fleet Command,独自の AI ソフトウェアに安全なアクセスと管理を行うための NGC Private Registry など,さまざまな AI サービスへのアクセスを提供しています。さらに,NVIDIA AI Enterprise をご利用のお客様は NGC ポータルからサポートをリクエストできます。

l4tのダウンロード

l4tは下記の通りに*4,Jetpackに対応したl4tをダウンロードします.

file

下記コマンドでダウンロードします*5

maki@maki-jetson2:~$ sudo docker run -it --rm --runtime nvidia --network host nvcr.io/nvidia/l4t-ml:r32.5.0-py3
Unable to find image 'nvcr.io/nvidia/l4t-ml:r32.5.0-py3' locally
r32.5.0-py3: Pulling from nvidia/l4t-ml
5000a6c32c5a: Pulling fs layer
8e855b69096a: Pulling fs layer
8db8dbbd4bb9: Pulling fs layer
833dc3235950: Pulling fs layer
f79d264135a3: Pulling fs layer
1c40f77bb35b: Pulling fs layer
1990ecf0bfb7: Pulling fs layer
c8ffbfd7f0aa: Pulling fs layer
ba785779122a: Pulling fs layer
024ce79b6790: Pulling fs layer
9b09da3b5483: Pulling fs layer
17f974a43cf9: Pull complete
211b56b73ff1: Pull complete
78aca4be1f3b: Pull complete
95f34310bbda: Pull complete
678c9d1557e9: Pull complete
ec17ad7cab01: Pull complete
08fb1eee5328: Pull complete
df804e245232: Pull complete
4f9a01a0e955: Pull complete
a44515425a95: Pull complete
cf055aaf10ad: Pull complete
844538a014b9: Pull complete
159036d408be: Pull complete
ae321b977e2f: Pull complete
ae4d2ced71ce: Pull complete
1bc11ebf8522: Pull complete
ef6ff4fc67ed: Pull complete
3b45df8b8d80: Pull complete
a1a094c74107: Pull complete
7400833e9fab: Pull complete
21608f9f63e2: Pull complete
50b80108db64: Pull complete
800ad6d6d249: Pull complete
a5297af96097: Pull complete
5d3a862a0013: Pull complete
418524dee780: Pull complete
Digest: sha256:af8155d948946e76fb398a93a726ee4e4f06a69574284a8bc8929f0731efdc61

難解な問題に直面

エラー文

ここですんなりrunできると思ったら下記の問題が発生.

maki@maki-jetson2:~$ sudo docker run -it --rm --runtime nvidia --network host nvcr.io/nvidia/l4t-ml:r32.5.0-py3
docker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: error adding seccomp filter rule for syscall clone3: permission denied: unknown.

解決方法

10以上のサイトを渡り歩いた結果,下記のコマンドで解決できました*6

maki@maki-jetson2:~$ wget https://launchpad.net/ubuntu/+source/docker.io/20.10.2-0ubuntu1~18.04.2/+build/21335731/+files/docker.io_20.10.2-0ubuntu1~18.04.2_arm64.deb
--2022-08-05 14:41:13--  https://launchpad.net/ubuntu/+source/docker.io/20.10.2-0ubuntu1~18.04.2/+build/21335731/+files/docker.io_20.10.2-0ubuntu1~18.04.2_arm64.deb
Resolving launchpad.net (launchpad.net)... 2620:2d:4000:1001::8003, 2620:2d:4000:1001::8004, 185.125.189.223, ...
Connecting to launchpad.net (launchpad.net)|2620:2d:4000:1001::8003|:443... connected.
HTTP request sent, awaiting response... 303 See Other
Location: https://launchpadlibrarian.net/530942037/docker.io_20.10.2-0ubuntu1~18.04.2_arm64.deb [following]
--2022-08-05 14:41:15--  https://launchpadlibrarian.net/530942037/docker.io_20.10.2-0ubuntu1~18.04.2_arm64.deb
Resolving launchpadlibrarian.net (launchpadlibrarian.net)... 2620:2d:4000:1001::8008, 2620:2d:4000:1001::8007, 185.125.189.229, ...
Connecting to launchpadlibrarian.net (launchpadlibrarian.net)|2620:2d:4000:1001::8008|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 27525924 (26M) [application/x-debian-package]
Saving to: ‘docker.io_20.10.2-0ubuntu1~18.04.2_arm64.deb’

docker.io_20.10.2-0ubuntu1~18 100%[=================================================>]  26.25M  5.77MB/s    in 5.9s

2022-08-05 14:41:22 (4.49 MB/s) - ‘docker.io_20.10.2-0ubuntu1~18.04.2_arm64.deb’ saved [27525924/27525924]

maki@maki-jetson2:~$ sudo dpkg -i docker.io_20.10.2-0ubuntu1~18.04.2_arm64.deb
dpkg: 警告: docker.io を 20.10.7-0ubuntu5~18.04.3 から 20.10.2-0ubuntu1~18.04.2 にダウングレードしています
(データベースを読み込んでいます ... 現在 178547 個のファイルとディレクトリがインストールされています。)
docker.io_20.10.2-0ubuntu1~18.04.2_arm64.deb を展開する準備をしています ...
docker.io (20.10.2-0ubuntu1~18.04.2) で (20.10.7-0ubuntu5~18.04.3 に) 上書き展開しています ...
docker.io (20.10.2-0ubuntu1~18.04.2) を設定しています ...
man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ..

l4t起動

無事に起動できました.

maki@maki-jetson2:~$ sudo docker run -it --rm --runtime nvidia --network host nvcr.io/nvidia/l4t-ml:r32.5.0-py3
allow 10 sec for JupyterLab to start @ http://localhost:8888 (password nvidia)
JupterLab logging location:  /var/log/jupyter.log  (inside the container)
root@maki-jetson2:/#

ここで,リモートのWindowsPCからJetsonのアドレス「http://maki-jetson2:8888」にアクセスし,パスワードは「nvidia」を入力したらLabが起動します.ここで適当なサンプルコードを実行した結果,無事に起動できました

file

フォルダのマウント

DockerのコンテナにJetsonの共有フォルダをマウントすることで,WindowsPCからDockerコンテナのファイルを触れるようにします.

下記コマンドでマウントします.

sudomaki@maki-jetson2:~$ sudo docker run -it --rm --runtime nvidia --network host  -v /home/share:/home/share nvcr.io/nvidia/l4t-ml:r32.5.0-py3

これで,JupyterLab上からフォルダを作成すると
file

Windows上で見ることができます.

file

おわりに

今回はL4tのダウンロードをして起動しました.また,共有フォルダをマウントすることでリモートのWindowsからJetsonのDockerコンテナにアクセスできるようにしました.

参考サイト

1 :Jetson最新情報やTPUとの比較
2 :JetRacer AI Kit
3 :NGC カタログ: GPU 最適化ソフトウェア ハブ - NVIDIA
4 :Machine Learning Container for Jetson and JetPack
5 :NVIDIA Jetson Nano 開発者キットに Docker を使ってディープラーニング・フレームワークをインストールする
6 :Docker isn’t working after apt upgrade

コメント

タイトルとURLをコピーしました