「Jetson AGX Xavier」レビュー(2) セットアップ&ベンチマーク編 エッジを知能化する超小型AIコンピュータの実力は本物か?

ロボットやドローン、AGV(自動運搬車)などの自律型マシンや、モバイル型エッジコンピュータなどに強力なGPUパワーを搭載できるのが、NVIDIA製のAIコンピュータ「Jetson AGX Xavier」(ジェットソンAGXエグゼビア)です。手の平サイズでとても小型です。
では、どのくらいパワフルなのでしょうか?

Jetson AGX Xavierはどのくらい凄い?

まずは「Jetson AGX Xavier」の性能を確認するため「DeepStream SDK」のデモを動かしてみました。
25個の動画をサムネイル的に表示し、なおかつ車と人の物体認識をすべての動画で行っています。エッジデバイスでこれだけの処理ができると今後色々な応用ができそうで非常に楽しみな製品です。

DeepStream SDK Demo画面

動画でも確認できるようにYouTubeに動作の様子をアップしていますので動いている様子を確認できます。
■Jetson AGX XavierでのDeepStream Demo

このデモをNVIDIAが解説している動画が下記です。Jetson AGX Xavierが4つのニューラルネットワークを同時に処理し、セダンやトラックなどのクルマの車種やブランドなどもリアルタイムで判別していることがわかります。

さて本題ですが、前回はロボスタ編集部による「開封の儀」をお届けしましたが、今回からは開発エンジニアの私、高橋が担当します。レビュー第2回の今回は「セットアップ&ベンチマーク編」をお届けします。
もちろん、今回の続きも順次公開していきますので、よろしくお願いいたします!

NVIDIA Jetson AGX Xavierとは

Jetson AGX Xavierの開発者キットは、NVIDIAが昨年9月に提供を開始したAI用エッジコンピューティングデバイス製品になります。詳しい内容は以下の記事をご参照ください。

NVIDIAでは本製品をエッジ向けAI、ロボット用コンピューティングデバイスと位置付けており、クラウドを使わなくともデバイス単体で高速な深層学習処理が可能になっています。
では、PCと比べても低消費電力なのに、Jetson AGX Xavierはなぜ高いパフォーマンスが出せるのか?
その秘密はGTXシリーズに代表される従来のGPUではなく512コアのVolta GPUアーキテクチャが搭載されていること、効率的にAIの推論処理を行うために2つのDeep Learning Accelerator(DLA)エンジンを搭載していることにあります。その結果最大32TOPS(Tera OPS)という高パフォーマンスを実現しているのです。
DLAのパフォーマンスに関しては後半にTensorRTによるベンチマーク実測結果を書いています。

Jetson AGX Xavier TOPS performance

ではJetson AGX Xavierのセットアップはどうすればよいか、はまりどころを中心に見ていきましょう。

Jetson AGX Xavierは豪華なラズパイ?

私はNVIDIAのJetsonシリーズを触ったことがなかったのですが、実際触った第一印象は誤解を恐れずに言えば「ものすごく豪華なラズパイだなぁ!」でした。実際ラズベリーパイ3 Model Bと比べてだいぶ大きいですが、HDMI、USB、Ethernet,その他IO端子があるという共通点があります。

サイズの比較 左: ラズベリーパイ3 Model B, 右:NVIDIA Jetson AGX Xavier

すなわち、USB端子にマウス、キーボード、HDMI端子にモニタ、EthernetにLANケーブルを接続して電源ケーブルを指せばPCと同じように使えるのです。
レビュー実機では初回電源投入時はCUIの画面が出てきますが、メッセージの手順でインストールのシェルスクリプトを実行するとUbuntu Linux18.04のデスクトップ画面が立ち上がりました。
Ubuntu Linuxに関して補足しますと、Windows OSやMAC OS同様OSの一種でROS (Robot Operating System) 利用者や深層学習開発者などで広く使われているOSです。

初回起動時のCUI画面

デスクトップ起動画面

Ubuntu Linuxに関して補足しますと、Windows OSやMAC OS同様OSの一種でROS (Robot Operating System) 利用者や深層学習開発者などで広く使われているOSです。
Jetson AGX Xavierは初めて触りましたが、これでだいぶ親近感が湧いてきました!(笑)

Jetson AGX Xavierをセットアップしてみよう

セットアップにはUbuntu Linuxインストール済み物理PCが必要

