エッジAIデバイスJetsonの検証
本記事では、Jetson(Orin Nano開発者キット)にOS(Jetpack)のインストールから初期設定を行い、
基本的なAIモデルを動かすまでの手順を解説いたします。
*目次*
1.はじめに
こんにちは。
プラットフォームソリューション第二グループのfujishima.yです。
この記事は アイソルート Advent Calendar 2023 の 18日目の記事です。
普段はサーバやネットワークを中心に設計や構築業務を行っております。
当ブログでは5回目の記事となります。
前回は『エッジコンピューティングについての解説とデモ環境の構築』について紹介させていただきました。
今回はエッジコンピューティングシリーズの第2話となります。
現在の業務内容はシステムの構築がメインですが、これまでに様々なネットワーク機器や製品の検証・研究をしてきました。
そして裏では密かに(?)エッジコンピューティング関連について検証を続けており、特にAIによる自動運転技術に興味があって、休日の合間などを利用して調査しています。
前回の記事では課題として、利用したエッジデバイスがGPU非搭載で、AIモデルを動かすと挙動が不安定となり、パワー不足感があったことを挙げていました。
今回から、NVIDIA製のGPUを搭載した本格的なエッジAIデバイスの検証を行い、ノウハウを共有したいと思います。
(対象読者)
・Jetsonの初心者向けです
・エッジコンピューティングの分野や仕組みに興味をお持ちの方
・エッジAIに興味をお持ちの方
・Jetsonシリーズ機器のセットアップ方法を具体的に知りたい方
2.Jetson Orin Nano開発者キットについて
JetsonとはNVIDIA社が提供しているAIエッジ用のデバイス製品群のことで、
Jetson Orin Nano 開発者キットは、2022年9月にリリースされたJetson製品群の一つです。
今年のInterop Tokyoでも展示されていました。
・なぜJetson Orin Nanoなのか?
自動車の自動運転技術にJetsonが深く関わっているからです。
自動運転を行う多くの車体には、Jetsonとは異なるシリーズですが、NVIDIA製の製品が搭載されています。
そしてJetsonシリーズにはJetRacerという、ミニカー用に自動運転用のAIモデルが提供されています。
元々はJetRacerを動かすためのエントリー用としてJetson Nanoが提供されていて、Jetson Orin Nanoはその後継機となり、演算速度が大幅に強化されています。
その演算速度はどのくらいでしょうか。
公式の仕様によると40TOPS(Tera Operations Per Second)で、1秒あたり40兆回。
これは前回の記事で利用したエッジデバイスの約400倍(!)となります。
3.本記事でやろうとしてること
Jetson Orin Nano開発者キットにJetpackをインストールし、基本的なAIモデルを動かせるようにセットアップします。
動作確認にはNVIDIAが提供しているAI動作確認用のプリセットを利用します。
全体構成図の解説
検証に用いたプラットフォーム概要図(画像をクリックすると拡大表示)
ルータ、FW、APなどのネットワーク設備は設定済みであると想定。
・エッジデバイス
→機種:Jetson Orin Nano開発者キット、NVIDIA製のGPU、メモリ8Gbyte
→OS:Jetpack 5.1.1
→AI実行環境:TensorRT
→スクリプト言語:Python3
→スクリプト実行環境:JupyterLab
それでは、具体的な設定方法を解説していきます。
4.設定解説編
①Jetson Orin Nano開発者キットの初期状態を確認
デバイスに電源・ディスプレイ・キーボード・マウスを接続して起動してみます。
JetPackが予めインストールされているため、OSが起動し、デスクトップ画面が表示されると思います。
初期状態は製造元によって異なるかも知れませんが、私の場合は色々なパッケージがインストール済みの状態になっていました。
ただし検証目的には初期セットアップ手順の確認も含むため、あえてJetPackの再インストールから始めます。
②SDK Managerのインストール
・作業用PCにUbuntu20.04LTSでVMを作成
Jetpackをインストールするためのツール”SDK Manager”を利用するために、VMをUbuntu20.04LTSで作成します。
なお、ディスク容量は最低80Gbyte程度必要(最初50Gbyteにしたのですが、それだと足りなかった)となります。
・SDK Managerのインストール
作成したVMにSDK Managerをダウンロードし、インストールします。
JetPackをインストールする記憶媒体にはNVMeSSDが利用でき、
NVMeSSDにJetPackをインストールするには、SDK Managerを用いる必要があります。
ちなみに、他にもmicroSDカードを用いる手段も用意されているようですが、
私のデバイスにはmicroSDカードのコネクタが付属されていなかったため、NVMeSSDを利用することにしました。
・SDK Managerの起動
ブラウザが開き、NVIDIAのログイン画面が表示されますので、2段階認証でログインします。
(NVIDIAへのユーザ登録が必要になりますので、未登録の場合は登録してください)
③エッジデバイス接続
・9/10番pinにジャンパピンを挿し込む
強制リカバリモードで起動する必要があるため、ジャンパピンを9/10番pinに挿し込みます。
・エッジデバイスとの接続
エッジデバイスと作業PC(VM)間をUSBケーブルで接続し、電源をONにします。
④JetPackのインストール
・STEP1:インストール先デバイスとJetPackのバージョンを選択
エッジデバイスが認識されれば、以下のような画面が表示されると思います。
JetPackのバージョン5.1.1を選択し、CONTINUEボタンを選択します。
・STEP2:JetPackのダウンロード
インストールする対象を選択し、規約に同意して、CONTINUEボタンを選択します。
ここで容量が足りない場合は、警告が表示されます。
・STEP3-1:JetPack(Jetson Linux)のインストール
OSのインストール前に、初期ユーザとIPアドレスの指定、およびインストール先の媒体を指定します。
OSのインストールが始まります。
SDK Manager側の容量が足りていて、エッジデバイスを強制リカバリモードで起動できていれば、ここまでは成功するはずです。
・STEP3-2:JetPack(関連パッケージ)のインストール
引き続き、関連パッケージ(Jetson Runtime Components)をインストールしますが、その前に以下の手順を実施します。
・エッジデバイスのNW接続設定
いったん、エッジデバイス側の電源を入れ直し、OSを起動します。
(この手順を踏まないと、次のSTEPに進めません)
ターミナルを開き、USBインターフェースのIPを付与します。
↓VM(192.168.55.10)からJetsonOrinNano(192.168.55.2)へpingが通ることを確認
Wifiに接続し、インターネットに接続可能な状態にします。
(この時点からインターネットに接続性がないとエラーになります)
・インストールの実行
SDK Manager側で接続先の情報を指定し、CONTINUEボタンを選択します。
インストールを再開します。
・STEP4:インストール結果の確認
インストールの結果を確認します。
エラーが表示された場合は、コンソール画面のタブを選択して、エラーの内容を確認してみてください。
特に、JetsonOrinNano側でインターネット接続できないとエラーになります。
⑤初期設定
・エッジデバイスに接続
インストールが完了したら、SSH接続可能な状態になっているはずですので、ターミナルソフトでSSH接続します。
・OSアップデートと必要なパッケージのインストール
$sudo apt-get update
$sudo apt-get upgrade
$sudo apt install nodejs npm
$sudo apt install python3-pip
・JupyterLabのセットアップ
$sudo pip3 install jupyter jupyterlab
$jupyter notebook –generate-config
$sudo vi /home/takeo/.jupyter/jupyter_notebook_config.py
→以下のパラメータを編集
c.NotebookApp.allow_origin = ‘*’
c.NotebookApp.ip = ‘0.0.0.0’
c.NotebookApp.open_browser = False
c.ServerApp.notebook_dir = ‘/home’
・JupyterLabのパスワードの設定
$ jupyter notebook password
・JupyterLabの起動
$ jupyter lab &
⑥動作確認
・Jetson inferenceのダウンロード
$ git clone https://github.com/dusty-nv/jetson-inference.git
・JupyterLabで動作確認
ブラウザを開き、JupyterLabにログインします。
Notebookを作成し、サンプルのPythonコードを用いて、AIモデルが動作することを確認します。
初期セットアップの基本的な流れは以上となります。
5.課題
これまでの検証によりJetsonの基本的なAIモデルを動かすまで出来るようになりました。
次のステップはJetRacerによる自動運転システムの構築と検証になります。
しかし実は現時点でJetRacerのNotebookを動かすことが出来ていないため、解決方法を調査中です。
Notebookを実行すると、以下画面の通りにエラーが表示されます。
JetRacerの公式情報によると、元からJetson Nano用(JetPack 4.*)に提供されているようで、それ以上のバージョンと互換性がある記載はありません。
もしかしたらJetson Orin Nano(JetPack 5.*)には対応していないのでは?との疑いがあります。
しかし検索してみるとJetson Orin NanoでJetRacerを動かしている旨の記事も散見されるため、何か有効な解決方法があると信じています。
6.まとめ
今回はエッジコンピューティングシリーズの第2話として、Jetson Orin Nano開発者キットの初期セットアップ手順とポイントを解説させていただきました。
第3話ではJetRacerを検証してみた結果を共有できればと思います。
将来的なイメージとしては、JetRacerの仕組みを応用して車とは別の媒体に適用したり、データ分析基盤と連携させていきたいです。
そして、学習の効率と精度をあげるために独自の工夫ができないか、検証を進めていこうと考えています。