NVIDIA Jetson Nano 2GB 開発者キットのセットアップをしてみた。 | そう備忘録

NVIDIA Jetson Nano 2GB 開発者キットのセットアップをしてみた。

Jetson Nano開発者キット

NVIDIAのJetson Nanoにメモリが2GByte(今までは4GByte)の廉価版のモデルが発売された。

今までのJetson Nano 開発者キット B01は大体12,000円~15,000で発売されていたが2GB版の価格は7,000円前後とかなり安くなっている。

またメモリが2GBしか無いのでDeep Learningの学習が「メモリ不足でDeep Learningの学習が実行できないのでは?」との不安もあったがswap領域を拡大することにより(後述)学習速度は多少低下するがResNet-18で問題なく学習が終了した。

Jetson Nano 2GB 開発者キットのセットアップまでを記事にして残しておく。

2021/04/02 追記

尚、セットアップが終了したら以下の記事を参考に機械学習を試してみて欲しい。

外観

Jetson Nano 2GBの外観は以下の通り。

NVIDIA Jetson Nano Devキット表面

前面は左から、

  • MIPI CSI-2カメラコネクタ(ラズパイ用カメラが接続可能)
  • USB Type-C電源供給用コネクタ(以前の4GB版はDCジャック)
  • HDMI出力(モニター接続用)
  • USB3.0×1
  • USB2.0×2
  • Gigabit Ethernet port(有線LAN)※無線LANは標準では装備されていない
  • micro USB Type-B(パソコンと接続するとsshで操作が出来るのでモニター、キーボード等が不要になる)
  • 40ピン拡張ヘッダー
NVIDIA Jetson Nano Devキット裏面

裏面にはmicroSDカードスロットがあり、OSやJupyterLabのプロジェクトをインストールしたSDカードをここに差し込む。

用意したもの

Jetson Nano 2GB 開発者キット

NVIDIAのJetson Nano 2GB 開発者キット本体。

SDカード

起動用のSDカード。

Jetson Nonoのページでは32GB以上との指定だったが学習用の写真を保存するので容量に余裕が欲しかったので64GBを準備した。

無線LAN子機

Jetson Nano 2GBにはRaspberry Pi等とは異なり無線LANチップがデフォルトでは搭載されておらず有線でのLAN接続になる。

しかし有線LANでの接続は色々と不便なのでTP-LINK社のドングル型のWi-Fi子機を用意した。

物によってはJetson Nanoでの認識に手こずるWi-Fi子機もあるようだが、このドングルは指しただけで認識してくれた。

WEBカメラ

学習用の写真や映像を撮影するためにUSB接続のロジクールのWEBカメラを購入した。

Jetson NanoのUSBコネクタに差し込むだけで認識してくれて性能と価格のバランスが良い機種だと思う。

またラズパイのカメラモジュールもCSI-2コネクタに接続可能になっているのでいずれ試してみようようと思う。

マウス・キーボード

一番最初のセットアップの際にマウスとキーボードを使用した。

その後はパソコンからssh(やVNC)で接続をするのでキーボードやマウスは不要になるので暫定的に以前に購入していたEwinのミニキーボードを使用した。

同型のモノは既に販売終了となってしまっているが後継機が出ている。

モニター

一番最初のセットアップの際にモニターを使用した。

その後はsshで接続するのでモニター不要になるのでラズパイ用の7インチモニターを一時的に代用した。

自分が持っているモニターはもう販売していないので後継の機種のモニターへのリンクをはっておく。

USB Type-C

電源供給用のUSB Type-Cケーブルが必要となる。

ケーブルにオン/オフのスイッチがついていると便利なのでRaspberry Pi 4Bのセットに付いてきたケーブルを代用している。

micro USB Type-B

パソコンとmicro USB Type-B(パソコン側はType-A)ケーブルで接続をするとJetson Nano側に自動的に192.168.55.1のアドレスが割り当てられるのでパソコンからsshで接続することができる。

データ転送が出来るタイプのケーブルが必要になる。

環境

尚、当方のパソコン側の環境は以下の通りである。

OS

Windows10 Home バージョン1903

本体

DELL G7 15 7588

CPU

CoreTM i7-8750H

起動SDカードの作成

最初にmicroSDカードにOS及び各種開発キットをセットアップする。

ファイルのダウンロード

こちらのページにアクセスしてJetson Nanoのデベロパーズキットを取得するのだが、後ほどDockerコンテナの所で使用するのでインストールするJetPackのバージョンを控えておく。

2021年1月に4.5がリリース予定と書いてあるが現時点(2020年12月)では4.4.1となっていた。

JetPack SDKのページ

下の方にスクロールしてFor Jetson Nano 2GB Developer Kitの「Download the SD Card Image」ボタンをクリックしてjetson-nano-2gb-jp441-sd-card-image.zipをダウンロードする。

なお、ファイルサイズは6GBあるのでそこそこ時間がかかる。

Download the SD Card Image

SDカードへの書き込み

こちらのページを参考にしてダウンロードしたファイルをmicroSDカードに書き込む。