Jetsonシリーズ共通のお作法があります。Jetson AGX Xavier内にeMMC(embedded Multi Media Card)が内蔵されており、「JetPack SDK」というJetsonシリーズの開発キットのインストーラーでOSイメージごと書き込みができます。ラズパイでいうところのmicro SDカードのようなものです。
このイメージを書き込むにはホストPCとUSB接続する必要があります。なぜならJetPack SDKがNVIDIAから機能追加などで頻繁にバージョンアップされるため、ユーザが自分で最新版に更新できるようにするためです。
User GuideによるとホストPCの要件が、

•Minimum system requirements for the host computer: Ubuntu Linux x64 v16.04 or v18.04, a valid Internet connection and at least 23GB of disk space.

となっています。
すなわち、ホストPCの最小のシステム要件は、「LinuxディストリビューションのUbuntu Linuxのバージョンが16.04または18.04、インターネット接続可能で最小空きディスクスペースが23GB」という結構ハードル高めに設定されています。
「WindowsやMAC上でVirtual Boxみたいな仮想環境作ればいいんじゃないの?」という人もいると思ますが、仮想環境での長時間のUSBデータ転送は不安定らしくネットを見た感じでは成功した人がほぼいないようです。
ですので、ここはおとなしくUbuntu Linuxの物理PCを用意しましょう。
おそらくこのホストPCを用意するのが一番の難関かと思いますが、PCへのubuntuインストールに関しては今回割愛します。
もし新規でインストールするのであれば、

•最新のPCよりちょっと古めのPCにインストールする。
•インストールするバージョンは16.04か18.04のLTS(Long Term Support : OSのサポート期間が長い)のバージョン選択すること。
•言語選択は英語。

にするとトラブルが少ないかもしれません。
今回は私が自社でセットアップしたUbuntu 16.04 LTS英語版インストール済のPCをホストPCとして作業を行いました。

今回のレビューで使った Ubuntu16.04 英語版インストール済ホストPC

 

JetPack SDKのインストール

ではホストPCの準備が終わったところでJetson AGX Xavierのセットアップに移ります。JetPack SDKのインストールをするのですが手順は以下の通りです。

1.LinuxホストPC上でJetPackインストーラーのダウンロード
2.LinuxホストPCにJetson AGX Xavier (developer kit) をUSB接続
3.Jetson AGX Xavier (developer kit) をForce Recovery Modeにする
4.JetPackインストーラーを実行して、コンポーネントの選択とインストール

あらかじめ以下User GuideをホストPCにダウンロードしておくとよいです。
JETSON AGX XAVIER DEVELOPER KIT User Guide
https://developer.nvidia.com/embedded/dlc/jetson-xavier-developer-kit-user-guide

ホストPCへのインストーラーのダウンロード

最初にUbuntu LinuxのホストPC上からブラウザでNVIDIAのDeveloper Siteにアクセスし、JetPack4.0のインストーラーをダウンロードします。
記事の執筆時点ではJetPack4.1.1 Developer PreviewがJetson AGX Xavierに対応した最新バージョンでした。

JetPack インストーラーダウンロードページ

「Download JetPack4.1.1 DP」ボタンを押すと、インストーラーのダウンロードページに進みます。ダウンロードする際にはNVIDIA Developer SiteへのID登録が必要です。
またダウンロードサイトの「More Resource」の中に「Step by step installation instruction」ドキュメントのリンクがあり、JetPackインストーラーの手順がスクリーンショット付きで解説されているので、以降はこちらを見ながらセットアップを進めていきます。

Step by Step Instructions

ダウンロードが完了したら、その後はUSB接続のところまで「Step by step installation instruction」の通りに進めていけば問題ないと思います。

ホストPCにJetson AGX XavierをUSB接続

JetPackインストーラーのステップを進めていくとネットワークレイアウトの選択画面になります。

Network Layout設定画面

ここは「Connect to Jetson device via USB cable」を選択し、ホストPCとJetson AGX XavierをUSBケーブルで接続してください。私は最初ネットワーク経由でのセットアップに挑戦しましたがうまくいかずやり直しました。接続したら「Next」ボタンをおして次に進みます。

XavierをForce Recovery Modeにする

「Ready to flash and / or set up your Jetson AGX Xavier」のステップで「Next」ボタンを押すとコンソール画面がポップアップしてきます。

Force Recovery Mode説明画面

この画面を要訳すると、

