つまりなにしたの?
使い慣れていくためのJetson Nanoのチュートリアルを順番に試していく。
オリジナル要素はほぼ無いので原文を当たれるならそのほうがいい。
その前に
毎回ディスプレイとキーボードとマウスを繋ぐのがめんどくさいので、
ホスト名を指定してSSHでつながるようにしておく。
自分でホスト名解釈してくれるavahi-daemonを導入する。
(ここはディープもラーニングも関係ないコンピュータとしての設定)
$ sudo apt-get install avahi-daemon $ hostname my-jetson # ここはインストール時に決めたホスト名になる
SSHは各家庭のポリシーに従ってください。
jetson-inferenceを使えるようにする
やることは
github.com
のまま。
パッケージの準備
gitとcmakeが必要
$ sudo apt-get update $ sudo apt-get install git cmake tree # ここでtreeはBlogようにディレクトリ構造を可視化するために入れた。
リポジトリの準備
$ git clone https://github.com/dusty-nv/jetson-inference $ cd jetson-inference $ git submodule update --init
CMakeでビルドしていく
$ mkdir build $ cd build $ cmake ../ # # めっちゃログが流れる # $ make $ sudo make install
Jetson Nanoはaarch64ディレクトリの中にビルドされて入ってくる。
build/ ├── aarch64 │ ├── bin │ │ └── networks -> /home/ensekitt/dev/jetson-inference/data/networks │ ├── include │ └── lib # 以下つづく
ImageNetを使った画像のクラス分類をやってみる(動作確認)
めちゃくちゃ親切なことに実行ディレクトリに、分類するべき写真まで入れてくれている。
情報量が0なので動作確認のために実行する。
$ cd jetson-inference/build/aarch64/bin $ ./imagenet-console orange_0.jpg output_0.jpg # ずらずらっと実行結果が出て class 0950 - 0.979228 (orange) class 0951 - 0.020643 (lemon) # AI < 絶対オレンジだよ、レモンだったら木の下に埋めて貰っても構わないよ! # などといい出す
ほんとにGPUが動いてるの?
ほんとにGPU動いてるの?1枚のJPGだし実はCPUでやっているんじゃないの??
というわけでリソースをモニタリングしながらさっきと同じことをしてみる。
*1
ターミナルを2窓(それぞれShell1, Shell2とする)開いてJetson Nanoに接続する。
(Screenとかtmuxを使っても良いと思う)
Shell1
$ tegrastats --interval 1000 # ここにリソースの利用量などが1000ミリ秒毎に表示される(必要に応じて変更できる) # 以下整形済 RAM 907/3965MB (lfb 251x4MB) # RAMの利用状況 CPU [2%@102,0%@102,0%@102,0%@102] # CPUの利用状況 EMC_FREQ 0% # 外部メモリコントローラの動作周波数 GR3D_FREQ 0% # GPUの動作周波数 PLL@25C CPU@29.5C PMIC@100C GPU@29C AO@39C thermal@29C POM_5V_IN 1030/1033 POM_5V_GPU 0/0 POM_5V_CPU 118/122
tegrastatsのドキュメントはこのフォーラムからダウンロードした
https://devtalk.nvidia.com/default/topic/1035340/tegrastats-documentation-jetpack-3-2/
Shell2
./imagenet-console orange_0.jpg output_0.jpg
ここはさっきと同じ
出力結果
RAM 938/3965MB (lfb 226x4MB) CPU [1%@102,0%@102,0%@102,0%@102] EMC_FREQ 0% GR3D_FREQ 0% PLL@26.5C CPU@31C PMIC@100C GPU@30C AO@40C thermal@30.25C POM_5V_IN 1030/1030 POM_5V_GPU 0/0 POM_5V_CPU 118/118 RAM 938/3965MB (lfb 226x4MB) CPU [2%@102,1%@102,0%@102,0%@102] EMC_FREQ 0% GR3D_FREQ 0% PLL@26C CPU@30.5C PMIC@100C GPU@30C AO@40.5C thermal@30.5C POM_5V_IN 1030/1030 POM_5V_GPU 0/0 POM_5V_CPU 118/118 RAM 1132/3965MB (lfb 214x4MB) CPU [90%@1428,5%@1428,4%@1428,11%@1428] EMC_FREQ 0% GR3D_FREQ 22% PLL@27.5C CPU@33C PMIC@100C GPU@31C AO@41C thermal@31.75C POM_5V_IN 2778/1612 POM_5V_GPU 115/38 POM_5V_CPU 1078/438 RAM 1308/3965MB (lfb 200x4MB) CPU [39%@1428,69%@1428,3%@1428,4%@1428] EMC_FREQ 0% GR3D_FREQ 36% PLL@27C CPU@32C PMIC@100C GPU@31C AO@40.5C thermal@31.75C POM_5V_IN 2778/1904 POM_5V_GPU 77/48 POM_5V_CPU 1080/598 RAM 1507/3965MB (lfb 194x4MB) CPU [35%@1428,15%@1428,53%@1428,10%@1428] EMC_FREQ 0% GR3D_FREQ 20% PLL@27.5C CPU@31.5C PMIC@100C GPU@30.5C AO@41C thermal@31.5C POM_5V_IN 2404/2004 POM_5V_GPU 77/53 POM_5V_CPU 851/649 RAM 1555/3965MB (lfb 197x4MB) CPU [57%@1428,4%@1428,4%@1428,36%@1428] EMC_FREQ 0% GR3D_FREQ 4% PLL@27C CPU@33C PMIC@100C GPU@31C AO@41C thermal@31.25C POM_5V_IN 2774/2132 POM_5V_GPU 308/96 POM_5V_CPU 886/688 RAM 946/3965MB (lfb 225x4MB) CPU [90%@1428,0%@1428,10%@1428,2%@1428] EMC_FREQ 0% GR3D_FREQ 0% PLL@27C CPU@32.5C PMIC@100C GPU@31C AO@41C thermal@32C POM_5V_IN 2705/2214 POM_5V_GPU 38/87 POM_5V_CPU 1080/744 RAM 939/3965MB (lfb 225x4MB) CPU [4%@102,1%@102,1%@102,7%@102] EMC_FREQ 0% GR3D_FREQ 0% PLL@26C CPU@31C PMIC@100C GPU@30C AO@41C thermal@30.75C POM_5V_IN 1030/2066 POM_5V_GPU 0/76 POM_5V_CPU 118/666
GR3Dを見ると0%から徐々に36%まで上がってまた0に戻っていくのがわかる。
(HDMIになにかつないでいるとこうはならないかも)
どうやら本当にGPUを使っているらしい。
*1:オリジナル要素はもうここくらいしかない。