自分の場合はWindows10なのでWindowsページを参考にしたのだがSD Card Formtterでフォーマットしてbalena Etcherで書き込む手順になっていた。

OS別インストール手順

カードリーダーにSDカードをセットしてパソコンに接続する。

カードリーダーにSDカードをセットする

SD Card Formatterを起動するとIドライブとして認識されたのでクイックフォーマットでフォーマットを行う。

尚、SD Card Formatterの入手&インストール方法については以前のこちらの記事を参照して欲しい。

SD Card Formatter

データ消去の確認メッセージが表示されるので「はい」をクリックする。

データ消去の確認

下記のメッセージが表示されてフォーマットが終了した。

フォーマット終了

続いてbalena Etcherを起動して「Select image」ボタンをクリックして先程ダウンロードしたファイル(jetson-nano-2gb-jp441-sd-card-image.zip)を選択する。

尚、balena Etcherのインストールについては以前の記事を参照して欲しい。

イメージファイルの選択

ドライブを確認して(自分の場合はIドライブ)「Flash!」ボタンでファイルをSDカードに書き込む。

ドライブを確認して書き込む

数分後にFlash Complete!のメッセージが表示されれば書き込み終了となる。

Flash Complete!で書き込み終了

初期設定

Etcherで書き込んだSDカードでJetson Nano 2GBを起動する。

  • microSDカードを背面のスロットに挿入する
  • HDMIコネクタでモニターに接続する
  • キーボード・マウスを接続する
  • Ethernetポートで有線LANに接続する(初回起動時はWi-Fiドングルは使用しなかったが最初からWi-Fiでも大丈夫だったのかも知れない)
  • USB Type-Cコネクタを電源に接続してスイッチオンにする

ユーザライセンス

ユーザライセンスが表示されるので内容を確認して”I accept the terms of these licenses”にチェックをして「Continue」をクリックする。

ライセンスの承認

言語とキーボードの設定

言語は日本語を選択して「続ける」をクリックした。

しかしこの後もJetson Nano上で日本語を使用することは殆どないのでEnglishでも問題はないと思う。

日本語の設定

キーボードレイアウトは日本語、日本語(かな)を選択して「続ける」をクリックした。

キーボードの設定

ゾーンの選択

日本語を選択したのでデフォルトのゾーンでTokyoが選択されているので「続ける」をクリックする。

ゾーンの選択

コンピューター情報の設定

  • 名前
  • コンピューター名
  • ユーザ名
  • パスワード

を入力して”自動的にログインをする”を選択して「続ける」をクリックする。

コンピューター名等の情報の設定

パーティションサイズの設定

アプリケーションのパーティションサイズを設定する。

設定可能な最大サイズの60335MBを設定して「続ける」をクリックする。

APP Partition Sizeの設定

SWAPファイルの設定

“Create SWAP File(Recommended)”を選択して「続ける」をクリックする。

この設定によりメモリのSWAP領域が5GB確保される。

メモリが2GBの廉価版なのでSWAP領域を確保しないとPyTorchでGPUを使ってのDeep Learningの学習の際にメモリ不足で処理が終了しない。

SWAPファイルの設定

以上で初期設定が終了してOSが起動する。

パッケージアップデート

以下のコマンドでパッケージのアップデートを行った。

sudo apt-get update
sudo apt-get upgrade

無線LANの設定

ここまでは有線LANで設定を行ったが無線LANも使用できるようにしておきたい。

購入したTP-LINKのWi-FiのドングルをUSBポートに差し込むと自動的に認識するのでデスクトップの右下のコンピュータのアイコンをクリックして現れる一覧から該当のSSIDを選択する。

無線LANの設定

パスワードを入力して「Connect」ボタンをクリックするとWi-Fi接続される。

Wi-Fiの接続

以上でデスクトップでの操作は終了となる。

以降はモニター、キーボード、マウスは不要でパソコンからのsshやJupyterLabでの操作が中心になる。

sshでの接続

まずパソコンとJetson Nano 2GBをUSB Type-B(パソコン側はType-A)ケーブルで接続する。

するとJetson Nanoには自動的に192.168.55.1のIP Addressが割り当てられるのでWindows10でPowerShellを起動してssh接続する。

ssh ログイン名@192.168.55.1

ログイン名は上記で設定したユーザ名を指定してパスワードを入力すれば接続される。

ちなみにOSはUbuntu18.04.5 LTSであることが分かる。

sshで接続

SWAP領域の確認

SWAP領域の設定状況を以下のコマンドで確認する。

free -m

メモリが約2GB、Swapが5GB確保されていると表示された。

NVIDIAのサイトでは4GBの確保の方法が載っていたが5GBあるのでひとまずSwap領域は十分と判断する。

SWAP領域の確認

Dockerコンテナの実行

作業用ディレクトリの作成

ホームディレクトリに作業用ディレクトリを作成する。

mkdir -p ~/nvdli-data

shellファイルの作成

Dockerコンテナを実行するためのshellファイル(docker_dli_run.sh)を作成する。

