2019-09-22

Jetson Nano でディープラーニング (1)

NVIDIA Jetson Nano 開発者キットは、組込み設計者や研究者、個人開発者がコンパクトで使いやすいプラットフォームに本格的なソフトウェアを実装して最先端の AI を活用できるようにするコンピューターで、64 ビット クアッドコア ARM CPU と 128 コアの NVIDIA GPU により 472 GFLOPS の演算性能を発揮します。

偶然 Amazon.jp で見つけて、9 月の後半三連休にセットアップしようと即注文してしまいました。使いこなせるようになるまでの試行錯誤をまとめていきます。

Jetson Nano 開発者キットとは

GPU Technology Conference (GTC) 2019 において、NVIDIA が発表した Jetson Nano 開発者キットは、組込み設計者や研究者、個人開発者がコンパクトで使いやすいプラットフォームに本格的なソフトウェアを実装して最先端の AI を活用できるようにするコンピューターです。Jetson Nano は 64 ビットクアッドコア ARM CPU と 128 コアの NVIDIA GPU を搭載しています。

新たにリリースされた JetPack 4.2 SDK は、Ubuntu 18.04 をベースとした Jetson Nano 向けの包括的なデスクトップ Linux 環境を実現し、NVIDIA CUDA Toolkit 10.0 に対応しているほか、cuDNN 7.3 や TensorRT 5.0 といったライブラリを備えています。さらに、この SDK により、TensorFlowPyTorch, Caffe, Keras, MXNet といったオープンソースの広く普及している機械学習 (ML) フレームワークだけでなく、OpenCVROS のようなコンピュータービジョンおよびロボティクス開発のためのフレームワークもネイティブにインストールすることができます。

参考サイト [1] より抜粋、編集

NVIDIA Jetson Nano 開発者キットの技術仕様と I/O の仕様を、参考サイト [2] より抜粋しました。

技術仕様

GPU 128 基の NVIDIA CUDA® コアを実装した NVIDIA Maxwell アーキテクチャ
CPU クアッドコア ARM® Cortex®-A57 MPCore プロセッサ
メモリ 4GB 64 ビット LPDDR4
ストレージ 16GB eMMC 5.1 フラッシュ
ビデオ エンコード 4K @ 30 (H.264/H.265)
ビデオ デコード 4K @ 60 (H.264/H.265)
カメラ 12 レーン (3x4 または 4x2) MIPI CSI-2 DPHY 1.1 (1.5 Gbps)
コネクティビティ ギガビット イーサネット
ディスプレイ HDMI 2.0 または DP1.2 | eDP 1.4 | DSI (1 x2) の 2 つ同時
UPHY 1 x1/2/4 PCIE、1x USB 3.0、3x USB 2.0
I/O 1x SDIO / 2x SPI / 4x I2C / 2x I2S / GPIOs
サイズ 69.6 mm x 45 mm
コネクタ 260 ピン エッジ コネクタ

開発者キット I/O

USB 4x USB 3.0、USB 2.0 Micro-B
カメラ用コネクタ 1x MIPI CSI-2 DPHY レーン
コネクティビティ ギガビット イーサネット、M.2 Key E
ストレージ microSD (別売)
ディスプレイ HDMI 2.0 および eDP 1.4
I/O GPIO、I2C、I2S、SPI、UART

Jetson Nano 開発者キットは本体ボードのみです。OS (Ubuntu Linux) は、インターネットに接続された PC (Windows/MacOS/linux) で microSD カードにイメージを書き込んでから、本体に挿入して使用します。キーボード&マウス、ディスプレイ、Micro-USB の電源は別に用意する必要があります。

Jetson Nano 開発者キットに含まれているもの

  • Jetson Nano 開発者キット(本体)
  • スタート/サポートガイド
  • 紙製の設置台