1.ホストPCとJetson AGX Xavierの電源の反対側にあるUSB-Cと接続されていることを確認。
2.電源アダプタがコンセントとJetson AGX Xavierと接続できていることを確認。
3.電源ボタン(3つ並んでいるボタンの一番左)を押して電源をONにする。
4.以下でJetson AGX Xavierをforce recovery mode(強制回復モード)にする。
•Force recovery ボタン(3つ並んでいるボタンの真ん中)を押下し続ける。
•リセットボタン(3つ並んでいるボタンの右側)を単押し(押して離す)をする。
•2秒後にForce recoveryボタンを離す。
5.最後にエンターキーを押すと書き込みが開始する。

という手順になります。

インストーラーの実行

エンターキーを押してインストールが実行されると、コンソール画面にログが出力されていきます。処理が最後まで完了すればJetPack SDKのインストールが完了です。お疲れ様でしたー。
インストールが終わると、単体でもモニタを接続して起動するとUbuntu 18.04のDesktop画面が表示されます。
Tips的なところで話をすると、Jetson AGX XavierにインストールされているUbuntuは英語版なのでキーボードが英語レイアウトになっています。
日本語キーボードを接続する場合には、デスクトップ右上の[EN]アイコンを右クリックして「Text Entry」を選択して[+]ボタンからJapaneseを追加することで日本語キーボードレイアウトに切り替えて使えます。

日本語キーボードレイアウトの追加

 

ベンチマーク測定

セットアップが終わったところでベンチマーク測定をしてみました。
最初にUnixBench5.1.3(https://github.com/kdlucas/byte-unixbench)でCPUのスピード計測として今回はHost PC, AGX Xavier(30Wモード), RaspberiPi3+の3台で整数演算(Dhrystone)、浮動小数点演算(Whetstone)のベンチマークを比較してみます。

UnixBench5.1.3での ベンチマーク結果

CPUもOSも消費電力も全く違うPCを横並びで評価するのは非常に乱暴ですが、特筆すべきはJetson AGX Xavierは整数演算ではHost PCを上回っています。
Jetsonシリーズはエッジコンピューティング製品ということで、消費電力で上のデータをならした結果は以下の通りで、消費電力あたりのパフォーマンスはPCを大きく引き離します。

GPUのパフォーマンス比較

GPUのパフォーマンスはCUDAのサンプルnbodyでベンチマーク測定を行いました。(Raspberry PiはNVIDIA GPUではないため計測対象から除外)
計測結果だけを見るとHost PC + GTX 1050 TiがJetson AGX Xavierで搭載されているVolta GPUの約1.7倍というパフォーマンスが出ています。ただし、消費電力で合わせてみるとJetson AGX Xavierのパフォーマンスが格段に良いことがわかります。

ディープニューラルネットワークの比較

ここまではJetson AGX Xavierで今回搭載された2つのDLAの計測ができていません。
今回はTensorRTのgiexecというサンプルを使ってGoogLeNetというモデルを使った画像分類のベンチマーク結果をもとに1秒当たりの画像処理量を比較した結果が以下の通りです。
消費電力で合わせなくとも、Volta GPU+2つのDLAを搭載したJetson AGX XavierはGTX 1050 Tiの性能を超えて秒間2,273枚の画像分類処理を可能にしています。これが冒頭のDeep Stream SDKデモのパフォーマンスにつながるということです。

動かしてみた所感

Jetsonシリーズを今回初めて触りましたが、DeepStream SDKのデモを自分で動かしてみて、今回搭載された2個のDLAのパフォーマンスも含めJetson AGX Xavierのエッジ処理の可能性に正直驚きました。
最近の流れとして、Core MLやAuto MLなどサーバで学習データをトレーニングさせてエッジで処理をするのが流行ですが、正直、どの小型デバイスを使ってもパフォーマンス不足、業務などの実用にはイマイチな感がありました。
しかしJetson AGX Xavierの登場でAIエッジコンピューティングの性能、特にエッジでのストリーミングデータに遅延なくAI処理を行えるデバイスが出てきたことは、新しい利用の可能性がますます広がると感じました。
引き続きAIやロボット関連でどのような可能性があるのか次回以降でさらに探っていきたいと思います。
お楽しみに。

ABOUT THE AUTHOR / 

高橋一行

Forex Robotics株式会社 代表取締役。AI、機械学習、ロボット、IoTなどのシステム開発を行いながら、コミュニティ活動やLTにも精力的に活動。 参加コミュニティ: 「ソフトバンクロボティクス公認コミュニティーリーダー」「 Creator's NIGHT eXtreme」 2020年のロボット業界を考える飲み会 共同主催 他

PR

連載・コラム