echo "sudo docker run --runtime nvidia -it --rm --network host \
    --volume ~/nvdli-data:/nvdli-nano/data \
    --device /dev/video0 \
    nvcr.io/nvidia/dli/dli-nano-ai:v2.0.1-r32.4.4" > docker_dli_run.sh

上記のコマンドの”dli-nano-ai:v2.0.1-r32.4.4″のバージョンの部分(4.4)は最初に選択したJetPackに応じたバージョンを記入する。

作成したシェルファイルに実行権限を付加する。

chmod +x docker_dli_run.sh

Dockerコンテナを実行する

./docker_dli_run.sh

初回は必要なファイルがダウンロードされるので時間がかかる。

dockerコンテナの実行

コンテナが実行されると192.168.55.1:8888で”JupyterLab to start”のメッセージが表示される。

Dockerコンテナ実行中

JupyterLab

ログイン

ブラウザから192.168.55.1:8888に接続すると下記のJupyterLabのログインページが表示されるのでパスワードは”dlinano”で接続する。

JupyterLabでの接続

ログインすると以下のページが表示される。

ログイン直後

幾つかディレクトリが表示されている。

Classification

画像分類のプロジェクトが格納されている

カメラに写った映像から親指を上げているか下げているかを分類するプロジェクトなど

data

データの格納ディレクトリ

コンテナ非起動時の~/nvdli-data/と同じディレクトリであり、ここに保存したデータはコンテナの外からもアクセス可能だが他のディレクトリに格納したファイルはコンテナ終了時に消えてしまう

また–volumeオプションでコンテナを起動すれば他のディレクトリもマウントすることが出来る

hello_camera

カメラの接続テスト用プロジェクト

images

画像ファイルが格納される

regression

回帰のプロジェクトが格納されている

カメラに写っている顔のパーツ(右目、左目、鼻)の位置を推定して動きに合わせて追随するプロジェクトなど

Classificationとregressionのプロジェクトの内容については別の記事で紹介したい。

カメラの動作確認

ロジクールのWEBカメラをJetson NanoのUSBポートに接続して暫く待つと自動的に認識するのでJupyterLabにてhell_cameraをクリックする。

hellow_camera

usb_camera.jpynbを選択する。

usb_cameraプロジェクト

新しいタブでノートブックが開くので少し下にスクロールして1行目のビデオデバイスを一覧表示するコマンド、

!ls -ltrh /dev/video*

にカーソルを合わせて実行ボタン(上部の三角のボタン)をクリックするか、Shift+Enterでも実行できる。

カメラデバイスの確認

カメラが認識されれば先程のコマンドの下にlsの結果が表示される。

/dev/video0はUSBカメラなので正しく認識されている。

カメラが認識された

続いて上から順番に実行して、5番目のセンテンスを実行すると実際の撮影が行われる。

カメラのテスト

Tipsとして紹介されていたのが表示された画像を自分の好きな位置に追加表示するテクニック。

画像の上で右クリック、表示されたメニューから”Create New View for Output”を選択する。

Create New View for Output

新しくViewとして表示されるのでドラッグ・アンド・ドロップで好きな位置に移動させる。

この後で演習でウィジェットを常に横に並べて表示したい事があるのでこの技は覚えておいた方が良いと思う。

新しいView

USBカメラの動作確認は以上で終了とする。

動画

セットアップの様子については以下の動画を参照して欲しい。

最後に

以上で今回の記事は終了とする。

次回以降でClassificationなどのプロジェクトについて書いてみたいと思う。

最後に

この記事が何処かで誰かの役に立つことを願っている。

尚、当記事中の商品へのリンクはAmazonアソシエイトへのリンクが含まれています。Amazonのアソシエイトとして、当メディアは適格販売により収入を得ていますのでご了承ください。

souichirou

やった事を忘れない為の備忘録 同じような事をやりたい人の参考になればと思ってブログにしてます。 主にレゴ、AWS(Amazon Web Services)、WordPress、Deep Learning、RaspberryPiに関するブログを書いています。 仕事では工場に協働ロボットの導入や中小企業へのAI/IoT導入のアドバイザーをやっています。 2019年7月にJDLA(一般社団法人 日本デイープラーニング協会)Deep Learning for GENERALに合格しました。 質問は記事一番下にあるコメントかメニュー上部の問い合わせからお願いします。

おすすめ

3件のフィードバック

  1. fumi より:

    いつも拝見させていただいております。jetson nanoのセットアップで参考にさせて頂いていますが、DOCKERコンテナを実行した後、下記のようなエラーになってしまい、jupyterlabまでたどり着けません。最新版でも4.4でも同じ症状です。アクセス権限が引っかかっているような気がしますが、もしお分かりでしたら教えてください。よろしくお願いいたします。
    エラーメッセージ:
    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.

  1. 2022年3月6日

    […] NVIDIA Jetson Nano 2GB 開発者キットのセットアップをしてみた。 […]

fumi へ返信する コメントをキャンセル

名前、メール、サイト欄は任意です。
またメールアドレスは公開されません。