Jetson Nano 開発者キットに含まれていないもの

  • microSD カード(最低 16GB UHS-1
  • USB キーボード&マウス
  • ディスプレイ (HDMI or DP)
  • Micro-USB 電源 (5V⎓2A)

OS の準備

参考サイト [5] に従って、Jetson Nano 開発者キット用の OS (Ubuntu) を準備します。必要なものは以下のとおりです。

  • OS イメージ (jetson-nano-sd-r32.2-2019-07-16.zip → sd-blob-b01.img)
    • 参考サイト [5] で、Jetson Nano Developer Kit SD Card Image のリンクから zip ファイルをダウンロードして、解凍しておきます。
  • microSD カード(最低 16GB UHS-1
    • ストレージの容量をあまり気にせずにいろいろ使いたいので、Sandisk の 128GB の microSDXC を用意しました。
  • インターネットに接続された PC (Windows/MacOS/Linux)
  • OS イメージを SDカードに書き込むソフトウェア balenaEtcher
    • 自宅では Windows PC を利用できないので、メインの Linux PC (Fedora 31 beta) に、Linux x64 版の balenaEtcher (v1.5.57) をダウンロードして解凍して使いました。

balenaEtcher によるイメージの書き込み

ダウンロードしたファイルの解凍して、balenaEtcher を起動します。なお、イメージはダウンロードする zip ファイルのサイズが約 5.1GB、解凍後のイメージサイズが約 12GB あります。

リスト: ダウンロードしたファイルの解凍と balenaEtcher の起動 
$ ls
balena-etcher-electron-1.5.57-linux-x64.zip
jetson-nano-sd-r32.2-2019-07-16.zip
$ unzip jetson-nano-sd-r32.2-2019-07-16.zip
Archive:  jetson-nano-sd-r32.2-2019-07-16.zip
  inflating: sd-blob-b01.img         
$ unzip balena-etcher-electron-1.5.57-linux-x64.zip
Archive:  balena-etcher-electron-1.5.57-linux-x64.zip
  inflating: balenaEtcher-1.5.57-x64.AppImage  
$ ./balenaEtcher-1.5.57-x64.AppImage
ready-to-show: 2276.828ms
Checking for update
Update for version 1.5.57 is not available (latest version: 1.5.57, downgrade is disallowed).
...
...
起動後の balenaEtcher

Select Image をクリックしてsd-blob-b01.img を指定すると、書き込み先候補が表示されます。

イメージの指定

この場合、一つの候補しかないのでそのまま Continue をクリックします。Flash! をクリックすると SD カード(USB スティック)にしては容量が大きすぎるという警告がでますが、構わず Continue をクリックします。

ターゲットメディアの指定と書き込みの開始

書き込みが始まり、終わると書き込んだ内容の確認が始まります。

書き込みと確認

イメージの書き込みが無事終了しました。

書き込みの完了

microSD カードをアンマウントして取り出し、Jetson Nano 開発者キットに挿入します。

Jetson Nano 開発者キットに microSD カードを挿入

ディスプレイ、キーボード、マウスを接続、Micro-USB [5V⎓2A]で給電すると、Ubuntu の起動が始まります。最初の起動では、下記を設定後、ログインになります。

  1. NVIDIA Jetson software の EULA の内容を確認・承諾
  2. システムで使用する言語の選択と、キーボードのレイアウト、タイムゾーンの設定
  3. ユーザーネーム、パスワード、コンピューター名の設定
  4. ログイン
Jetson Nano 開発者キットの Ubuntu 18.04 LTS

USB 2.0 の Wi-Fi 無線 LAN 子機を挿して、デスクトップ PC (Fedora 31 beta) から ssh でリモートログインして、リソースを確認しました。

リスト: Fedora からリモートでアクセスしてリソースを確認した例 
[bitwalk@fedora-pc ~]$ ssh -X 192.168.0.28
The authenticity of host '192.168.0.28 (192.168.0.28)' can't be established.
ECDSA key fingerprint is SHA256:BwUqkaWycDsugD+6Zannl3lffsiHS15ojwU1MMVia+0.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.0.28' (ECDSA) to the list of known hosts.
bitwalk@192.168.0.28's password: 
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.9.140-tegra aarch64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.

261 個のパッケージがアップデート可能です。
133 個のアップデートはセキュリティアップデートです。


The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

/usr/bin/xauth:  file /home/bitwalk/.Xauthority does not exist
To run a command as administrator (user "root"), use "sudo ".
See "man sudo_root" for details.

bitwalk@jetson:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.2 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
bitwalk@jetson:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p1  118G   11G  102G  10% /
none            1.7G     0  1.7G   0% /dev
tmpfs           2.0G   13M  2.0G   1% /dev/shm
tmpfs           2.0G   38M  1.9G   2% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
tmpfs           396M   20K  396M   1% /run/user/120
tmpfs           396M  156K  396M   1% /run/user/1000
bitwalk@jetson:~$ 

欲を言えばパーティションを細かく設定したかったところですが仕方がありません。当面はストレージの容量を気にせずに使えそうです。

まとめ

長い間 Linux を使ってきましたが、廉価な PC に Linux をインストールすることはあっても、Raspberry Pi のようなシングルボードコンピュータには手を出しませんでした。シングルボードコンピュータは ARM 系 CPU を採用しているものが多く、廉価なものが多いので ARM 版の Linux に触れるには打ってつけだったのですが、手を出すだけの動機を持てずにいました。

NVIDIA Jetson Nano 開発者キットは、ディープラーニングに使うという明確な動機があったので、即決で買ってしまいました。そういうわけで、シングルボードコンピュータ初心者の取り組みをシリーズにしてまとめていきます。

参考サイト

  1. Jetson Nano であらゆる人が AI コンピューティングの利用が可能に | NVIDIA [2019-04-02]
  2. モダン AI のパワーを数百万のデバイスへ - NVIDIA Jetson Nano
  3. 小型の最新AIコンピュータ「NVIDIA Jetson Nano」レビュー(1) 開封の儀 | ロボスタ [2019-03-25]
  4. まずは「Jetson Nano」の電源を入れて立ち上げる (1/2) - MONOist(モノイスト) [2019-05-30]
  5. Getting Started With Jetson Nano Developer Kit | NVIDIA Developer

ブログランキング・にほんブログ村へにほんブログ村

0 件のコメント: