こちらの記事について、内容・翻訳・視点・長さなど、皆様のご意見をお送りください。今後の記事製作の参考にしたいと思います。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
こちらの記事の感想をお聞かせください。
Jetson AIコースと認定プログラムのセットアップと導入。
今年の1月、提供されているサンプルを実行する前に、CUDAやJetsonのソフトウェアスタックを紹介する、Jetson Nanoのハンズオン記事を執筆しました。また、その後の投稿では、2GBモデルのJetson Nanoを紹介し、オリジナルの4GBモデルやRaspberry Pi 4、Coralプラットフォームと比較しました。
Jetson Nano 2GBモデルの登場により、CUDAプラットフォームによりアクセスしやすくなっただけでなく、構造化されたトレーニングや、認定プログラムが用意されました。この記事では、この新型ボードのセットアップと、最新のサンプルの実行方法について解説していきます。その後、トレーニングと認定プログラムについても見ていきましょう。
ハードウェアのセットアップ
Jetson NanoやAI全般における主要なターゲットはコンピュータビジョン分野です。このため、Jetson AI Fundamentalsコースを修了するには、Jetson Nano開発者キット(4GB版 (199-9831) または2GB版 (204-9968) )だけでなくカメラが必要となりますが、特に驚くことではないでしょう。CSI-2インターフェイスを使用したRaspberry Pi Camera v2 (913-2664) か、Logitech C270 USBウェブカメラをお勧めします。また、USB-C電源も必要にです。
初期設定には、USBキーボードとマウス、HDMIモニタを使用しました。設定が完了したら、SSHを使用してネットワーク経由で接続し、画面(X11)をリモートでワークステーションに転送することもできます。
ソフトウェアのセットアップ
Jetson Nano用のLinuxオペレーティングシステムは、Ubuntuディストリビューションをベースにしており、NVIDIA Jetpack SDKによって事前に機能が追加されています。Getting Started Guideは、オリジナルのJetson Nano 4GB用のものと2GB用のもの2種類が用意され、対応するSDカードイメージのダウンロードが可能になっています。2GB用のものは、メモリの低さに合わせてより軽量なデスクトップ環境が使用できるようになっています。
OSイメージファイルをダウンロードしたら、Raspberry Pi用のRaspbian OSイメージと同じ手順で、Micro SDカードに書き出すこと可能です。Linuxでは、次のコマンドで書き込み可能です。
$ sudo dd if=sd-blob.img of=/dev/sda bs=1M
重要: データが消えてしまう可能性があるため、上記の文字列をコピーしてそのまま実行するのではなく、Micro SDカードに対応する正しい「of=」パラメータに書き換えてください。
Jetson NanoモジュールにMicroSDカードを挿入し、電源を入れると、少し待った後にグラフィカルな設定ユーティリティが起動しました。ここでは、使用許諾契約に同意し、キーボードとユーザーアカウントの設定、パーティションサイズの設定など、いくつかの基本設定を行う必要がありました。この基本設定が終わると、再起動し、ログインできるようになり、以下のコマンドで最新バージョンのパッケージにアップグレード可能です。
$ sudo apt update
$ sudo apt dist-upgrade
Getting Started Guideには、「ヘッドレスモード」で初期設定を完了する方法も記載されています。このモードでは、HDMIモニタなどが使用できない際に、USB接続を使用し、シリアルターミナルセッション用のUARTを通して設定を進めることが可能です。
Jetson Nano 開発者キットユーザーガイドでは、モジュールやキャリアボードのハードウェア情報、JetPack SDKコンポーネントの概要や、その他細かい部分についてのリンクが記載されています。
次のステップ
Getting Started Guideの最終章では、追加の説明やチュートリアル、コースへのリンクに加え、Wiki、フォーラムといったコミュニティリソースへのリンクも記載されています。追加のハードウェアを接続したい場合は、前述のユーザーガイドから、キャリアボードのピン配置を参照してください。I2C、SPI、GPIO経由で、様々な周辺機器を接続することが可能です。
Dockerコンテナの使用方法や、別のWindowsコンピュータからJetsonのGUIアプリケーションを使用するのに便利なVNCのセットアップ方法、Bluetoothオーディオデバイスの接続方法といった、様々なガイドが用意されています。NVIDIA社は、AIやデータサイエンス向けのHPCソフトウェアを最適化するためだけではなく、Dockerコンテナとしてパッケージし、使いやすくするためにも多くの投資をしてきました。NGCカタログでは、Dockerレジストリとして統合され、オンラインで検索できるような、GPU最適化ソフトウェアハブを提供しています。
前回の記事「NVIDIA Jetson Nanoのハンズオン」では、Jetson Nanoを始める際の定番である「Hello AI World」を紹介しました。これは、GittHubリポジトリのクローン後、画像の分類やオブジェクトの位置決め等のために、事前に学習済みのニューラルネットワークモデルを実行します。PythonまたはC++で書かれた推論アプリの例や、転送学習と再学習を行う例も提供されています。
1月にJetson Nano 4GBについて執筆したとき、「Getting Started with AI on Jetson Nano」というコースも存在していました。この時はまだv1で、現在はv2もに置き換わっています。また、このコースはJetson AI Fundamentalsコースの最初の段階であり、2つのNVIDIA認定トラックの基礎となるものです。
Jetson AI Fundamentals
Jetson AI Fundamentalsコースへの登録のは非常に簡単です。まず、NVIDIAアカウントが必要で、まだアカウントをお持ちでない場合は、登録が1ステップとして含まれています。コースのランディングページには前提条件が詳細に記載されており、Jetson NanoでAIを始めるために、コースタブへと誘導されます。
コースタブでは、概要を説明しているウェルカムページへのリンクがあり、以下の手順を学ぶことができると記載されています。
- Set up your Jetson Nano Developer Kit and camera to run this course(コースを進めるために、Jetson Nano開発者キットとカメラをセットアップ)
- Collect varied data for image classification projects(画像分類プロジェクト用のデータを収集)
- Train neural network models for classification(分類用にニューラルネットワークモデルを学習させる)
- Annotate image data for regression(回帰のために画像データへのアノテーション)
- Train neural network models for regression to localize features(回帰のためにニューラルネットワークモデルを学習して特徴を限定)
- Run inference on a live camera feed with your trained models(学習させたモデルでライブカメラ映像の推論を実行)
コースを進めていく上での注意ですが、ブラウザウィンドウが2つ必要になります。そのうち1つはコースページを表示するもので、ガイド付きの学習体験を提供してくれます。もう1つは、Jetson Nanoと接続するJupyterLabインターフェイス用に使用します。
Jupyter notebookをよく知らない方のために説明すると、これは、コードやテキスト、数学的処理、グラフ、メディアすべてを含むことができる、入出力セルを備えたJSON形式のドキュメントのことです。また、JupyterLabは、Jupyter notebookを使って作業するための、Webベースのインタラクティブな開発環境です。これらを組み合わせることで、科学計算のための豊富な機能を持つ環境が提供され、アプリケーションの作成と共有が容易になります。
ウェルカムページに続いて、Setup Your Jetson Nanoでは、先ほど説明したような、基本的なハードウェアとソフトウェアのセットアップ方法を紹介しています。次に、スワップサイズを増やす方法(SDカードを「仮想RAM」として使う方法)についての説明があります。これは初期設定時、十分に割り当てらてなかった場合に必要です。特に2GBボードでは重要な項目になります。
Setup Your Jetson Nanoの3ページ目では、Jetson Nanoをヘッドレスモードで使用するとの説明があり、加えて、JupyterLabを使用できるDockerコンテナとコースで使用するノートブックの起動方法の説明があります。
続いて、もう一方のブラウザにJupyterLabを読み込めば、コースのセットアップが完了します。
Setup Your Jetson Nanoが終わると、次のようなコースが続きます。
- Image Classification(画像分類)
- Image Regression(画像回帰)
- Conclusion(まとめ)
- Feedback(フィードバック)
このコースの画像分類パートでは、「私の顔は喜んでいる?悲しんでいる?」や「指は何本立っている?」などの、簡単な視覚的質問に答えられるAIアプリケーションを構築していきます。つまり、画像の入力を離散的な出力(クラス)にマッピングするということです。一方、画像回帰では、画像の入力ピクセルを連続的な出力にマッピングします。例えば、顔のさまざまな特徴(鼻など)をXY座標で定義することや、ロボット工学でのライントレースなどが挙げられます。
さて、ここからは画像の分類について見ていきましょう。
充実したAI学習教材
コース教材はAIとディープラーニングの入門として、1950年代までAIの歴史を遡るところから始まります。また、上の画像を使い、ディープラーニングモデルが重み、学習、そして最終的に推論へとどのような手順で機能していくのか、説明しています。
次に、畳み込みニューラルネットワークが紹介され、入力層、特徴点抽出、分類を行う出力層などの概念について説明されます。その後、ResNet-18と残差ネットワークが、転送学習とともに紹介されます。要所要所で、概念の理解に役立つ図が示されます。
ここまでは理論を読み解くだけでしたが、ここからは実際に手を動かしていきます。このコースでは、ResNet-18モデルを構成する18つの層のうち最後のニューラルネットワーク層を変更する方法が説明されます。ここで提供されるモデルは、ImageNet 2012というデータセット内の1,000クラスを認識するように学習されていますが、出力するクラスが3つとなるように修正していきます。これによって、3つのクラスを認識するためにネットワークを学習させる必要がありますが、ほとんどのオブジェクトに共通する特徴を認識するよう学習されているため、既存の学習結果を再利用可能です。
画像分類セクションの上部には、上のような説明動画が埋め込まれています。
コースのノートでは、ノートブックのコードブロックを順番に実行するように指示があり、それぞれに説明が付けられています。実行するには、セルを選択し、「Run」→「Run Selected Cells」を選択するか、Shift + Enterによって実行可能です。
上の画像のように、最初のコードブロックを実行すると、lsコマンドの出力結果が表示されました。しかし、カメラを開く2つ目のコードブロックを実行すると、何も出力されず、「カーネル」が動作し続けました。ノートブックには、カメラのインスタンスが一度に1つしか実行できないという警告が表示されています。そういった場合は一度、「Kernel」メニュー、また右クリックメニューからカーネルをシャットダウン可能です。
このノートブックでは、アプリケーションの構築やタスク・ウィジェットの作成、ネットワークモデルの読み込み、トレーニングとその評価について、段階的に教えてくれます。最終的には、手の合図や、親指を立てたり下げたりすることの意味を理解できるアプリケーションを作れるに違いありません。これらの手順を一つ一つ詳しく説明しても良いのですが、さらに詳しく知りたい方は実際に自分で手を動かしてみることをお勧めします!
Jetson AI Fundamentalsには、Getting Started with AIに加えて、以下の2パートがあります。
- JetBotを使ったコース。自身でJetson Nanoロボットを製作し、ソフトウェアを設定、ディープラーニングを用いて衝突を回避しながら、道路に沿って走行するロボットを作ります。
- Hello AI World。これは、NVIDIA Jetson Nanoのハンズオン記事で触れたものです。
認定資格
Jetson AI Fundamentalsコースでは、Jetson AI認定資格の基礎となる部分を提供します。これが完了したら、Jetson AI Specialistになるための次のステップは、理解度示すプロジェクトを製作することです。例には、「独自のデータセットを収集して、特定のアプリケーション用の新しいDNNモデルを学習させる、JetBotに新しい自律モードを追加する、AIを使用したスマートホーム・IoTデバイス作成する」といったものが提案されています。
評価基準は次のように記載されています。
- AI (5点) - このプロジェクトは、ディープラーニング、機械学習、コンピュータビジョン等を有意義な方法で使用し、AIを用いたアプリケーション作成に関する基本的な理解があることを示しています。ここでは、Jetson上でのAIソリューションの有効性、技術的な複雑性、パフォーマンスなどが考慮されます。
- インパクト・オリジナリティ(5点) - プロジェクトのコンセプトが斬新で、自分自身や社会が直面する課題や問題に対処したり、解決するためにAIをを活用しているかどうかを考慮します。また、そのアイデアや作品は独創的であるか、派生的なものであるのかといった点も考慮されます。
- 再現性(5点) - 他の人がプロジェクトを構築して使用する際に必要な方法や、コード、リソースがすべてリポジトリに含まれており、従うことで簡単に実行できるかどうか考慮します。
- プレゼンテーションとドキュメント(5点) - 動画では、プロジェクトのさまざまな側面を効果的に実演し、説明しています。また、リポジトリには、プロジェクトの構築と実行に必要なすべての手順を、図と画像とともに文書化する明確で完全なReadmeがあります。また、教育者は、自身の指導能力を強調するために、動画内で口頭説明のプレゼンテーションを行う必要があります。
一方、Jetson AI Ambassadorの認定資格については、教育者やインストラクターを対象としており、面接試験が追加で存在し、また、ある程度の教育・トレーニング経験が必須条件になっています。
まとめ
JetPack SDKやJetson Nano用のターンキーイメージでは、一般的なフレームワークを使用してCUDAアクセラレーションによるコンピューティングを可能にする、設定済みのソフトウェアスタックを使用することで、時間をかけずに実行が可能です。これに加え、Jetson AIトレーニングと認定資格用のJetson Dockerコンテナを含む、NVIDIA社提供のDockerコンテナカタログによって、さらに利便性が向上しています。また、JupyterLabによる、機能が豊富で使いやすい環境も提供されています。
コメント