NVIDIA Japanのお計らいで、GTC 2023で新しく発表されたNVIDIA Jetson Orin Nano開発者キットをいち早く入手しました。
そこで、2年半前のJetson Nano開発者キットのレビューと同様に、今回から複数回のブログ記事で、このJetson Orin Nanoを使ってアプリケーション開発を行ってみたいと思います。もちろん、GPUを積んでいるわけですので、JetPackの恩恵に預かれるようにしたいと思っています。
Jetsonシリーズ性能比較
Jetson Orin Nanoシリーズは昨年発売されたフラグシップモデルであるJetson AGX OrinシリーズとエントリーモデルであるJetson Nanoシリーズとの間に属するミドルレンジの性能を有しています。
Jetson Nano | Jetson AGX Xavier NX | Jetson AGX Xavier | Jetson Orin Nano | Jetson AGX Orin | |
---|---|---|---|---|---|
AI性能 | 0.472GFLOPS | 21TOPS | 32TOPS | 40TOPS | 275TOPS |
メモリ | 4GB | 8GB | 64GB | 8GB | 64GB |
消費電力 | 5-10W | 10-20W | 10-30W | 7-15W | 15-60W |
https://developer.nvidia.com/embedded/jetson-modules より
昨年発売されたJetson AGX Orin開発者キットはJetson AGX Xavierからの性能向上が著しいものの、半導体ショックも伴い、価格もプレミアムプライスであったため、個人がそう簡単に入手することはできませんでした。 Jetson Orin Nano開発者キットは$499なので、個人でも手が届く範囲の商品に仕上がっています。
Jetson Orin Nanoという名前からJetson Nanoと比較してしまいがちですが、驚きなのは、INT8性能比ではJetson AGX Xavier NXの2倍、Jetson AGX Xavierの1.5倍の性能を持っており、前世代のすべてのJetsonよりも推論性能は上である点です。 Jetson AGX Orinにはもちろん敵いませんが、こちらは消費電力も2倍から4倍あることを考えると、Jetson Orin NanoはAI性能、消費電力ともに相当優秀です。
浮動小数演算の性能は不明ですが、Jetsonシリーズは学習ではなく推論を主眼において設計されていることを考えると、INT8性能を最大限に引き出す努力をしなくてはなりません。 TensorRTなどを使って、40TOPSのAI性能をどれだけ引き出せるか楽しみです。
さらに、Jetson Nanoはメモリが4GBしかありませんが、Jetson Orin Nanoにはメモリが倍増の8GBもあります。 JetsonシリーズはメモリをCPUとGPUで共有する仕組みのため、メモリの大きさが直接読み込み可能な学習モデルの大きさに効いてきます。
NVIDIA Jetson Orin Nano開発者キット
Jetson Orin Nano開発者キットの大きさは大体Jetson Xavier NX開発者キットと同じくらいです。 少し気をつけないといけないのは、液晶ディスプレイの端子がHDMIではなくディスプレイポートである点と、電源がUSB Type-Cではない点です。 バッテリー運用時などは電源の端子形状や電圧を気にかける必要がありそうです。
システムセットアップ
Jetson Orin Nano開発者キットはマイクロSDカードにイメージを焼いてブートする方法とホストPCのSDKマネージャからインストールする方法の2つがあります。 マイクロSDカードに焼く方式がおすすめのようです。
Jetson Orin Nano Developer Kit Getting Started Guide
マイクロSDカードはJetson Orin Nano開発者キットに同封されているわけではないので、別途用意しておく必要があります。
GUIの無効化
CPUとGPUでメモリを共有するJetsonシリーズでは、少しでもメモリ使用量を節約することで、より大きな学習モデルを使えるようになります。 そこで、最初のOSセットアップを除いてGUIの必要性がないため、NVIDIA Jetson Nano 2GBプレビューキットのセットアップでも紹介したように、GUIを無効化することでメモリを節約します。
まず、GUIを無効化する前の状態でJetson Orin Nanoを起動したときのメモリ使用量です。 ただ起動するだけで1.6GBを消費していることがわかります。ログインすると、さらに他のアプリケーションも動くため、余計に増えます。
1
2
3
4
free -h
total used free shared buff/cache available
Mem: 6.3Gi 1.6Gi 3.6Gi 22Mi 1.1Gi 4.5Gi
Swap: 3.2Gi 0B 3.2Gi
こちらがGUIを無効化した後です。メモリ使用量が391MBに減りました。 このおかげで、利用可能な空きメモリ量は4.5GBから5.8GBに増えました。
1
2
3
4
free -h
total used free shared buff/cache available
Mem: 6.3Gi 391Mi 5.4Gi 10Mi 519Mi 5.8Gi
Swap: 3.2Gi 0B 3.2Gi
GUIの無効化は以下のコマンドを実行して、再起動するだけです。
1
sudo systemctl set-default multi-user.target
以下のコマンドで再度GUIを有効化することもできます。
1
sudo systemctl set-default graphical.target
液晶ディスプレイを繋いでいない状態でも遠隔からアクセスできるように、openssh-serverをインストールしておきましょう。
1
sudo apt install openssh-server
Dockerのセットアップ
Jetsonはローカルのファイルシステムを生のまま使うのではなく、Dockerコンテナを使って実行するのが便利です。 JetPackやPyTorchライブラリ、学習モデルなどが詰め込まれたDockerイメージがNVIDIA公式コンテナレジストリからダウンロードできます。
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-base
JetsonをセットアップしたらすでにDockerはインストールされています。 sudoをつけずにdockerコマンドを実行できるようにだけ設定しておきます。
1
sudo usermod -aG docker $USER
このやり方はJetsonを使った製品をリリースするような場面では推奨されるやり方ではないですが、今は開発者キットを使って遊んでいるだけですので、こちらの方が日常使いに便利です。
最後にコンテナランタイムが正しくNVIDIAのものになっているかどうかを確認して終わります。
1
2
$ docker info | grep Runtimes
Runtimes: nvidia runc
Jetson Orin NanoにはM.2のスロットも用意されています。 マイクロSDカードでの運用だと起動やDockerイメージの読み込み、学習モデルの読み書きが遅いので、現在、M.2 SSDを購入中です。 そちらのセットアップも記事にしていきます。
Comments powered by Disqus.