Jetson Nanoで遊ぶ機会があったのでその記録をだらだらと書き残す。 結局うまく行ってない
製品、外観の感想
こういうの
NVIDIA製。GPUを積んでいるRaspberry Piのようなもの
ヒートシンクがついている。
Official Documentらしきもの(pdf) ググって出てきた。
起動までの感想
microSDに書き込むOSイメージがでかい。ダウンロードが5GBで展開すると13GBくらいになる。 普段Alpine Linuxとか使ってるからそんなにいる?という気持ちになってしまう。 (しかも2MB/sくらいしか出ないからdisownして一晩放置した)
USB給電するには 5V 2.4A以上必要だが、iPad用の充電器や近くに転がっている充電器では起動処理で落ちた。
NVIDIAロゴが表示されて死ぬ。
起動することができれば、このコマンドで5Wモードに切り替えられるらしいが、それでも起動時は5Wを超えるようで、同様に死んだ。
$ sudo nvpmodel -m 1
戻すなら
$ sudo nvpmodel -m 0
今どちらなのか知るには
$ sudo nvpmodel -q NVPM WARN: fan mode is not set! NV Power Mode: MAXN 0
MAXN
が10Wモード、5W
が5Wモード
参考
RaspberryPi用の5V 2.5Aのmicro USB給電できるやつで給電すれば無事起動した。
起動してからの感想
こういうのはヘッドレスにしたいけど、初回設定がHDMI接続のディスプレイとUSB接続のキーボード、マウスが必要だった。
キーボードだけで行けるかと思いきや、タイムゾーンを選択するのがマウスじゃないと変更できなかった。 あとでターミナルで変更するならマウスがなくてもディスプレイとキーボードだけでいける。
起動してしまったら普通のUbuntuという感じ。 すでにsshdが起動しててパスワード認証が有効になってるので、そういう感じ。
avahi-daemonも勝手に動いているようで、macからならホスト名.local
ですぐ繋がった。
その他メモ
- GUIを止める
ランレベルを下げる。
sudo systemctl set-default multi-user.target
戻すなら
sudo systemctl set-default graphical.target
GUIじゃないときにstartx的なことをする
sudo systemctl start gdm3.service
How to boot Jetson Nano in text mode? - NVIDIA Developer Forums
これでメモリが500MBほどあく。もともとメモリは4GB。
- docker
標準でdockerはインストールされてた。アーキテクチャが aarch64なのでDocker Hubに上がってるイメージそのままだと大体動かない。
Dockerfileを持ってきてビルドすれば動く。
ただしmicroSDの容量をもりもり消費する。
- nvtop
GPUの情報も出力するhtopのようなものがあった。 dockerでビルドするには容量不足だった。 aptで入れるにもUbuntu 18.04だったので自分でビルドしないといけない。
- htop htopはこのDockerfileをビルドしてパスの通ったところにdocker起動コマンドをおいた
- 空き容量を増やす
Headless OS - NVIDIA Developer Forums
sudo apt purge whoopsie modemmanager && sudo apt autoremove
その他インストールされてるものを眺めて消してみる。
sudo apt list --installed
/dev/mmcblk0p1 15G 14G 107M 100% /
sudo apt purge chromium-browser desktop-file-utils gedit libreoffice-core media-player-info nautilus whoopsie-preferences && sudo apt autoremove
xorg - Remove packages to transform Desktop to Server? - Ask Ubuntu
sudo apt purge unity-session unity && sudo apt autoremove sudo apt purge ubuntu-session gdm3 && sudo apt autoremove
↓これはかなり空き容量があくが、必要なものも消えてそう。。。
sudo apt purge libx11.* libqt.* libgtk.* && sudo apt autoremove
jupiter-notebookを試す
tensorflow/tensorflow - Docker Hub
sudo docker pull tensorflow/tensorflow:latest-gpu-py3-jupyter
sudo docker run -it --rm --runtime=nvidia -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 tensorflow/tensorflow:latest-gpu-py3-jupyter
エラー出た
docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "process_linux.go:424: container init caused \"process_linux.go:407: running prestart hook 1 caused \\\"error running hook: exit status 1, stdout: src: /usr/lib/aarch64-linux-gnu/libnvcaffe_parser.so.5, src_lnk: libnvparsers.so.5.1.6, dst: /var/lib/docker/overlay2/126d559ef7a808c9d617677d09d57a364ea069fec87405ca062ff0b9a31eecdb/merged/usr/lib/aarch64-linux-gnu/libnvcaffe_parser.so.5, dst_lnk: libnvparsers.so.5.1.6\\\\n src: /usr/lib/aarch64-linux-gnu/libnvcaffe_parser.so.5.1.6, src_lnk: libnvparsers.so.5.1.6, dst: /var/lib/docker/overlay2/126d559ef7a808c9d617677d09d57a364ea069fec87405ca062ff0b9a31eecdb/merged/usr/lib/aarch64-linux-gnu/libnvcaffe_parser.so.5.1.6, dst_lnk: libnvparsers.so.5.1.6\\\\n src: /usr/lib/aarch64-linux-gnu/libnvinfer.so.5, src_lnk: libnvinfer.so.5.1.6, dst: /var/lib/docker/overlay2/126d559ef7a808c9d617677d09d57a364ea069fec87405ca062ff0b9a31eecdb/merged/usr/lib/aarch64-linux-gnu/libnvinfer.so.5, dst_lnk: libnvinfer.so.5.1.6\\\\n src: /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.5, src_lnk: libnvinfer_plugin.so.5.1.6, dst: /var/lib/docker/overlay2/126d559ef7a808c9d617677d09d57a364ea069fec87405ca062ff0b9a31eecdb/merged/usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.5, dst_lnk: libnvinfer_plugin.so.5.1.6\\\\n src: /usr/lib/aarch64-linux-gnu/libnvonnxparser.so.0, src_lnk: libnvonnxparser.so.0.1.0, dst: /var/lib/docker/overlay2/126d559ef7a808c9d617677d09d57a364ea069fec87405ca062ff0b9a31eecdb/merged/usr/lib/aarch64-linux-gnu/libnvonnxparser.so.0, dst_lnk: libnvonnxparser.so.0.1.0\\\\n src: /usr/lib/aarch64-linux-gnu/libnvonnxparser_runtime.so.0, src_lnk: libnvonnxparser_runtime.so.0.1.0, dst: /var/lib/docker/overlay2/126d559ef7a808c9d617677d09d57a364ea069fec87405ca062ff0b9a31eecdb/merged/usr/lib/aarch64-linux-gnu/libnvonnxparser_runtime.so.0, dst_lnk: libnvonnxparser_runtime.so.0.1.0\\\\n src: /usr/lib/aarch64-linux-gnu/libnvparsers.so.5, src_lnk: libnvparsers.so.5.1.6, dst: /var/lib/docker/overlay2/126d559ef7a808c9d617677d09d57a364ea069fec87405ca062ff0b9a31eecdb/merged/usr/lib/aarch64-linux-gnu/libnvparsers.so.5, dst_lnk: libnvparsers.so.5.1.6\\\\n src: /usr/lib/aarch64-linux-gnu/libcudnn.so.7, src_lnk: libcudnn.so.7.5.0, dst: /var/lib/docker/overlay2/126d559ef7a808c9d617677d09d57a364ea069fec87405ca062ff0b9a31eecdb/merged/usr/lib/aarch64-linux-gnu/libcudnn.so.7, dst_lnk: libcudnn.so.7.5.0\\\\n , stderr: exec command: [/usr/bin/nvidia-container-cli --load-kmods configure --ldconfig=@/sbin/ldconfig.real --device=all --compute --utility --require=cuda>=10.0 brand=tesla,driver>=384,driver<385 brand=tesla,driver>=410,driver<411 --pid=11040 /var/lib/docker/overlay2/126d559ef7a808c9d617677d09d57a364ea069fec87405ca062ff0b9a31eecdb/merged]\\\\n nvidia-container-cli: mount error: stat failed: /dev/nvhost-nvdec1: no such file or directory\\\\n \\\"\"": unknown.
sudo docker run -it --rm --runtime=nvidia \ -v $PWD/home:/home/$DOCKER_USER \ -v /usr/local/cuda-10.0:/usr/local/cuda-10.0 \ -v /usr/lib/aarch64-linux-gnu/tegra:/usr/lib/aarch64-linux-gnu/tegra \ -v /usr/lib/aarch64-linux-gnu/libcudnn.so.7.3.1:/usr/lib/aarch64-linux-gnu/libcudnn.so.7.3.1 \ -v /usr/lib/aarch64-linux-gnu/libcudnn.so.7:/usr/lib/aarch64-linux-gnu/libcudnn.so.7 \ --device=/dev/nvmap \ --device=/dev/nvhost-ctrl \ --device=/dev/nvhost-ctrl-gpu \ -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 tensorflow/tensorflow:latest-gpu-py3-jupyter
あかん。。。
docker を 18から19にする
19からGPUサポートされるようになった。
https://docs.docker.com/v17.09/engine/installation/linux/docker-ce/ubuntu/
curl -sSL https://get.docker.com/ | sh
/etc/docker/daemon.json
にデフォルトのruntimeをnvidiaにする記述を追加する。
{ “default-runtime”: “nvidia”, “runtimes”: { “nvidia”: { “path”: “nvidia-container-runtime”, “runtimeArgs”: [] } } }
$ sudo systemctl restart docker $ sudo docker info|grep untime Runtimes: nvidia runc Default Runtime: nvidia
動作確認
$ sudo docker run --rm -it jitteam/devicequery ./deviceQuery ... deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.0, CUDA Runtime Version = 10.0, NumDevs = 1 Result = PASS
あ、
Note that since Jetson Nano is ARM64 based, standard Tensorflow Docker images WILL NOT WORK!
jupyter再挑戦
sudo docker run --rm -it jitteam/jetson-nano-tf-gpu:latest bash
これをみるとTensorFlowが動いていればpipでJupyterNotebookを入れられるっぽい